Class: Decider::EventSourcing
- Inherits:
-
Object
- Object
- Decider::EventSourcing
- Defined in:
- lib/decider/event_sourcing.rb
Instance Method Summary collapse
- #call(command, stream_name:) ⇒ Object
-
#initialize(decider:, event_store:) ⇒ EventSourcing
constructor
A new instance of EventSourcing.
Constructor Details
#initialize(decider:, event_store:) ⇒ EventSourcing
Returns a new instance of EventSourcing.
5 6 7 8 |
# File 'lib/decider/event_sourcing.rb', line 5 def initialize(decider:, event_store:) @decider = decider @event_store = event_store end |
Instance Method Details
#call(command, stream_name:) ⇒ Object
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/decider/event_sourcing.rb', line 10 def call(command, stream_name:) events = event_store.read.stream(stream_name) state = events.reduce(decider.initial_state, &decider.method(:evolve)) new_events = decider.decide(command, state) event_store.append(new_events, stream_name: stream_name, expected_version: events.count) [new_events, events.count + new_events.count] end |