Module: MessageStore::Write

Included in:
Controls::Write::Example
Defined in:
lib/message_store/write.rb

Defined Under Namespace

Modules: Build, Call, Configure

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(cls) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/message_store/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

Instance Method Details

#call(message_data, stream_name, expected_version: nil) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/message_store/write.rb', line 42

def call(message_data, stream_name, expected_version: nil)
  logger.trace(tag: :write) { "Writing message data (Stream Name: #{stream_name}, Expected Version: #{expected_version.inspect})" }
  logger.trace(tags: [:data, :message_data, :write]) { message_data.pretty_inspect }

  batch = Array(message_data)

  set_ids(batch)

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

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

  position
end

#set_ids(batch) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/message_store/write.rb', line 58

def set_ids(batch)
  batch.each do |message_data|
    if message_data.id.nil?
      message_data.id = identifier.get
    end
  end
end