ruby_event_store 1.3.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.mutant.yml +1 -0
- data/Gemfile +2 -4
- data/Gemfile.lock +118 -0
- data/Makefile +13 -3
- data/lib/ruby_event_store/broker.rb +3 -3
- data/lib/ruby_event_store/client.rb +47 -23
- data/lib/ruby_event_store/composed_dispatcher.rb +2 -2
- data/lib/ruby_event_store/constants.rb +1 -0
- data/lib/ruby_event_store/errors.rb +0 -1
- data/lib/ruby_event_store/event.rb +8 -1
- data/lib/ruby_event_store/immediate_async_dispatcher.rb +2 -2
- data/lib/ruby_event_store/in_memory_repository.rb +98 -59
- data/lib/ruby_event_store/instrumented_dispatcher.rb +2 -2
- data/lib/ruby_event_store/mappers/default.rb +28 -6
- data/lib/ruby_event_store/mappers/deprecated_wrapper.rb +33 -0
- data/lib/ruby_event_store/mappers/encryption_mapper.rb +1 -4
- data/lib/ruby_event_store/mappers/instrumented_mapper.rb +8 -4
- data/lib/ruby_event_store/mappers/json_mapper.rb +2 -4
- data/lib/ruby_event_store/mappers/pipeline.rb +26 -5
- data/lib/ruby_event_store/mappers/pipeline_mapper.rb +6 -2
- data/lib/ruby_event_store/mappers/transformation/domain_event.rb +16 -8
- data/lib/ruby_event_store/mappers/transformation/encryption.rb +20 -12
- data/lib/ruby_event_store/mappers/transformation/event_class_remapper.rb +11 -4
- data/lib/ruby_event_store/mappers/transformation/serialization.rb +16 -14
- data/lib/ruby_event_store/mappers/transformation/stringify_metadata_keys.rb +12 -7
- data/lib/ruby_event_store/mappers/transformation/symbolize_metadata_keys.rb +12 -7
- data/lib/ruby_event_store/null.rb +13 -0
- data/lib/ruby_event_store/projection.rb +2 -13
- data/lib/ruby_event_store/record.rb +68 -0
- data/lib/ruby_event_store/serialized_record.rb +23 -4
- data/lib/ruby_event_store/spec/broker_lint.rb +9 -9
- data/lib/ruby_event_store/spec/event_repository_lint.rb +200 -36
- data/lib/ruby_event_store/spec/mapper_lint.rb +6 -6
- data/lib/ruby_event_store/spec/subscriptions_lint.rb +6 -0
- data/lib/ruby_event_store/specification.rb +100 -7
- data/lib/ruby_event_store/specification_reader.rb +2 -2
- data/lib/ruby_event_store/specification_result.rb +86 -2
- data/lib/ruby_event_store/version.rb +1 -1
- data/lib/ruby_event_store.rb +4 -7
- data/ruby_event_store.gemspec +0 -2
- metadata +8 -9
- data/lib/ruby_event_store/mappers/protobuf.rb +0 -24
- data/lib/ruby_event_store/mappers/transformation/item.rb +0 -56
- data/lib/ruby_event_store/mappers/transformation/proto_event.rb +0 -17
- data/lib/ruby_event_store/mappers/transformation/protobuf_encoder.rb +0 -30
- data/lib/ruby_event_store/mappers/transformation/protobuf_nested_struct_metadata.rb +0 -30
- 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
|