Module: EventSourcery::EventStore::EachByRange

Included in:
Memory::EventStore
Defined in:
lib/event_sourcery/event_store/each_by_range.rb

Instance Method Summary collapse

Instance Method Details

#each_by_range(from_event_id, to_event_id, event_types: nil) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/event_sourcery/event_store/each_by_range.rb', line 4

def each_by_range(from_event_id, to_event_id, event_types: nil)
  caught_up = false
  no_events_left = false
  event_id = from_event_id
  begin
    events = get_next_from(event_id, event_types: event_types)
    no_events_left = true if events.empty?
    events.each do |event|
      yield event
      if event.id == to_event_id
        caught_up = true
        break
      end
    end
    unless no_events_left
      event_id = events.last.id + 1
    end
  end while !caught_up && !no_events_left
end