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
open?()
Alias for: connected?
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