Class: RubyEventStore::InMemoryRepository

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

Instance Method Summary collapse

Constructor Details

#initialize(mapper: Mappers::Default.new) ⇒ InMemoryRepository

Returns a new instance of InMemoryRepository.



7
8
9
10
11
12
# File 'lib/ruby_event_store/in_memory_repository.rb', line 7

def initialize(mapper: Mappers::Default.new)
  @all = Array.new
  @streams = Hash.new
  @mutex = Mutex.new
  @mapper = mapper
end

Instance Method Details

#add_metadata(event, key, value) ⇒ Object



69
70
71
# File 'lib/ruby_event_store/in_memory_repository.rb', line 69

def (event, key, value)
  @mapper.(event, key, value)
end

#append_to_stream(events, stream_name, expected_version) ⇒ Object



14
15
16
# File 'lib/ruby_event_store/in_memory_repository.rb', line 14

def append_to_stream(events, stream_name, expected_version)
  add_to_stream(events, expected_version, stream_name, true)
end

#delete_stream(stream_name) ⇒ Object



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

def delete_stream(stream_name)
  @streams.delete(stream_name)
end

#get_all_streamsObject



65
66
67
# File 'lib/ruby_event_store/in_memory_repository.rb', line 65

def get_all_streams
  [Stream.new("all")] + @streams.keys.map { |name| Stream.new(name) }
end

#has_event?(event_id) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#last_stream_event(stream_name) ⇒ Object



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

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


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

def link_to_stream(event_ids, stream_name, expected_version)
  events = normalize_to_array(event_ids).map{|eid| read_event(eid) }
  add_to_stream(events, expected_version, stream_name, nil)
end

#read_all_streams_backward(start_event_id, count) ⇒ Object



57
58
59
# File 'lib/ruby_event_store/in_memory_repository.rb', line 57

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



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

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

#read_event(event_id) ⇒ Object



61
62
63
# File 'lib/ruby_event_store/in_memory_repository.rb', line 61

def read_event(event_id)
  @all.find { |e| event_id.eql?(e.event_id) } or raise EventNotFound.new(event_id)
end

#read_events_backward(stream_name, start_event_id, count) ⇒ Object



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

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



35
36
37
38
# File 'lib/ruby_event_store/in_memory_repository.rb', line 35

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



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

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

#read_stream_events_forward(stream_name) ⇒ Object



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

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