Class: EventSource::Postgres::Session
- Inherits:
-
Object
- Object
- EventSource::Postgres::Session
- Includes:
- Log::Dependency
- Defined in:
- lib/event_source/postgres/session.rb
Defined Under Namespace
Modules: LogText
Instance Attribute Summary collapse
-
#connection ⇒ Object
Returns the value of attribute connection.
Class Method Summary collapse
- .build(settings: nil) ⇒ Object
- .build_connection(instance) ⇒ Object
- .configure(receiver, session: nil, attr_name: nil) ⇒ Object
- .logger ⇒ Object
- .settings ⇒ Object
Instance Method Summary collapse
- #close ⇒ Object
- #connect ⇒ Object
- #connected? ⇒ Boolean (also: #open?)
- #execute(statement, params = nil) ⇒ Object
- #reset ⇒ Object
- #settings ⇒ Object
- #transaction(&blk) ⇒ Object
Instance Attribute Details
#connection ⇒ Object
Returns the value of attribute connection.
14 15 16 |
# File 'lib/event_source/postgres/session.rb', line 14 def connection @connection end |
Class Method Details
.build(settings: nil) ⇒ Object
16 17 18 19 20 21 |
# 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) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# 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) ⇒ Object
23 24 25 26 27 28 29 |
# 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 ⇒ Object
111 112 113 |
# File 'lib/event_source/postgres/session.rb', line 111 def self.logger @logger ||= Log.get self end |
.settings ⇒ Object
6 7 8 |
# File 'lib/event_source/postgres/session.rb', line 6 def self.settings Settings.names end |
Instance Method Details
#close ⇒ Object
65 66 67 68 |
# File 'lib/event_source/postgres/session.rb', line 65 def close connection.close connection = nil end |
#connect ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# 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? ⇒ Boolean Also known as: open?
60 61 62 |
# File 'lib/event_source/postgres/session.rb', line 60 def connected? !connection.nil? && connection.status == PG::CONNECTION_OK end |
#execute(statement, params = nil) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# 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 ⇒ Object
70 71 72 |
# File 'lib/event_source/postgres/session.rb', line 70 def reset connection.reset end |
#settings ⇒ Object
74 75 76 77 78 79 80 81 |
# 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) ⇒ Object
103 104 105 106 107 108 109 |
# File 'lib/event_source/postgres/session.rb', line 103 def transaction(&blk) unless connected? connect end connection.transaction(&blk) end |