ruby_event_store 1.3.1 → 2.0.3
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/Gemfile +2 -4
- data/Gemfile.lock +121 -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 +1 -3
- metadata +7 -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
@@ -5,14 +5,48 @@ module RubyEventStore
|
|
5
5
|
def initialize(direction: :forward,
|
6
6
|
start: nil,
|
7
7
|
stop: nil,
|
8
|
+
older_than: nil,
|
9
|
+
older_than_or_equal: nil,
|
10
|
+
newer_than: nil,
|
11
|
+
newer_than_or_equal: nil,
|
12
|
+
time_sort_by: nil,
|
8
13
|
count: nil,
|
9
14
|
stream: Stream.new(GLOBAL_STREAM),
|
10
15
|
read_as: :all,
|
11
16
|
batch_size: Specification::DEFAULT_BATCH_SIZE,
|
12
17
|
with_ids: nil,
|
13
18
|
with_types: nil)
|
14
|
-
@attributes = Struct.new(
|
15
|
-
|
19
|
+
@attributes = Struct.new(
|
20
|
+
:direction,
|
21
|
+
:start,
|
22
|
+
:stop,
|
23
|
+
:older_than,
|
24
|
+
:older_than_or_equal,
|
25
|
+
:newer_than,
|
26
|
+
:newer_than_or_equal,
|
27
|
+
:time_sort_by,
|
28
|
+
:count,
|
29
|
+
:stream,
|
30
|
+
:read_as,
|
31
|
+
:batch_size,
|
32
|
+
:with_ids,
|
33
|
+
:with_types
|
34
|
+
).new(
|
35
|
+
direction,
|
36
|
+
start,
|
37
|
+
stop,
|
38
|
+
older_than,
|
39
|
+
older_than_or_equal,
|
40
|
+
newer_than,
|
41
|
+
newer_than_or_equal,
|
42
|
+
time_sort_by,
|
43
|
+
count,
|
44
|
+
stream,
|
45
|
+
read_as,
|
46
|
+
batch_size,
|
47
|
+
with_ids,
|
48
|
+
with_types
|
49
|
+
)
|
16
50
|
freeze
|
17
51
|
end
|
18
52
|
|
@@ -56,6 +90,46 @@ module RubyEventStore
|
|
56
90
|
attributes.stop
|
57
91
|
end
|
58
92
|
|
93
|
+
# Ending time.
|
94
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
95
|
+
#
|
96
|
+
# @return [Time]
|
97
|
+
def older_than
|
98
|
+
attributes.older_than
|
99
|
+
end
|
100
|
+
|
101
|
+
# Ending time.
|
102
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
103
|
+
#
|
104
|
+
# @return [Time]
|
105
|
+
def older_than_or_equal
|
106
|
+
attributes.older_than_or_equal
|
107
|
+
end
|
108
|
+
|
109
|
+
# Starting time.
|
110
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
111
|
+
#
|
112
|
+
# @return [Time]
|
113
|
+
def newer_than
|
114
|
+
attributes.newer_than
|
115
|
+
end
|
116
|
+
|
117
|
+
# Starting time.
|
118
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
119
|
+
#
|
120
|
+
# @return [Time]
|
121
|
+
def newer_than_or_equal
|
122
|
+
attributes.newer_than_or_equal
|
123
|
+
end
|
124
|
+
|
125
|
+
# Time sorting strategy. Nil when not specified.
|
126
|
+
# {http://railseventstore.org/docs/read/ Find out more}.
|
127
|
+
#
|
128
|
+
# @return [Symbol]
|
129
|
+
def time_sort_by
|
130
|
+
attributes.time_sort_by
|
131
|
+
end
|
132
|
+
|
59
133
|
# Read direction. True is reading forward
|
60
134
|
# {http://railseventstore.org/docs/read/ Find out more}.
|
61
135
|
#
|
@@ -179,6 +253,11 @@ module RubyEventStore
|
|
179
253
|
# * direction
|
180
254
|
# * start
|
181
255
|
# * stop
|
256
|
+
# * older_than
|
257
|
+
# * older_than_or_equal
|
258
|
+
# * newer_than
|
259
|
+
# * newer_than_or_equal
|
260
|
+
# * time_sort_by
|
182
261
|
# * count
|
183
262
|
# * stream
|
184
263
|
# * read_as
|
@@ -193,6 +272,11 @@ module RubyEventStore
|
|
193
272
|
get_direction,
|
194
273
|
start,
|
195
274
|
stop,
|
275
|
+
older_than,
|
276
|
+
older_than_or_equal,
|
277
|
+
newer_than,
|
278
|
+
newer_than_or_equal,
|
279
|
+
time_sort_by,
|
196
280
|
limit,
|
197
281
|
stream,
|
198
282
|
attributes.read_as,
|
data/lib/ruby_event_store.rb
CHANGED
@@ -15,30 +15,27 @@ require 'ruby_event_store/specification_reader'
|
|
15
15
|
require 'ruby_event_store/event'
|
16
16
|
require 'ruby_event_store/stream'
|
17
17
|
require 'ruby_event_store/expected_version'
|
18
|
+
require 'ruby_event_store/record'
|
18
19
|
require 'ruby_event_store/serialized_record'
|
20
|
+
require 'ruby_event_store/null'
|
19
21
|
require 'ruby_event_store/transform_keys'
|
20
22
|
require 'ruby_event_store/mappers/encryption_key'
|
21
23
|
require 'ruby_event_store/mappers/in_memory_encryption_key_repository'
|
22
24
|
require 'ruby_event_store/mappers/transformation/domain_event'
|
23
25
|
require 'ruby_event_store/mappers/transformation/encryption'
|
24
26
|
require 'ruby_event_store/mappers/transformation/event_class_remapper'
|
25
|
-
require 'ruby_event_store/mappers/transformation/item'
|
26
|
-
require 'ruby_event_store/mappers/transformation/proto_event'
|
27
|
-
require 'ruby_event_store/mappers/transformation/protobuf_encoder'
|
28
|
-
require 'ruby_event_store/mappers/transformation/protobuf_nested_struct_metadata'
|
29
|
-
require 'ruby_event_store/mappers/transformation/serialization'
|
30
|
-
require 'ruby_event_store/mappers/transformation/serialized_record'
|
31
27
|
require 'ruby_event_store/mappers/transformation/stringify_metadata_keys'
|
32
28
|
require 'ruby_event_store/mappers/transformation/symbolize_metadata_keys'
|
29
|
+
require 'ruby_event_store/mappers/transformation/serialization'
|
33
30
|
require 'ruby_event_store/mappers/pipeline'
|
34
31
|
require 'ruby_event_store/mappers/pipeline_mapper'
|
32
|
+
require 'ruby_event_store/mappers/deprecated_wrapper'
|
35
33
|
require 'ruby_event_store/mappers/default'
|
36
34
|
require 'ruby_event_store/mappers/forgotten_data'
|
37
35
|
require 'ruby_event_store/mappers/encryption_mapper'
|
38
36
|
require 'ruby_event_store/mappers/instrumented_mapper'
|
39
37
|
require 'ruby_event_store/mappers/json_mapper'
|
40
38
|
require 'ruby_event_store/mappers/null_mapper'
|
41
|
-
require 'ruby_event_store/mappers/protobuf'
|
42
39
|
require 'ruby_event_store/batch_enumerator'
|
43
40
|
require 'ruby_event_store/correlated_commands'
|
44
41
|
require 'ruby_event_store/link_by_metadata'
|
data/ruby_event_store.gemspec
CHANGED
@@ -20,9 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
"bug_tracker_uri" => "https://github.com/RailsEventStore/rails_event_store/issues",
|
21
21
|
}
|
22
22
|
|
23
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test
|
24
|
-
spec.bindir = 'exe'
|
25
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test/|spec/|features/|.mutant.yml)}) }
|
26
24
|
spec.require_paths = ['lib']
|
27
25
|
|
28
26
|
spec.add_dependency 'concurrent-ruby', '~> 1.0', '>= 1.1.6'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arkency
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01
|
11
|
+
date: 2021-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -39,6 +39,7 @@ extra_rdoc_files: []
|
|
39
39
|
files:
|
40
40
|
- CHANGELOG.md
|
41
41
|
- Gemfile
|
42
|
+
- Gemfile.lock
|
42
43
|
- Makefile
|
43
44
|
- README.md
|
44
45
|
- lib/ruby_event_store.rb
|
@@ -58,6 +59,7 @@ files:
|
|
58
59
|
- lib/ruby_event_store/instrumented_repository.rb
|
59
60
|
- lib/ruby_event_store/link_by_metadata.rb
|
60
61
|
- lib/ruby_event_store/mappers/default.rb
|
62
|
+
- lib/ruby_event_store/mappers/deprecated_wrapper.rb
|
61
63
|
- lib/ruby_event_store/mappers/encryption_key.rb
|
62
64
|
- lib/ruby_event_store/mappers/encryption_mapper.rb
|
63
65
|
- lib/ruby_event_store/mappers/forgotten_data.rb
|
@@ -67,20 +69,16 @@ files:
|
|
67
69
|
- lib/ruby_event_store/mappers/null_mapper.rb
|
68
70
|
- lib/ruby_event_store/mappers/pipeline.rb
|
69
71
|
- lib/ruby_event_store/mappers/pipeline_mapper.rb
|
70
|
-
- lib/ruby_event_store/mappers/protobuf.rb
|
71
72
|
- lib/ruby_event_store/mappers/transformation/domain_event.rb
|
72
73
|
- lib/ruby_event_store/mappers/transformation/encryption.rb
|
73
74
|
- lib/ruby_event_store/mappers/transformation/event_class_remapper.rb
|
74
|
-
- lib/ruby_event_store/mappers/transformation/item.rb
|
75
|
-
- lib/ruby_event_store/mappers/transformation/proto_event.rb
|
76
|
-
- lib/ruby_event_store/mappers/transformation/protobuf_encoder.rb
|
77
|
-
- lib/ruby_event_store/mappers/transformation/protobuf_nested_struct_metadata.rb
|
78
75
|
- lib/ruby_event_store/mappers/transformation/serialization.rb
|
79
|
-
- lib/ruby_event_store/mappers/transformation/serialized_record.rb
|
80
76
|
- lib/ruby_event_store/mappers/transformation/stringify_metadata_keys.rb
|
81
77
|
- lib/ruby_event_store/mappers/transformation/symbolize_metadata_keys.rb
|
82
78
|
- lib/ruby_event_store/metadata.rb
|
79
|
+
- lib/ruby_event_store/null.rb
|
83
80
|
- lib/ruby_event_store/projection.rb
|
81
|
+
- lib/ruby_event_store/record.rb
|
84
82
|
- lib/ruby_event_store/serialized_record.rb
|
85
83
|
- lib/ruby_event_store/spec/broker_lint.rb
|
86
84
|
- lib/ruby_event_store/spec/dispatcher_lint.rb
|
@@ -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
|