Class: RubyEventStore::InMemoryRepository
- Inherits:
-
Object
- Object
- RubyEventStore::InMemoryRepository
- Defined in:
- lib/ruby_event_store/in_memory_repository.rb
Instance Method Summary collapse
- #add_metadata(event, key, value) ⇒ Object
- #append_to_stream(events, stream_name, expected_version) ⇒ Object
- #delete_stream(stream_name) ⇒ Object
- #get_all_streams ⇒ Object
- #has_event?(event_id) ⇒ Boolean
-
#initialize(mapper: Mappers::Default.new) ⇒ InMemoryRepository
constructor
A new instance of InMemoryRepository.
- #last_stream_event(stream_name) ⇒ Object
- #link_to_stream(event_ids, stream_name, expected_version) ⇒ Object
- #read_all_streams_backward(start_event_id, count) ⇒ Object
- #read_all_streams_forward(start_event_id, count) ⇒ Object
- #read_event(event_id) ⇒ Object
- #read_events_backward(stream_name, start_event_id, count) ⇒ Object
- #read_events_forward(stream_name, start_event_id, count) ⇒ Object
- #read_stream_events_backward(stream_name) ⇒ Object
- #read_stream_events_forward(stream_name) ⇒ Object
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_streams ⇒ Object
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
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 |
#link_to_stream(event_ids, stream_name, expected_version) ⇒ Object
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 |