class PgDice::QueryExecutor

Wrapper class around pg_connection to reset connection on PG errors

Attributes

logger[R]

Public Class Methods

new(logger:, connection_supplier:) click to toggle source
# File lib/pgdice/query_executor.rb, line 9
def initialize(logger:, connection_supplier:)
  @logger = logger
  @connection_supplier = connection_supplier
end

Public Instance Methods

call(query) click to toggle source
# File lib/pgdice/query_executor.rb, line 14
def call(query)
  @connection_supplier.call.exec(query)
rescue PG::Error => e
  logger.error { "Caught error: #{e}. Going to reset connection and try again" }
  @connection_supplier.call.reset
  @connection_supplier.call.exec(query)
end