Class: Synapse::EventSourcing::ConflictResolvingUnitOfWorkListener

Inherits:
UnitOfWork::UnitOfWorkListener show all
Defined in:
lib/synapse/event_sourcing/conflict_resolver.rb

Overview

Unit of work listener that detects if there is a conflict before an aggregate is committed If there is a potential conflict, a conflict resolver determines how to resolve the conflict.

Instance Method Summary collapse

Methods inherited from UnitOfWork::UnitOfWorkListener

#after_commit, #on_cleanup, #on_event_registered, #on_prepare_transaction_commit, #on_rollback, #on_start

Constructor Details

#initialize(aggregate, unseen_events, conflict_resolver) ⇒ undefined

Parameters:



38
39
40
41
42
# File 'lib/synapse/event_sourcing/conflict_resolver.rb', line 38

def initialize(aggregate, unseen_events, conflict_resolver)
  @aggregate = aggregate
  @unseen_events = unseen_events
  @conflict_resolver = conflict_resolver
end

Instance Method Details

#on_prepare_commit(unit, aggregates, events) ⇒ undefined

Parameters:

Returns:

  • (undefined)


48
49
50
51
52
# File 'lib/synapse/event_sourcing/conflict_resolver.rb', line 48

def on_prepare_commit(unit, aggregates, events)
  if potential_conflicts?
    @conflict_resolver.resolve_conflicts @aggregate.uncommitted_events.to_a, @unseen_events
  end
end