module EventSource::Write

Public Class Methods

included(cls) click to toggle source
# File lib/event_source/write.rb, line 3
def self.included(cls)
  cls.class_exec do
    include Log::Dependency

    cls.extend Build
    cls.extend Call
    cls.extend Configure

    dependency :identifier, Identifier::UUID::Random

    abstract :configure
    abstract :write
  end
end

Public Instance Methods

call(event_data, stream_name, expected_version: nil) click to toggle source
# File lib/event_source/write.rb, line 42
def call(event_data, stream_name, expected_version: nil)
  logger.trace { "Writing event data (Stream Name: #{stream_name}, Expected Version: #{expected_version.inspect})" }
  logger.trace(tags: [:data, :event_data]) { event_data.pretty_inspect }

  batch = Array(event_data)

  set_ids(batch)

  position = write(batch, stream_name, expected_version: expected_version)

  logger.info { "Wrote event data (Stream Name: #{stream_name}, Expected Version: #{expected_version.inspect})" }
  logger.info(tags: [:data, :event_data]) { event_data.pretty_inspect }

  position
end
set_ids(batch) click to toggle source
# File lib/event_source/write.rb, line 58
def set_ids(batch)
  batch.each do |event_data|
    if event_data.id.nil?
      event_data.id = identifier.get
    end
  end
end