Class: RubyEventStore::InMemoryRepository
- Inherits:
-
Object
- Object
- RubyEventStore::InMemoryRepository
- Defined in:
- lib/ruby_event_store/in_memory_repository.rb
Instance Method Summary collapse
- #append_to_stream(events, stream_name, expected_version) ⇒ Object
- #delete_stream(stream_name) ⇒ Object
- #get_all_streams ⇒ Object
- #has_event?(event_id) ⇒ Boolean
-
#initialize ⇒ 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 ⇒ InMemoryRepository
Returns a new instance of InMemoryRepository.
6 7 8 9 10 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 6 def initialize @all = Array.new @streams = Hash.new @mutex = Mutex.new end |
Instance Method Details
#append_to_stream(events, stream_name, expected_version) ⇒ Object
12 13 14 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 12 def append_to_stream(events, stream_name, expected_version) add_to_stream(events, expected_version, stream_name, true) end |
#delete_stream(stream_name) ⇒ Object
21 22 23 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 21 def delete_stream(stream_name) @streams.delete(stream_name) end |
#get_all_streams ⇒ Object
63 64 65 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 63 def get_all_streams [Stream.new("all")] + @streams.keys.map { |name| Stream.new(name) } end |
#has_event?(event_id) ⇒ Boolean
25 26 27 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 25 def has_event?(event_id) @all.any?{ |item| item.event_id.eql?(event_id) } end |
#last_stream_event(stream_name) ⇒ Object
29 30 31 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 29 def last_stream_event(stream_name) read_stream_events_forward(stream_name).last end |
#link_to_stream(event_ids, stream_name, expected_version) ⇒ Object
16 17 18 19 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 16 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
55 56 57 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 55 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
51 52 53 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 51 def read_all_streams_forward(start_event_id, count) read_batch(@all, start_event_id, count) end |
#read_event(event_id) ⇒ Object
59 60 61 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 59 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
38 39 40 41 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 38 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
33 34 35 36 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 33 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
47 48 49 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 47 def read_stream_events_backward(stream_name) read_stream_events_forward(stream_name).reverse end |
#read_stream_events_forward(stream_name) ⇒ Object
43 44 45 |
# File 'lib/ruby_event_store/in_memory_repository.rb', line 43 def read_stream_events_forward(stream_name) @streams[stream_name] || Array.new end |