ruby_event_store 1.3.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.mutant.yml +1 -0
  3. data/Gemfile +2 -4
  4. data/Gemfile.lock +118 -0
  5. data/Makefile +13 -3
  6. data/lib/ruby_event_store/broker.rb +3 -3
  7. data/lib/ruby_event_store/client.rb +47 -23
  8. data/lib/ruby_event_store/composed_dispatcher.rb +2 -2
  9. data/lib/ruby_event_store/constants.rb +1 -0
  10. data/lib/ruby_event_store/errors.rb +0 -1
  11. data/lib/ruby_event_store/event.rb +8 -1
  12. data/lib/ruby_event_store/immediate_async_dispatcher.rb +2 -2
  13. data/lib/ruby_event_store/in_memory_repository.rb +98 -59
  14. data/lib/ruby_event_store/instrumented_dispatcher.rb +2 -2
  15. data/lib/ruby_event_store/mappers/default.rb +28 -6
  16. data/lib/ruby_event_store/mappers/deprecated_wrapper.rb +33 -0
  17. data/lib/ruby_event_store/mappers/encryption_mapper.rb +1 -4
  18. data/lib/ruby_event_store/mappers/instrumented_mapper.rb +8 -4
  19. data/lib/ruby_event_store/mappers/json_mapper.rb +2 -4
  20. data/lib/ruby_event_store/mappers/pipeline.rb +26 -5
  21. data/lib/ruby_event_store/mappers/pipeline_mapper.rb +6 -2
  22. data/lib/ruby_event_store/mappers/transformation/domain_event.rb +16 -8
  23. data/lib/ruby_event_store/mappers/transformation/encryption.rb +20 -12
  24. data/lib/ruby_event_store/mappers/transformation/event_class_remapper.rb +11 -4
  25. data/lib/ruby_event_store/mappers/transformation/serialization.rb +16 -14
  26. data/lib/ruby_event_store/mappers/transformation/stringify_metadata_keys.rb +12 -7
  27. data/lib/ruby_event_store/mappers/transformation/symbolize_metadata_keys.rb +12 -7
  28. data/lib/ruby_event_store/null.rb +13 -0
  29. data/lib/ruby_event_store/projection.rb +2 -13
  30. data/lib/ruby_event_store/record.rb +68 -0
  31. data/lib/ruby_event_store/serialized_record.rb +23 -4
  32. data/lib/ruby_event_store/spec/broker_lint.rb +9 -9
  33. data/lib/ruby_event_store/spec/event_repository_lint.rb +200 -36
  34. data/lib/ruby_event_store/spec/mapper_lint.rb +6 -6
  35. data/lib/ruby_event_store/spec/subscriptions_lint.rb +6 -0
  36. data/lib/ruby_event_store/specification.rb +100 -7
  37. data/lib/ruby_event_store/specification_reader.rb +2 -2
  38. data/lib/ruby_event_store/specification_result.rb +86 -2
  39. data/lib/ruby_event_store/version.rb +1 -1
  40. data/lib/ruby_event_store.rb +4 -7
  41. data/ruby_event_store.gemspec +0 -2
  42. metadata +8 -9
  43. data/lib/ruby_event_store/mappers/protobuf.rb +0 -24
  44. data/lib/ruby_event_store/mappers/transformation/item.rb +0 -56
  45. data/lib/ruby_event_store/mappers/transformation/proto_event.rb +0 -17
  46. data/lib/ruby_event_store/mappers/transformation/protobuf_encoder.rb +0 -30
  47. data/lib/ruby_event_store/mappers/transformation/protobuf_nested_struct_metadata.rb +0 -30
  48. data/lib/ruby_event_store/mappers/transformation/serialized_record.rb +0 -27
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyEventStore
4
- class Proto < RubyEventStore::Event
5
- def event_type
6
- data.class.descriptor.name
7
- end
8
- end
9
-
10
- module Mappers
11
- class Protobuf < PipelineMapper
12
- def initialize(events_class_remapping: {})
13
- super(Pipeline.new(
14
- to_domain_event: Transformation::ProtoEvent.new,
15
- transformations: [
16
- Transformation::ProtobufEncoder.new,
17
- Transformation::EventClassRemapper.new(events_class_remapping),
18
- Transformation::ProtobufNestedStructMetadata.new,
19
- ]
20
- ))
21
- end
22
- end
23
- end
24
- end
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'forwardable'
4
-
5
- module RubyEventStore
6
- module Mappers
7
- module Transformation
8
- class Item
9
- include Enumerable
10
- extend Forwardable
11
-
12
- def initialize(h)
13
- @h = {}
14
- h.each do |k, v|
15
- @h[k] = (v)
16
- end
17
- end
18
-
19
- def event_id
20
- fetch(:event_id)
21
- end
22
-
23
- def metadata
24
- fetch(:metadata)
25
- end
26
-
27
- def data
28
- fetch(:data)
29
- end
30
-
31
- def event_type
32
- fetch(:event_type)
33
- end
34
-
35
- def ==(other_event)
36
- other_event.instance_of?(self.class) &&
37
- other_event.to_h.eql?(to_h)
38
- end
39
- alias_method :eql?, :==
40
-
41
- def merge(args)
42
- Item.new(@h.merge(args))
43
- end
44
-
45
- def to_h
46
- @h.dup
47
- end
48
-
49
- SAFE_HASH_METHODS = [:[], :fetch]
50
- delegate SAFE_HASH_METHODS => :@h
51
-
52
- private_constant :SAFE_HASH_METHODS
53
- end
54
- end
55
- end
56
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyEventStore
4
- module Mappers
5
- module Transformation
6
- class ProtoEvent < DomainEvent
7
- def load(item)
8
- Proto.new(
9
- event_id: item.event_id,
10
- data: item.data,
11
- metadata: item.metadata
12
- )
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyEventStore
4
- module Mappers
5
- module Transformation
6
- class ProtobufEncoder
7
- def dump(item)
8
- item.merge(data: encode_data(item.data))
9
- end
10
-
11
- def load(item)
12
- item.merge(data: load_data(item.event_type, item.data))
13
- end
14
-
15
- private
16
- def encode_data(data)
17
- begin
18
- data.class.encode(data)
19
- rescue NoMethodError
20
- raise ProtobufEncodingFailed
21
- end
22
- end
23
-
24
- def load_data(event_type, protobuf_data)
25
- Google::Protobuf::DescriptorPool.generated_pool.lookup(event_type).msgclass.decode(protobuf_data)
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyEventStore
4
- module Mappers
5
- module Transformation
6
- class ProtobufNestedStructMetadata
7
- def initialize
8
- require_optional_dependency
9
- end
10
-
11
- def dump(item)
12
- metadata = ProtobufNestedStruct::HashMapStringValue.dump(item.metadata)
13
- item.merge(metadata: metadata)
14
- end
15
-
16
- def load(item)
17
- metadata = ProtobufNestedStruct::HashMapStringValue.load(item.metadata)
18
- symbolize = SymbolizeMetadataKeys.new
19
- symbolize.load(item.merge(metadata: metadata))
20
- end
21
-
22
- def require_optional_dependency
23
- require 'protobuf_nested_struct'
24
- rescue LoadError
25
- raise LoadError, "cannot load such file -- protobuf_nested_struct. Add protobuf_nested_struct gem to Gemfile"
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyEventStore
4
- module Mappers
5
- module Transformation
6
- class SerializedRecord
7
- def dump(item)
8
- RubyEventStore::SerializedRecord.new(
9
- event_id: item.event_id,
10
- metadata: item.metadata,
11
- data: item.data,
12
- event_type: item.event_type
13
- )
14
- end
15
-
16
- def load(serialized_record)
17
- Item.new(
18
- event_id: serialized_record.event_id,
19
- metadata: serialized_record.metadata,
20
- data: serialized_record.data,
21
- event_type: serialized_record.event_type
22
- )
23
- end
24
- end
25
- end
26
- end
27
- end