Module: EventSource::Write

Included in:
Controls::Write::Example
Defined in:
lib/event_source/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/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

Instance Method Details

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



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 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) ⇒ Object



58
59
60
61
62
63
64
# 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