class EventSource::Postgres::Get::Last
Public Class Methods
build(session: nil)
click to toggle source
# File lib/event_source/postgres/get/last.rb, line 9 def self.build(session: nil) new.tap do |instance| instance.configure(session: session) end end
call(stream_name, session: nil)
click to toggle source
# File lib/event_source/postgres/get/last.rb, line 25 def self.call(stream_name, session: nil) instance = build(session: session) instance.(stream_name) end
configure(receiver, attr_name: nil, session: nil)
click to toggle source
# File lib/event_source/postgres/get/last.rb, line 15 def self.configure(receiver, attr_name: nil, session: nil) attr_name ||= :get_last instance = build(session: session) receiver.public_send "#{attr_name}=", instance end
Public Instance Methods
__convert(records)
click to toggle source
# File lib/event_source/postgres/get/last.rb, line 73 def __convert(records) logger.trace { "Converting records to event data (Records Count: #{records.ntuples})" } events = records.map do |record| record['data'] = Deserialize.data(record['data']) record['metadata'] = Deserialize.metadata(record['metadata']) record['time'] = Time.utc_coerced(record['time']) EventData::Read.build record break end logger.debug { "Converted records to event data (Event Data Count: #{events.length})" } events end
call(stream_name)
click to toggle source
# File lib/event_source/postgres/get/last.rb, line 30 def call(stream_name) logger.trace { "Getting last event data (Stream Name: #{stream_name})" } record = get_record(stream_name) return nil if record.nil? event = convert(record) logger.info { "Finished getting event data (Stream Name: #{stream_name})" } logger.info(tags: [:data, :event_data]) { event.pretty_inspect } event end
configure(session: nil)
click to toggle source
# File lib/event_source/postgres/get/last.rb, line 21 def configure(session: nil) Session.configure self, session: session end
convert(record)
click to toggle source
# File lib/event_source/postgres/get/last.rb, line 59 def convert(record) logger.trace { "Converting record to event data" } record['data'] = Deserialize.data(record['data']) record['metadata'] = Deserialize.metadata(record['metadata']) record['time'] = Time.utc_coerced(record['time']) event = EventData::Read.build(record) logger.debug { "Converted record to event data" } event end
get_record(stream_name)
click to toggle source
# File lib/event_source/postgres/get/last.rb, line 45 def get_record(stream_name) logger.trace { "Getting last record (Stream: #{stream_name})" } select_statement = SelectStatement.build(stream_name) records = session.execute(select_statement.sql) logger.debug { "Finished getting record (Stream: #{stream_name})" } return nil if records.ntuples == 0 records[0] end