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.
- 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
|