Class: Synapse::Configuration::EventSourcingRepositoryDefinitionBuilder

Inherits:
LockingRepositoryDefinitionBuilder show all
Defined in:
lib/synapse/configuration/component/event_sourcing/repository.rb

Overview

Definition builder used to create event sourced aggregate repositories

Examples:

The minimum possible effort to build a event sourcing repository

es_repository :orderbook_repository do
  use_aggregate_type TradeEngine::OrderBook
end

Use an event sourcing repository with snapshotting capability

aggregate_snapshot_taker

interval_snapshot_policy do
  use_threshold 50
end

es_repository :orderbook_repository do
  use_aggregate_type TradeEngine::OrderBook
end

Instance Attribute Summary

Attributes inherited from DefinitionBuilder

#id

Instance Method Summary collapse

Methods inherited from LockingRepositoryDefinitionBuilder

#use_event_bus, #use_lock_manager, #use_no_locking, #use_optimistic_locking, #use_pessimistic_locking, #use_unit_provider

Methods inherited from DefinitionBuilder

#anonymous, #as_prototype, #as_singleton, build, #build_composite, #build_definition, #identified_by, #initialize, #register_definition, #tag, #use_factory, #use_instance

Constructor Details

This class inherits a constructor from Synapse::Configuration::DefinitionBuilder

Instance Method Details

#use_aggregate_factory(aggregate_factory) ⇒ undefined

Parameters:

  • aggregate_factory (Symbol)

Returns:

  • (undefined)


41
42
43
# File 'lib/synapse/configuration/component/event_sourcing/repository.rb', line 41

def use_aggregate_factory(aggregate_factory)
  @aggregate_factory = aggregate_factory
end

#use_aggregate_type(aggregate_type) ⇒ undefined

Convenience method that defines an aggregate factory capable of creating aggregates of the given type

Definitions have to be created by aggregate factories so that aggregate factories can be registered to an aggregate snapshot taker.

Parameters:

  • aggregate_type (Class)

Returns:

  • (undefined)


29
30
31
32
33
34
35
36
37
# File 'lib/synapse/configuration/component/event_sourcing/repository.rb', line 29

def use_aggregate_type(aggregate_type)
  @aggregate_factory = build_composite do
    anonymous
    tag :aggregate_factory
    use_factory do
      EventSourcing::GenericAggregateFactory.new aggregate_type
    end
  end
end

#use_conflict_resolver(conflict_resolver) ⇒ undefined

Parameters:

  • conflict_resolver (Symbol)

Returns:

  • (undefined)


47
48
49
# File 'lib/synapse/configuration/component/event_sourcing/repository.rb', line 47

def use_conflict_resolver(conflict_resolver)
  @conflict_resolver = conflict_resolver
end

#use_event_store(event_store) ⇒ undefined

Parameters:

  • event_store (Symbol)

Returns:

  • (undefined)


53
54
55
# File 'lib/synapse/configuration/component/event_sourcing/repository.rb', line 53

def use_event_store(event_store)
  @event_store = event_store
end

#use_snapshot_policy(snapshot_policy) ⇒ undefined

Parameters:

  • snapshot_policy (Symbol)

Returns:

  • (undefined)


59
60
61
# File 'lib/synapse/configuration/component/event_sourcing/repository.rb', line 59

def use_snapshot_policy(snapshot_policy)
  @snapshot_policy = snapshot_policy
end

#use_snapshot_taker(snapshot_taker) ⇒ undefined

Parameters:

  • snapshot_taker (Symbol)

Returns:

  • (undefined)


65
66
67
# File 'lib/synapse/configuration/component/event_sourcing/repository.rb', line 65

def use_snapshot_taker(snapshot_taker)
  @snapshot_taker = snapshot_taker
end