ruby_event_store 0.26.0 → 0.27.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|