Class: RubyEventStore::Mappers::Transformation::PreserveTypes
- Inherits:
-
Object
- Object
- RubyEventStore::Mappers::Transformation::PreserveTypes
- Defined in:
- lib/ruby_event_store/mappers/transformation/preserve_types.rb
Instance Method Summary collapse
- #dump(record) ⇒ Object
-
#initialize(type_resolver: ->(type) { type.to_s }) ⇒ PreserveTypes
constructor
A new instance of PreserveTypes.
- #load(record) ⇒ Object
- #register(type, serializer:, deserializer:, stored_type: DEFAULT_STORE_TYPE) ⇒ Object
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., 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., 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 |