module Synapse::EventSourcing::Member
Base mixin for a member of an aggregate which has its state mutated by events that are applied to the aggregate
@see AggregateRoot
@see Entity
Protected Instance Methods
child_entities()
click to toggle source
Returns an array of the child entities of this aggregate member @return [Array]
# File lib/synapse/event_sourcing/member.rb, line 49 def child_entities entities = Array.new self.class.child_entities.each do |field| value = instance_variable_get '@' + field if value.is_a? Entity entities.push value # Hashes elsif value.is_a? Hash entities.concat filter_entities value.each_key entities.concat filter_entities value.each_value # Sets, arrays elsif value.is_a? Enumerable entities.concat filter_entities value end end entities end
handle_event(event)
click to toggle source
If the event is relative to this member, its parameters will be used to change the state of this member
@param [EventMessage] event @return [undefined]
# File lib/synapse/event_sourcing/member.rb, line 77 def handle_event(event) mapping = self.event_mapper.mapping_for event.payload_type if mapping mapping.invoke self, event.payload, event end end
Private Instance Methods
filter_entities(entities)
click to toggle source
@param [Array] entities @return [Array]
# File lib/synapse/event_sourcing/member.rb, line 88 def filter_entities(entities) entities.select do |entity| entity.is_a? Member end end