ruby_event_store 0.26.0 → 0.27.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/Gemfile +1 -0
- data/Makefile +2 -0
- data/lib/ruby_event_store/client.rb +18 -9
- data/lib/ruby_event_store/in_memory_repository.rb +7 -1
- data/lib/ruby_event_store/mappers/default.rb +6 -2
- data/lib/ruby_event_store/mappers/protobuf.rb +35 -0
- data/lib/ruby_event_store/spec/event_repository_lint.rb +3 -0
- data/lib/ruby_event_store/version.rb +1 -1
- data/lib/ruby_event_store.rb +1 -0
- data/ruby_event_store.gemspec +1 -1
- metadata +18 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04babfc6a0fb84bd5d00bb43f7e1579648301aa7
|
4
|
+
data.tar.gz: dfb8f805ab5012b49489bd81a46e3e255c046895
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c5e2f7f5cc890c57c9aea3a9c037ee4772127b6f8517034a405fd5ba8396c83b3a5a56ccf9cb5e2e2af2588eca7ab60571f854496215a1958aaf2222a6a4d47
|
7
|
+
data.tar.gz: 92a1da7e1792f0eb907f67f4cf1cf43ebfad5cffcf9cc46f6f18d6c3cc9aacac28de577be7cc8103504e7c5745367011b0274bbe3ddca60f6a0ab16ae8343ed5
|
data/Gemfile
CHANGED
data/Makefile
CHANGED
@@ -6,6 +6,8 @@ IGNORE = RubyEventStore.const_missing \
|
|
6
6
|
RubyEventStore::InMemoryRepository\#normalize_to_array \
|
7
7
|
RubyEventStore::Client\#normalize_to_array \
|
8
8
|
RubyEventStore::Client::Within\#normalize_to_array \
|
9
|
+
RubyEventStore::Client::Within\#add_thread_subscribers \
|
10
|
+
RubyEventStore::Client::Within\#add_thread_global_subscribers \
|
9
11
|
RubyEventStore::SerializedRecord \
|
10
12
|
RubyEventStore::Projection\#read_events_from_stream \
|
11
13
|
RubyEventStore::Projection\#read_events_from_all_streams
|
@@ -152,18 +152,26 @@ module RubyEventStore
|
|
152
152
|
end
|
153
153
|
|
154
154
|
def call
|
155
|
-
unsubs
|
156
|
-
|
157
|
-
end
|
158
|
-
unsubs += @subscribers.map do |handler, types|
|
159
|
-
@event_broker.add_thread_subscriber(handler, types)
|
160
|
-
end
|
155
|
+
unsubs = add_thread_global_subscribers
|
156
|
+
unsubs += add_thread_subscribers
|
161
157
|
@block.call
|
162
158
|
ensure
|
163
159
|
unsubs.each(&:call)
|
164
160
|
end
|
165
161
|
|
166
162
|
private
|
163
|
+
|
164
|
+
def add_thread_subscribers
|
165
|
+
@subscribers.map do |handler, types|
|
166
|
+
@event_broker.add_thread_subscriber(handler, types)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
def add_thread_global_subscribers
|
171
|
+
@global_subscribers.map do |s|
|
172
|
+
@event_broker.add_thread_global_subscriber(s)
|
173
|
+
end
|
174
|
+
end
|
167
175
|
|
168
176
|
def normalize_to_array(objs)
|
169
177
|
return *objs
|
@@ -182,11 +190,12 @@ module RubyEventStore
|
|
182
190
|
end
|
183
191
|
|
184
192
|
def enrich_event_metadata(event)
|
185
|
-
metadata =
|
193
|
+
metadata = {}
|
186
194
|
metadata[:timestamp] ||= @clock.()
|
187
195
|
metadata.merge!(@metadata_proc.call || {}) if @metadata_proc
|
188
|
-
|
189
|
-
|
196
|
+
metadata.each do |key, value|
|
197
|
+
@repository.add_metadata(event, key, value)
|
198
|
+
end
|
190
199
|
end
|
191
200
|
|
192
201
|
class Page
|
@@ -3,10 +3,12 @@ require 'thread'
|
|
3
3
|
|
4
4
|
module RubyEventStore
|
5
5
|
class InMemoryRepository
|
6
|
-
|
6
|
+
|
7
|
+
def initialize(mapper: Mappers::Default.new)
|
7
8
|
@all = Array.new
|
8
9
|
@streams = Hash.new
|
9
10
|
@mutex = Mutex.new
|
11
|
+
@mapper = mapper
|
10
12
|
end
|
11
13
|
|
12
14
|
def append_to_stream(events, stream_name, expected_version)
|
@@ -64,6 +66,10 @@ module RubyEventStore
|
|
64
66
|
[Stream.new("all")] + @streams.keys.map { |name| Stream.new(name) }
|
65
67
|
end
|
66
68
|
|
69
|
+
def add_metadata(event, key, value)
|
70
|
+
@mapper.add_metadata(event, key, value)
|
71
|
+
end
|
72
|
+
|
67
73
|
private
|
68
74
|
|
69
75
|
def normalize_to_array(events)
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'yaml'
|
2
|
-
require 'active_support'
|
3
2
|
|
4
3
|
module RubyEventStore
|
5
4
|
module Mappers
|
@@ -20,12 +19,17 @@ module RubyEventStore
|
|
20
19
|
|
21
20
|
def serialized_record_to_event(record)
|
22
21
|
event_type = @events_class_remapping.fetch(record.event_type) { record.event_type }
|
23
|
-
|
22
|
+
Object.const_get(event_type).new(
|
24
23
|
event_id: record.event_id,
|
25
24
|
metadata: @serializer.load(record.metadata),
|
26
25
|
data: @serializer.load(record.data)
|
27
26
|
)
|
28
27
|
end
|
28
|
+
|
29
|
+
def add_metadata(event, key, value)
|
30
|
+
event.metadata[key.to_sym] = value
|
31
|
+
end
|
32
|
+
|
29
33
|
end
|
30
34
|
end
|
31
35
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module RubyEventStore
|
2
|
+
module Mappers
|
3
|
+
class Protobuf
|
4
|
+
def initialize(event_id_getter: :event_id, events_class_remapping: {})
|
5
|
+
@event_id_getter = event_id_getter
|
6
|
+
@events_class_remapping = events_class_remapping
|
7
|
+
end
|
8
|
+
|
9
|
+
def event_to_serialized_record(domain_event)
|
10
|
+
SerializedRecord.new(
|
11
|
+
event_id: domain_event.public_send(event_id_getter),
|
12
|
+
metadata: "",
|
13
|
+
data: domain_event.class.encode(domain_event),
|
14
|
+
event_type: domain_event.class.name
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
def serialized_record_to_event(record)
|
19
|
+
event_type = events_class_remapping.fetch(record.event_type) { record.event_type }
|
20
|
+
Object.const_get(event_type).decode(record.data)
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_metadata(event, key, value)
|
24
|
+
setter = "#{key}="
|
25
|
+
if event.respond_to?(setter)
|
26
|
+
event.public_send(setter, value)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
attr_reader :event_id_getter, :events_class_remapping
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/ruby_event_store.rb
CHANGED
data/ruby_event_store.gemspec
CHANGED
@@ -20,10 +20,10 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
22
|
|
23
|
-
spec.add_dependency 'activesupport'
|
24
23
|
spec.add_dependency 'concurrent-ruby', '~> 1.0'
|
25
24
|
spec.add_development_dependency 'bundler', '~> 1.15'
|
26
25
|
spec.add_development_dependency 'rake', '~> 10.0'
|
27
26
|
spec.add_development_dependency 'rspec', '~> 3.6'
|
28
27
|
spec.add_development_dependency 'mutant-rspec', '~> 0.8.14'
|
28
|
+
spec.add_development_dependency 'google-protobuf', '~> 3.5.1.2'
|
29
29
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_event_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.27.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arkency
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: activesupport
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: concurrent-ruby
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +80,20 @@ dependencies:
|
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: 0.8.14
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: google-protobuf
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.5.1.2
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.5.1.2
|
97
97
|
description: Implementation of Event Store in Ruby
|
98
98
|
email:
|
99
99
|
- dev@arkency.com
|
@@ -113,6 +113,7 @@ files:
|
|
113
113
|
- lib/ruby_event_store/event.rb
|
114
114
|
- lib/ruby_event_store/in_memory_repository.rb
|
115
115
|
- lib/ruby_event_store/mappers/default.rb
|
116
|
+
- lib/ruby_event_store/mappers/protobuf.rb
|
116
117
|
- lib/ruby_event_store/projection.rb
|
117
118
|
- lib/ruby_event_store/pub_sub/broker.rb
|
118
119
|
- lib/ruby_event_store/pub_sub/dispatcher.rb
|
@@ -143,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
144
|
version: '0'
|
144
145
|
requirements: []
|
145
146
|
rubyforge_project:
|
146
|
-
rubygems_version: 2.6.
|
147
|
+
rubygems_version: 2.6.14
|
147
148
|
signing_key:
|
148
149
|
specification_version: 4
|
149
150
|
summary: Event Store in Ruby
|