class Sandthorn::EventStores
Attributes
store_map[R]
Public Class Methods
new(stores = nil)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 10 def initialize(stores = nil) @store_map = Hash.new add_initial(stores) end
Public Instance Methods
add(name, event_store)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 15 def add(name, event_store) store_map[name] = event_store end
Also aliased as: []=
add_many(stores)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 20 def add_many(stores) stores.each_pair do |name, store| add(name, store) end end
by_name(name)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 26 def by_name(name) store_map[name] || default_store end
Also aliased as: []
default_store()
click to toggle source
# File lib/sandthorn/event_stores.rb, line 31 def default_store store_map.fetch(:default) end
default_store=(store)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 35 def default_store=(store) store_map[:default] = store end
map_types(hash)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 43 def map_types(hash) hash.each_pair do |event_store, aggregate_types| map_aggregate_types_to_event_store(aggregate_types, event_store) end end
stores()
click to toggle source
# File lib/sandthorn/event_stores.rb, line 39 def stores store_map.values end
Private Instance Methods
add_initial(store)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 53 def add_initial(store) if is_event_store?(store) self.default_store = store elsif is_many_event_stores?(store) add_many(store) end end
is_event_store?(store)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 65 def is_event_store?(store) store.respond_to?(:get_events) end
is_many_event_stores?(store)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 61 def is_many_event_stores?(store) store.respond_to?(:each_pair) end
map_aggregate_type_to_event_store(aggregate_type, event_store)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 69 def map_aggregate_type_to_event_store(aggregate_type, event_store) aggregate_type.event_store(event_store) end
map_aggregate_types_to_event_store(aggregate_types = [], event_store)
click to toggle source
# File lib/sandthorn/event_stores.rb, line 73 def map_aggregate_types_to_event_store(aggregate_types = [], event_store) aggregate_types.each do |aggregate_type| map_aggregate_type_to_event_store(aggregate_type, event_store) end end