Class: RubyEventStore::Mappers::Transformation::PreserveTypes

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_event_store/mappers/transformation/preserve_types.rb

Instance Method Summary collapse

Constructor Details

#initialize(type_resolver: ->(type) { type.to_s }) ⇒ PreserveTypes

Returns a new instance of PreserveTypes.



7
8
9
# File 'lib/ruby_event_store/mappers/transformation/preserve_types.rb', line 7

def initialize(type_resolver: ->(type) { type.to_s })
  @registry = Registry.new(type_resolver)
end

Instance Method Details

#dump(record) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/ruby_event_store/mappers/transformation/preserve_types.rb', line 68

def dump(record)
  data = transform(record.data)
   = transform(record.)
  if (.respond_to?(:[]=))
    [:types] = { data: store_type(record.data), metadata: store_type(record.) }
  end

  Record.new(
    event_id: record.event_id,
    event_type: record.event_type,
    data: data,
    metadata: ,
    timestamp: record.timestamp,
    valid_at: record.valid_at
  )
end

#load(record) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/ruby_event_store/mappers/transformation/preserve_types.rb', line 85

def load(record)
  types =
    begin
      record..delete(:types)
    rescue StandardError
      nil
    end
  data_types = types&.fetch(:data, nil)
   = types&.fetch(:metadata, nil)
  data = restore_type(record.data, data_types)
   = restore_type(record., )

  Record.new(
    event_id: record.event_id,
    event_type: record.event_type,
    data: data,
    metadata: ,
    timestamp: record.timestamp,
    valid_at: record.valid_at
  )
end

#register(type, serializer:, deserializer:, stored_type: DEFAULT_STORE_TYPE) ⇒ Object



63
64
65
66
# File 'lib/ruby_event_store/mappers/transformation/preserve_types.rb', line 63

def register(type, serializer:, deserializer:, stored_type: DEFAULT_STORE_TYPE)
  registry.add(type, serializer, deserializer, stored_type)
  self
end