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
17
18
# File 'lib/message_store/write.rb', line 3

def self.included(cls)
  cls.class_exec do
    include Dependency
    include Virtual
    include Log::Dependency

    extend Build
    extend Call
    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 Also known as: write



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/message_store/write.rb', line 44

def call(message_data, stream_name, expected_version: nil)
  batch = Array(message_data)

  logger.trace(tag: :write) do
    message_types = batch.map {|message_data| message_data.type }.uniq.join(', ')
    "Writing message data (Types: #{message_types}, Stream Name: #{stream_name}, Expected Version: #{expected_version.inspect}, Number of Messages: #{batch.length})"
  end
  logger.trace(tags: [:data, :message_data]) { batch.pretty_inspect }

  set_ids(batch)

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

  logger.info(tag: :write) do
    message_types = batch.map {|message_data| message_data.type }.uniq.join(', ')
    "Wrote message data (Types: #{message_types}, Stream Name: #{stream_name}, Expected Version: #{expected_version.inspect}, Number of Messages: #{batch.length})"
  end
  logger.info(tags: [:data, :message_data]) { batch.pretty_inspect }

  position
end

#set_ids(batch) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/message_store/write.rb', line 67

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