class MessageStore::Postgres::Get::Stream::Last

Public Class Methods

sql_command(stream_name) click to toggle source
# File lib/message_store/postgres/get/stream/last.rb, line 47
def self.sql_command(stream_name)
  parameters = '$1::varchar'

  "SELECT * FROM get_last_stream_message(#{parameters});"
end

Public Instance Methods

call(stream_name) click to toggle source
# File lib/message_store/postgres/get/stream/last.rb, line 14
def call(stream_name)
  logger.trace(tag: :get) { "Getting last message data (Stream Name: #{stream_name})" }

  result = get_result(stream_name)

  return nil if result.nil?

  message_data = convert(result[0])

  logger.info(tag: :get) { "Finished getting message data (Stream Name: #{stream_name})" }
  logger.info(tags: [:data, :message_data]) { message_data.pretty_inspect }

  message_data
end
configure(session: nil) click to toggle source
# File lib/message_store/postgres/get/stream/last.rb, line 10
def configure(session: nil)
  Session.configure(self, session: session)
end
convert(record) click to toggle source
# File lib/message_store/postgres/get/stream/last.rb, line 53
def convert(record)
  logger.trace(tag: :get) { "Converting record to message data" }

  message_data = Get.message_data(record)

  logger.debug(tag: :get) { "Converted record to message data" }

  message_data
end
get_result(stream_name) click to toggle source
# File lib/message_store/postgres/get/stream/last.rb, line 29
def get_result(stream_name)
  logger.trace(tag: :get) { "Getting last record (Stream: #{stream_name})" }

  sql_command = self.class.sql_command(stream_name)

  parameter_values = [
    stream_name
  ]

  result = session.execute(sql_command, parameter_values)

  logger.debug(tag: :get) { "Finished getting result (Count: #{result.ntuples}, Stream: #{stream_name}" }

  return nil if result.ntuples == 0

  result
end