Sha256: a5af2792160d89397d416003d3ec4a7b07acf39b752a3145e3b818f6b0e617fb

Contents?: true

Size: 1.75 KB

Versions: 10

Compression:

Stored size: 1.75 KB

Contents

module MessageStore
  module Postgres
    module Get
      class Stream
        class Last
          include MessageStore::Get::Stream::Last

          dependency :session, Session

          def configure(session: nil)
            Session.configure(self, session: session)
          end

          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

          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

          def self.sql_command(stream_name)
            parameters = '$1::varchar'

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

          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
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
evt-message_store-postgres-2.4.3.0 lib/message_store/postgres/get/stream/last.rb
evt-message_store-postgres-2.4.2.0 lib/message_store/postgres/get/stream/last.rb
evt-message_store-postgres-2.4.1.0 lib/message_store/postgres/get/stream/last.rb
evt-message_store-postgres-2.4.0.5 lib/message_store/postgres/get/stream/last.rb
evt-message_store-postgres-2.4.0.4 lib/message_store/postgres/get/stream/last.rb
evt-message_store-postgres-2.4.0.3 lib/message_store/postgres/get/stream/last.rb
evt-message_store-postgres-2.4.0.2 lib/message_store/postgres/get/stream/last.rb
evt-message_store-postgres-2.4.0.1 lib/message_store/postgres/get/stream/last.rb
evt-message_store-postgres-2.4.0.0 lib/message_store/postgres/get/stream/last.rb
evt-message_store-postgres-2.3.0.0 lib/message_store/postgres/get/stream/last.rb