Class: RubyEventStore::InMemoryRepository

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_event_store/in_memory_repository.rb

Instance Method Summary collapse

Constructor Details

#initializeInMemoryRepository

Returns a new instance of InMemoryRepository.



5
6
7
8
# File 'lib/ruby_event_store/in_memory_repository.rb', line 5

def initialize
  @all = Array.new
  @streams = Hash.new
end

Instance Method Details

#create(event, stream_name) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/ruby_event_store/in_memory_repository.rb', line 10

def create(event, stream_name)
  stream = read_stream_events_forward(stream_name)
  all.push(event)
  stream.push(event)
  streams[stream_name] = stream
  event
end

#delete_stream(stream_name) ⇒ Object



18
19
20
21
22
# File 'lib/ruby_event_store/in_memory_repository.rb', line 18

def delete_stream(stream_name)
  removed = read_stream_events_forward(stream_name).map(&:event_id)
  streams.delete(stream_name)
  all.delete_if{|ev| removed.include?(ev.event_id)}
end

#has_event?(event_id) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/ruby_event_store/in_memory_repository.rb', line 24

def has_event?(event_id)
  all.any?{ |item| item.event_id.eql?(event_id) }
end

#last_stream_event(stream_name) ⇒ Object



28
29
30
# File 'lib/ruby_event_store/in_memory_repository.rb', line 28

def last_stream_event(stream_name)
  read_stream_events_forward(stream_name).last
end

#read_all_streams_backward(start_event_id, count) ⇒ Object



54
55
56
# File 'lib/ruby_event_store/in_memory_repository.rb', line 54

def read_all_streams_backward(start_event_id, count)
  read_batch(all.reverse, start_event_id, count)
end

#read_all_streams_forward(start_event_id, count) ⇒ Object



50
51
52
# File 'lib/ruby_event_store/in_memory_repository.rb', line 50

def read_all_streams_forward(start_event_id, count)
  read_batch(all, start_event_id, count)
end

#read_events_backward(stream_name, start_event_id, count) ⇒ Object



37
38
39
40
# File 'lib/ruby_event_store/in_memory_repository.rb', line 37

def read_events_backward(stream_name, start_event_id, count)
  source = read_stream_events_backward(stream_name)
  read_batch(source, start_event_id, count)
end

#read_events_forward(stream_name, start_event_id, count) ⇒ Object



32
33
34
35
# File 'lib/ruby_event_store/in_memory_repository.rb', line 32

def read_events_forward(stream_name, start_event_id, count)
  source = read_stream_events_forward(stream_name)
  read_batch(source, start_event_id, count)
end

#read_stream_events_backward(stream_name) ⇒ Object



46
47
48
# File 'lib/ruby_event_store/in_memory_repository.rb', line 46

def read_stream_events_backward(stream_name)
  read_stream_events_forward(stream_name).reverse
end

#read_stream_events_forward(stream_name) ⇒ Object



42
43
44
# File 'lib/ruby_event_store/in_memory_repository.rb', line 42

def read_stream_events_forward(stream_name)
  streams[stream_name] || Array.new
end