Class: RailsEventStore::JSONClient

Inherits:
Client
  • Object
show all
Defined in:
lib/rails_event_store/json_client.rb

Instance Attribute Summary

Attributes inherited from Client

#request_metadata

Instance Method Summary collapse

Methods inherited from Client

#with_request_metadata

Constructor Details

#initialize(mapper: RubyEventStore::Mappers::BatchMapper.new( RubyEventStore::Mappers::PipelineMapper.new( RubyEventStore::Mappers::Pipeline.new( { Symbol => { serializer: ->(v) { v.to_s }, deserializer: ->(v) { v.to_sym }, }, Time => { serializer: ->(v) { v.iso8601(RubyEventStore::TIMESTAMP_PRECISION) }, deserializer: ->(v) { Time.iso8601(v) }, }, ActiveSupport::TimeWithZone => { serializer: ->(v) { v.iso8601(RubyEventStore::TIMESTAMP_PRECISION) }, deserializer: ->(v) { Time.iso8601(v).in_time_zone }, stored_type: ->(*) { "ActiveSupport::TimeWithZone" }, }, Date => { serializer: ->(v) { v.iso8601 }, deserializer: ->(v) { Date.iso8601(v) }, }, DateTime => { serializer: ->(v) { v.iso8601 }, deserializer: ->(v) { DateTime.iso8601(v) }, }, BigDecimal => { serializer: ->(v) { v.to_s }, deserializer: ->(v) { BigDecimal(v) }, }, }.merge( if defined?(OpenStruct) { OpenStruct => { serializer: ->(v) { v.to_h }, deserializer: ->(v) { OpenStruct.new(v) } } } else {} end, ) .reduce(RubyEventStore::Mappers::Transformation::PreserveTypes.new) do |preserve_types, (klass, options)| preserve_types.register(klass, **options) end, RubyEventStore::Mappers::Transformation::SymbolizeMetadataKeys.new, ), ), ), repository: RubyEventStore::ActiveRecord::EventRepository.new(serializer: JSON), subscriptions: nil, dispatcher: nil, message_broker: nil, clock: default_clock, correlation_id_generator: default_correlation_id_generator, request_metadata: default_request_metadata) ⇒ JSONClient

Returns a new instance of JSONClient.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/rails_event_store/json_client.rb', line 7

def initialize(
  mapper: RubyEventStore::Mappers::BatchMapper.new(
    RubyEventStore::Mappers::PipelineMapper.new(
      RubyEventStore::Mappers::Pipeline.new(
        {
          Symbol => {
            serializer: ->(v) { v.to_s },
            deserializer: ->(v) { v.to_sym },
          },
          Time => {
            serializer: ->(v) { v.iso8601(RubyEventStore::TIMESTAMP_PRECISION) },
            deserializer: ->(v) { Time.iso8601(v) },
          },
          ActiveSupport::TimeWithZone => {
            serializer: ->(v) { v.iso8601(RubyEventStore::TIMESTAMP_PRECISION) },
            deserializer: ->(v) { Time.iso8601(v).in_time_zone },
            stored_type: ->(*) { "ActiveSupport::TimeWithZone" },
          },
          Date => {
            serializer: ->(v) { v.iso8601 },
            deserializer: ->(v) { Date.iso8601(v) },
          },
          DateTime => {
            serializer: ->(v) { v.iso8601 },
            deserializer: ->(v) { DateTime.iso8601(v) },
          },
          BigDecimal => {
            serializer: ->(v) { v.to_s },
            deserializer: ->(v) { BigDecimal(v) },
          },
        }.merge(
          if defined?(OpenStruct)
            { OpenStruct => { serializer: ->(v) { v.to_h }, deserializer: ->(v) { OpenStruct.new(v) } } }
          else
            {}
          end,
        )
          .reduce(RubyEventStore::Mappers::Transformation::PreserveTypes.new) do |preserve_types, (klass, options)|
            preserve_types.register(klass, **options)
          end,
        RubyEventStore::Mappers::Transformation::SymbolizeMetadataKeys.new,
      ),
    ),
  ),
  repository: RubyEventStore::ActiveRecord::EventRepository.new(serializer: JSON),
  subscriptions: nil,
  dispatcher: nil,
  message_broker: nil,
  clock: default_clock,
  correlation_id_generator: default_correlation_id_generator,
  request_metadata: 
)
  super
end