module EntityProjection
Public Class Methods
included(cls)
click to toggle source
# File lib/entity_projection/entity_projection.rb, line 2 def self.included(cls) cls.class_exec do include Initializer include Virtual include Log::Dependency extend Build extend Call extend Info extend ApplyMacro extend EventRegistry extend Register extend EntityNameMacro virtual :configure initializer :entity end end
Public Instance Methods
apply_event(event)
click to toggle source
# File lib/entity_projection/entity_projection.rb, line 134 def apply_event(event) logger.trace(tag: :apply) { "Applying event (Event class: #{event.class.name})" } logger.trace(tags: [:data, :message]) { event.pretty_inspect } handler = self.class.handler(event) unless handler.nil? public_send(handler, event) else if respond_to?(:apply) apply(event) end end logger.info(tag: :apply) { "Applied event (Event class: #{event.class.name})" } logger.trace(tags: [:data, :message]) { event.pretty_inspect } event end
apply_event_data(event_data)
click to toggle source
# File lib/entity_projection/entity_projection.rb, line 154 def apply_event_data(event_data) logger.trace(tag: :apply) { "Applying event data (Type: #{event_data.type})" } logger.trace(tags: [:data, :message_data]) { event_data.pretty_inspect } res = nil handler = self.class.handler(event_data) unless handler.nil? event_name = Messaging::Message::Info.canonize_name(event_data.type) event_class = self.class.event_registry.get(event_name) res = Messaging::Message::Import.(event_data, event_class) public_send(handler, res) else if respond_to?(:apply) res = apply(event_data) end end logger.info(tag: :apply) { "Applied event data (Type: #{event_data.type})" } logger.info(tags: [:data, :message_data]) { event_data.pretty_inspect } res end
call(event_or_event_data)
click to toggle source
# File lib/entity_projection/entity_projection.rb, line 126 def call(event_or_event_data) if event_or_event_data.is_a?(Messaging::Message) apply_event(event_or_event_data) else apply_event_data(event_or_event_data) end end