class EventStoreClient::Mapper::Default

Attributes

serializer[R]

Public Class Methods

new(serializer: Serializer::Json) click to toggle source
# File lib/event_store_client/mapper/default.rb, line 39
def initialize(serializer: Serializer::Json)
  @serializer = serializer
end

Public Instance Methods

deserialize(event, **) click to toggle source
# File lib/event_store_client/mapper/default.rb, line 15
def deserialize(event, **)
  metadata = serializer.deserialize(event.metadata)
  data = serializer.deserialize(event.data)

  event_class =
    begin
      Object.const_get(event.type)
    rescue NameError
      EventStoreClient::DeserializedEvent
    end
  event_class.new(
    skip_validation: true,
    id: event.id,
    type: event.type,
    title: event.title,
    data: data,
    metadata: metadata
  )
end
serialize(event) click to toggle source
# File lib/event_store_client/mapper/default.rb, line 6
def serialize(event)
  Event.new(
    id: event.respond_to?(:id) ? event.id : nil,
    type: (event.respond_to?(:type) ? event.type : nil) || event.class.to_s,
    data: serializer.serialize(event.data),
    metadata: serializer.serialize(event.metadata)
  )
end