Class: Pgtk::Pool::Txn

Inherits:
Object
  • Object
show all
Defined in:
lib/pgtk/pool.rb

Overview

A temporary class to execute a single SQL request.

Instance Method Summary collapse

Constructor Details

#initialize(conn, log) ⇒ Txn

Returns a new instance of Txn.



140
141
142
143
# File 'lib/pgtk/pool.rb', line 140

def initialize(conn, log)
  @conn = conn
  @log = log
end

Instance Method Details

#exec(query, args = [], result = 0) ⇒ Object



145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# File 'lib/pgtk/pool.rb', line 145

def exec(query, args = [], result = 0)
  start = Time.now
  sql = query.is_a?(Array) ? query.join(' ') : query
  begin
    out = @conn.exec_params(sql, args, result) do |res|
      if block_given?
        yield res
      else
        res.each.to_a
      end
    end
  rescue StandardError => e
    @log.error("#{sql}: #{e.message}")
    raise e
  end
  lag = Time.now - start
  if lag < 1
    @log.debug("#{sql}: #{(lag * 1000).round}ms / #{@conn.object_id}")
  else
    @log.info("#{sql}: #{format('%.02f', lag)}s")
  end
  out
end