Class: QueryKit::Adapters::PostgreSQLAdapter

Inherits:
Adapter
  • Object
show all
Defined in:
lib/querykit/adapters/postgresql_adapter.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ PostgreSQLAdapter

Returns a new instance of PostgreSQLAdapter.



8
9
10
11
# File 'lib/querykit/adapters/postgresql_adapter.rb', line 8

def initialize(config)
  require 'pg'
  @conn = PG.connect(config)
end

Instance Method Details

#affected_rowsObject



29
30
31
# File 'lib/querykit/adapters/postgresql_adapter.rb', line 29

def affected_rows
  @last_result ? @last_result.cmd_tuples : 0
end

#begin_transactionObject



33
34
35
# File 'lib/querykit/adapters/postgresql_adapter.rb', line 33

def begin_transaction
  @conn.exec("BEGIN")
end

#closeObject



45
46
47
# File 'lib/querykit/adapters/postgresql_adapter.rb', line 45

def close
  @conn.close
end

#commitObject



37
38
39
# File 'lib/querykit/adapters/postgresql_adapter.rb', line 37

def commit
  @conn.exec("COMMIT")
end

#execute(sql, bindings = []) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/querykit/adapters/postgresql_adapter.rb', line 13

def execute(sql, bindings = [])
  # Convert ? placeholders to $1, $2, etc.
  placeholder_count = 0
  sql = sql.gsub('?') { |_| "$#{placeholder_count += 1}" }
  
  @last_result = @conn.exec_params(sql, bindings)
  @last_result.map { |row| row }
end

#last_insert_idObject



22
23
24
25
26
27
# File 'lib/querykit/adapters/postgresql_adapter.rb', line 22

def last_insert_id
  result = @conn.exec("SELECT lastval()")
  result[0]['lastval'].to_i
rescue PG::Error
  nil
end

#rollbackObject



41
42
43
# File 'lib/querykit/adapters/postgresql_adapter.rb', line 41

def rollback
  @conn.exec("ROLLBACK")
end