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

[](name)
Alias for: by_name
[]=(name, event_store)
Alias for: add
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