class Synapse::Configuration::AggregateSnapshotTakerDefinitionBuilder

Definition builder used to create aggregate snapshot takers

@example The minimum possible effort to build an aggregate snapshot taker

snapshot_taker

@example Build an aggregate snapshot taker using an alternate event store and factory tag

snapshot_taker :alt_snapshot_taker do
  use_aggregate_factory_tag :alt_factory_tag
  use_event_store :alt_event_store
end

Public Instance Methods

use_aggregate_factory_tag(aggregate_factory_tag) click to toggle source

Changes the tag used to find aggregate factories necessary for creating aggregates so that a snapshot can be taken of their current state

@see EventSourcing::AggregateFactory @param [Symbol] aggregate_factory_tag @return [undefined]

# File lib/synapse/configuration/component/event_sourcing/snapshot/aggregate_taker.rb, line 20
def use_aggregate_factory_tag(aggregate_factory_tag)
  @aggregate_factory_tag = aggregate_factory_tag
end
use_event_store(event_store) click to toggle source

Changes the event store used to load and store aggregates

@see EventStore::SnapshotEventStore @param [Symbol] event_store @return [undefined]

# File lib/synapse/configuration/component/event_sourcing/snapshot/aggregate_taker.rb, line 29
def use_event_store(event_store)
  @event_store = event_store
end

Protected Instance Methods

populate_defaults() click to toggle source

@return [undefined]

# File lib/synapse/configuration/component/event_sourcing/snapshot/aggregate_taker.rb, line 36
def populate_defaults
  identified_by :snapshot_taker

  use_aggregate_factory_tag :aggregate_factory
  use_event_store :event_store

  use_factory do
    snapshot_taker = EventSourcing::AggregateSnapshotTaker.new
    snapshot_taker.event_store = resolve @event_store

    with_tagged @aggregate_factory_tag do |factory|
      snapshot_taker.register_factory factory
    end

    snapshot_taker
  end
end