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.



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_streamsObject



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

Returns:

  • (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


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