Method: EntityProjection#apply_event_data

Defined in:
lib/entity_projection/entity_projection.rb

#apply_event_data(event_data) ⇒ Object



154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# 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