File tree Expand file tree Collapse file tree 2 files changed +37
-2
lines changed
rails_application/lib/transformations Expand file tree Collapse file tree 2 files changed +37
-2
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ module Infra
22 class EventStore < SimpleDelegator
33 def self . main
44 require_relative "../../../rails_application/lib/transformations/refund_to_return_event_mapper" rescue nil
5+ require_relative "../../../rails_application/lib/transformations/symbolize_data_keys" rescue nil
56
67 begin
78 mapper = RubyEventStore ::Mappers ::PipelineMapper . new (
@@ -11,8 +12,8 @@ def self.main
1112 'Ordering::ItemAddedToRefund' => 'Ordering::ItemAddedToReturn' ,
1213 'Ordering::ItemRemovedFromRefund' => 'Ordering::ItemRemovedFromReturn'
1314 ) ,
14- RubyEventStore :: Mappers :: Transformation :: SymbolizeMetadataKeys . new ,
15- RubyEventStore ::Mappers ::Transformation ::PreserveTypes . new
15+ Transformations :: SymbolizeDataKeys . new ,
16+ RubyEventStore ::Mappers ::Transformation ::SymbolizeMetadataKeys . new
1617 )
1718 )
1819 client = RailsEventStore ::JSONClient . new ( mapper : mapper )
Original file line number Diff line number Diff line change 1+ module Transformations
2+ class SymbolizeDataKeys
3+ def dump ( record )
4+ record
5+ end
6+
7+ def load ( record )
8+ return record unless record . respond_to? ( :data )
9+
10+ symbolized_data = symbolize_keys ( record . data )
11+
12+ if record . respond_to? ( :dup )
13+ new_record = record . dup
14+ new_record . instance_variable_set ( :@data , symbolized_data ) if new_record . instance_variable_defined? ( :@data )
15+ new_record
16+ else
17+ record
18+ end
19+ end
20+
21+ private
22+
23+ def symbolize_keys ( hash )
24+ case hash
25+ when Hash
26+ hash . transform_keys ( &:to_sym ) . transform_values { |v | symbolize_keys ( v ) }
27+ when Array
28+ hash . map { |v | symbolize_keys ( v ) }
29+ else
30+ hash
31+ end
32+ end
33+ end
34+ end
You can’t perform that action at this time.
0 commit comments