Class: EventStoreClient::StoreAdapter::InMemory

Inherits:
Object
  • Object
show all
Defined in:
lib/event_store_client/store_adapter/in_memory.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#event_storeObject (readonly)

Returns the value of attribute event_store.



6
7
8
# File 'lib/event_store_client/store_adapter/in_memory.rb', line 6

def event_store
  @event_store
end

Instance Method Details

#append_to_stream(stream_name, events, expected_version: nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/event_store_client/store_adapter/in_memory.rb', line 8

def append_to_stream(stream_name, events, expected_version: nil)
  event_store[stream_name] = [] unless event_store.key?(stream_name)

  [events].flatten.each do |event|
    event_store[stream_name].unshift(
      'eventId' => event.id,
      'data' => event.data,
      'eventType' => event.type,
      'metadata' => event.,
      'positionEventNumber' => event_store[stream_name].length
    )
  end
end

#delete_stream(stream_name, hard_delete: false) ⇒ Object



22
23
24
# File 'lib/event_store_client/store_adapter/in_memory.rb', line 22

def delete_stream(stream_name, hard_delete: false)
  event_store.delete(stream_name)
end

#read_stream_backward(stream_name, start: 0, count: per_page) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/event_store_client/store_adapter/in_memory.rb', line 26

def read_stream_backward(stream_name, start: 0, count: per_page)
  return [] unless event_store.key?(stream_name)

  start = start == 0 ? event_store[stream_name].length - 1 : start
  last_index = start - count
  entries = event_store[stream_name].select do |event|
    event['positionEventNumber'] > last_index &&
      event['positionEventNumber'] <= start
  end
  {
    'entries' => entries,
    'links' => links(stream_name, last_index, 'next', entries, count)
  }
end

#read_stream_forward(stream_name, start: 0, count: per_page) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/event_store_client/store_adapter/in_memory.rb', line 41

def read_stream_forward(stream_name, start: 0, count: per_page)
  return [] unless event_store.key?(stream_name)

  last_index = start + count
  entries = event_store[stream_name].reverse.select do |event|
    event['positionEventNumber'] < last_index &&
      event['positionEventNumber'] >= start
  end
  {
    'entries' => entries,
    'links' => links(stream_name, last_index, 'previous', entries, count)
  }
end