class EventSource::Postgres::Session
Attributes
connection[RW]
Public Class Methods
build(settings: nil)
click to toggle source
# File lib/event_source/postgres/session.rb, line 16 def self.build(settings: nil) new.tap do |instance| settings ||= Settings.instance settings.set(instance) end end
build_connection(instance)
click to toggle source
# File lib/event_source/postgres/session.rb, line 48 def self.build_connection(instance) settings = instance.settings logger.trace { "Building new connection to database (Settings: #{LogText.settings(settings).inspect})" } connection = PG::Connection.open(settings) connection.type_map_for_results = PG::BasicTypeMapForResults.new(connection) logger.trace { "Built new connection to database (Settings: #{LogText.settings(settings).inspect})" } connection end
configure(receiver, session: nil, attr_name: nil)
click to toggle source
# File lib/event_source/postgres/session.rb, line 23 def self.configure(receiver, session: nil, attr_name: nil) attr_name ||= :session instance = session || build receiver.public_send "#{attr_name}=", instance instance end
logger()
click to toggle source
# File lib/event_source/postgres/session.rb, line 111 def self.logger @logger ||= Log.get self end
settings()
click to toggle source
# File lib/event_source/postgres/session.rb, line 6 def self.settings Settings.names end
Public Instance Methods
close()
click to toggle source
# File lib/event_source/postgres/session.rb, line 65 def close connection.close connection = nil end
connect()
click to toggle source
# File lib/event_source/postgres/session.rb, line 31 def connect logger.trace { "Connecting to database" } if connected? logger.debug { "Already connected. A new connection will not be built." } return end logger.debug { "Not connected. A new connection will be built." } connection = self.class.build_connection(self) self.connection = connection logger.debug { "Connected to database" } connection end
connected?()
click to toggle source
# File lib/event_source/postgres/session.rb, line 60 def connected? !connection.nil? && connection.status == PG::CONNECTION_OK end
Also aliased as: open?
execute(statement, params=nil)
click to toggle source
# File lib/event_source/postgres/session.rb, line 83 def execute(statement, params=nil) logger.trace { "Executing statement" } logger.trace(tag: :data) { statement } logger.trace(tag: :data) { params.pretty_inspect } unless connected? connect end if params.nil? connection.exec(statement).tap do logger.debug { "Executed statement" } end else connection.exec_params(statement, params).tap do logger.debug { "Executed statement with params" } end end end
reset()
click to toggle source
# File lib/event_source/postgres/session.rb, line 70 def reset connection.reset end
settings()
click to toggle source
# File lib/event_source/postgres/session.rb, line 74 def settings settings = {} self.class.settings.each do |s| val = public_send(s) settings[s] = val unless val.nil? end settings end
transaction(&blk)
click to toggle source
# File lib/event_source/postgres/session.rb, line 103 def transaction(&blk) unless connected? connect end connection.transaction(&blk) end