Sha256: 14901a5e1d66a6719431f45e5c534bf9cca3e53ad17e2b204589ed737520d651
Contents?: true
Size: 1.9 KB
Versions: 1
Compression:
Stored size: 1.9 KB
Contents
require "sandthorn/version" require "sandthorn/errors" require "sandthorn/aggregate_root" require "sandthorn/event_stores" require 'yaml' require 'securerandom' module Sandthorn class << self extend Forwardable def_delegators :configuration, :event_stores def default_event_store event_stores.default_store end def default_event_store=(store) event_stores.default_store = store end def configure yield(configuration) if block_given? end def configuration @configuration ||= Configuration.new end def generate_aggregate_id SecureRandom.uuid end def save_events aggregate_events, aggregate_id, aggregate_type event_store_for(aggregate_type).save_events aggregate_events, aggregate_id, *aggregate_type end def all aggregate_type event_store_for(aggregate_type).all(aggregate_type) end def find aggregate_id, aggregate_type event_store_for(aggregate_type).find(aggregate_id, aggregate_type) end def save_snapshot(aggregate) raise "Not Implemented" end def find_event_store(name) event_stores.by_name(name) end private def event_store_for(aggregate_type) event_store = event_stores.by_name(aggregate_type.event_store).tap do |store| yield(store) if block_given? end end def missing_key(key) raise ArgumentError, "missing keyword: #{key}" end class Configuration extend Forwardable def_delegators :default_store, :event_stores, :default_store= def initialize yield(self) if block_given? end def event_stores @event_stores ||= EventStores.new end def event_store=(store) @event_stores = EventStores.new(store) end def map_types= data @event_stores.map_types data end alias_method :event_stores=, :event_store= end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sandthorn-1.1.0 | lib/sandthorn.rb |