ruby_event_store 2.17.1 → 2.18.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/lib/ruby_event_store/client.rb +23 -25
- data/lib/ruby_event_store/event.rb +15 -0
- data/lib/ruby_event_store/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 82556ae88f8391f125384c68ab2dc9ab304d7faae665432f93df0c0283925043
|
|
4
|
+
data.tar.gz: 3bb3ae6455b09c231b72a7ff4da9594832785cb5fa6c3aca73701eda12fca7dc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dadeb6e20f83eccce924639e146cbbd9a2660ae5c4dfa714b060e0a0617a7d33ee6249de2b5e0e27282388daeaddeb1f161a0ef205434544654e49b67cc305a8
|
|
7
|
+
data.tar.gz: f2e2d102651a8a21a1ca76d8b34366186cc8768fcc3af9a023b9c085db0ad941830219a959ee42b686df5cf2b4a4a040bfad715159389f97b6e1bf0e6bb8bf99
|
|
@@ -46,8 +46,8 @@ module RubyEventStore
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def rescue_from_double_json_serialization!
|
|
49
|
-
return unless repository.respond_to? :rescue_from_double_json_serialization!
|
|
50
|
-
repository.rescue_from_double_json_serialization!
|
|
49
|
+
return unless @repository.respond_to? :rescue_from_double_json_serialization!
|
|
50
|
+
@repository.rescue_from_double_json_serialization!
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
# Persists events and notifies subscribed handlers about them
|
|
@@ -62,15 +62,15 @@ module RubyEventStore
|
|
|
62
62
|
append_records_to_stream(records, stream_name: stream_name, expected_version: expected_version)
|
|
63
63
|
enriched_events.zip(records) do |event, record|
|
|
64
64
|
with_metadata(correlation_id: event.metadata.fetch(:correlation_id), causation_id: event.event_id) do
|
|
65
|
-
if broker.public_method(:call).arity == 3
|
|
66
|
-
broker.call(topic || event.event_type, event, record)
|
|
65
|
+
if @broker.public_method(:call).arity == 3
|
|
66
|
+
@broker.call(topic || event.event_type, event, record)
|
|
67
67
|
else
|
|
68
68
|
warn <<~EOW
|
|
69
69
|
Message broker shall support topics.
|
|
70
70
|
Topic WILL BE IGNORED in the current broker.
|
|
71
71
|
Modify the broker implementation to pass topic as an argument to broker.call method.
|
|
72
72
|
EOW
|
|
73
|
-
broker.call(event, record)
|
|
73
|
+
@broker.call(event, record)
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
end
|
|
@@ -98,7 +98,7 @@ module RubyEventStore
|
|
|
98
98
|
# @param expected_version (see #publish)
|
|
99
99
|
# @return [self]
|
|
100
100
|
def link(event_ids, stream_name:, expected_version: :any)
|
|
101
|
-
repository.link_to_stream(Array(event_ids), Stream.new(stream_name), ExpectedVersion.new(expected_version))
|
|
101
|
+
@repository.link_to_stream(Array(event_ids), Stream.new(stream_name), ExpectedVersion.new(expected_version))
|
|
102
102
|
self
|
|
103
103
|
end
|
|
104
104
|
|
|
@@ -109,7 +109,7 @@ module RubyEventStore
|
|
|
109
109
|
# @param stream_name [String] name of the stream to be cleared.
|
|
110
110
|
# @return [self]
|
|
111
111
|
def delete_stream(stream_name)
|
|
112
|
-
repository.delete_stream(Stream.new(stream_name))
|
|
112
|
+
@repository.delete_stream(Stream.new(stream_name))
|
|
113
113
|
self
|
|
114
114
|
end
|
|
115
115
|
|
|
@@ -118,14 +118,14 @@ module RubyEventStore
|
|
|
118
118
|
#
|
|
119
119
|
# @return [Specification]
|
|
120
120
|
def read
|
|
121
|
-
Specification.new(SpecificationReader.new(repository, mapper))
|
|
121
|
+
Specification.new(SpecificationReader.new(@repository, @mapper))
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
# Gets list of streams where event is stored or linked
|
|
125
125
|
#
|
|
126
126
|
# @return [Array<Stream>] where event is stored or linked
|
|
127
127
|
def streams_of(event_id)
|
|
128
|
-
repository.streams_of(event_id)
|
|
128
|
+
@repository.streams_of(event_id)
|
|
129
129
|
end
|
|
130
130
|
|
|
131
131
|
# Gets position of the event in given stream
|
|
@@ -137,9 +137,9 @@ module RubyEventStore
|
|
|
137
137
|
# @param event_id [String]
|
|
138
138
|
# @param stream_name [String]
|
|
139
139
|
# @return [Integer] nonnegative integer position of event in stream
|
|
140
|
-
# @raise [
|
|
140
|
+
# @raise [EventNotFoundInStream]
|
|
141
141
|
def position_in_stream(event_id, stream_name)
|
|
142
|
-
repository.position_in_stream(event_id, Stream.new(stream_name))
|
|
142
|
+
@repository.position_in_stream(event_id, Stream.new(stream_name))
|
|
143
143
|
end
|
|
144
144
|
|
|
145
145
|
# Gets position of the event in global stream
|
|
@@ -152,7 +152,7 @@ module RubyEventStore
|
|
|
152
152
|
# @raise [EventNotFound]
|
|
153
153
|
# @return [Integer] nonnegno ative integer position of event in global stream
|
|
154
154
|
def global_position(event_id)
|
|
155
|
-
repository.global_position(event_id)
|
|
155
|
+
@repository.global_position(event_id)
|
|
156
156
|
end
|
|
157
157
|
|
|
158
158
|
# Checks whether event is linked in given stream
|
|
@@ -162,7 +162,7 @@ module RubyEventStore
|
|
|
162
162
|
# @return [Boolean] true if event is linked to given stream, false otherwise
|
|
163
163
|
def event_in_stream?(event_id, stream_name)
|
|
164
164
|
stream = Stream.new(stream_name)
|
|
165
|
-
stream.global? ? repository.has_event?(event_id) : repository.event_in_stream?(event_id, stream)
|
|
165
|
+
stream.global? ? @repository.has_event?(event_id) : @repository.event_in_stream?(event_id, stream)
|
|
166
166
|
end
|
|
167
167
|
|
|
168
168
|
# Subscribes a handler (subscriber) that will be invoked for published events of provided type.
|
|
@@ -180,7 +180,7 @@ module RubyEventStore
|
|
|
180
180
|
def subscribe(subscriber = nil, to:, &proc)
|
|
181
181
|
raise ArgumentError, "subscriber must be first argument or block, cannot be both" if subscriber && proc
|
|
182
182
|
subscriber ||= proc
|
|
183
|
-
broker.add_subscription(subscriber, to.map { |event_klass| event_type_resolver.call(event_klass) })
|
|
183
|
+
@broker.add_subscription(subscriber, to.map { |event_klass| @event_type_resolver.call(event_klass) })
|
|
184
184
|
end
|
|
185
185
|
|
|
186
186
|
# Subscribes a handler (subscriber) that will be invoked for all published events
|
|
@@ -195,7 +195,7 @@ module RubyEventStore
|
|
|
195
195
|
# @raise [ArgumentError, SubscriberNotExist]
|
|
196
196
|
def subscribe_to_all_events(subscriber = nil, &proc)
|
|
197
197
|
raise ArgumentError, "subscriber must be first argument or block, cannot be both" if subscriber && proc
|
|
198
|
-
broker.add_global_subscription(subscriber || proc)
|
|
198
|
+
@broker.add_global_subscription(subscriber || proc)
|
|
199
199
|
end
|
|
200
200
|
|
|
201
201
|
# Get list of handlers subscribed to an event
|
|
@@ -203,7 +203,7 @@ module RubyEventStore
|
|
|
203
203
|
# @param to [Class, String] type of events to get list of sybscribed handlers
|
|
204
204
|
# @return [Array<Object, Class>]
|
|
205
205
|
def subscribers_for(event_class)
|
|
206
|
-
broker.all_subscriptions_for(event_type_resolver.call(event_class))
|
|
206
|
+
@broker.all_subscriptions_for(@event_type_resolver.call(event_class))
|
|
207
207
|
end
|
|
208
208
|
|
|
209
209
|
# Builder object for collecting temporary handlers (subscribers)
|
|
@@ -286,7 +286,7 @@ module RubyEventStore
|
|
|
286
286
|
# @return [Within] builder object which collects temporary subscriptions
|
|
287
287
|
def within(&block)
|
|
288
288
|
raise ArgumentError if block.nil?
|
|
289
|
-
Within.new(block, broker, event_type_resolver)
|
|
289
|
+
Within.new(block, @broker, @event_type_resolver)
|
|
290
290
|
end
|
|
291
291
|
|
|
292
292
|
# Set additional metadata for all events published within the provided block
|
|
@@ -310,7 +310,7 @@ module RubyEventStore
|
|
|
310
310
|
def deserialize(serializer:, event_type:, event_id:, data:, metadata:, timestamp: nil, valid_at: nil)
|
|
311
311
|
extract_timestamp = lambda { |m| (m[:timestamp] || Time.parse(m.fetch("timestamp"))).iso8601 }
|
|
312
312
|
|
|
313
|
-
mapper.records_to_events(
|
|
313
|
+
@mapper.records_to_events(
|
|
314
314
|
[
|
|
315
315
|
SerializedRecord.new(
|
|
316
316
|
event_type: event_type,
|
|
@@ -362,7 +362,7 @@ module RubyEventStore
|
|
|
362
362
|
# @param events [Array<Event>, Event] event(s) to serialize and overwrite again
|
|
363
363
|
# @return [self]
|
|
364
364
|
def overwrite(events_or_event)
|
|
365
|
-
repository.update_messages(transform(Array(events_or_event)))
|
|
365
|
+
@repository.update_messages(transform(Array(events_or_event)))
|
|
366
366
|
self
|
|
367
367
|
end
|
|
368
368
|
|
|
@@ -376,7 +376,7 @@ module RubyEventStore
|
|
|
376
376
|
private
|
|
377
377
|
|
|
378
378
|
def transform(events)
|
|
379
|
-
mapper.events_to_records(events)
|
|
379
|
+
@mapper.events_to_records(events)
|
|
380
380
|
end
|
|
381
381
|
|
|
382
382
|
def enrich_events_metadata(events)
|
|
@@ -386,13 +386,13 @@ module RubyEventStore
|
|
|
386
386
|
|
|
387
387
|
def enrich_event_metadata(event)
|
|
388
388
|
metadata.each { |key, value| event.metadata[key] ||= value }
|
|
389
|
-
event.metadata[:timestamp] ||= clock.call
|
|
389
|
+
event.metadata[:timestamp] ||= @clock.call
|
|
390
390
|
event.metadata[:valid_at] ||= event.metadata.fetch(:timestamp)
|
|
391
|
-
event.metadata[:correlation_id] ||= correlation_id_generator.call
|
|
391
|
+
event.metadata[:correlation_id] ||= @correlation_id_generator.call
|
|
392
392
|
end
|
|
393
393
|
|
|
394
394
|
def append_records_to_stream(records, stream_name:, expected_version:)
|
|
395
|
-
repository.append_to_stream(records, Stream.new(stream_name), ExpectedVersion.new(expected_version))
|
|
395
|
+
@repository.append_to_stream(records, Stream.new(stream_name), ExpectedVersion.new(expected_version))
|
|
396
396
|
end
|
|
397
397
|
|
|
398
398
|
protected
|
|
@@ -412,7 +412,5 @@ module RubyEventStore
|
|
|
412
412
|
def default_correlation_id_generator
|
|
413
413
|
-> { SecureRandom.uuid }
|
|
414
414
|
end
|
|
415
|
-
|
|
416
|
-
attr_reader :repository, :mapper, :broker, :clock, :correlation_id_generator, :event_type_resolver
|
|
417
415
|
end
|
|
418
416
|
end
|
|
@@ -123,6 +123,21 @@ module RubyEventStore
|
|
|
123
123
|
self
|
|
124
124
|
end
|
|
125
125
|
|
|
126
|
+
# Returns a hash of the name/value pairs for the given event attributes.
|
|
127
|
+
#
|
|
128
|
+
# @param attributes [Array] attributes to deconstruct
|
|
129
|
+
# @return [Hash] deconstructed event
|
|
130
|
+
def deconstruct_keys(attributes)
|
|
131
|
+
{
|
|
132
|
+
causation_id: causation_id,
|
|
133
|
+
correlation_id: correlation_id,
|
|
134
|
+
data: data,
|
|
135
|
+
event_id: event_id,
|
|
136
|
+
event_type: event_type,
|
|
137
|
+
metadata: metadata.to_h
|
|
138
|
+
}.slice(*attributes)
|
|
139
|
+
end
|
|
140
|
+
|
|
126
141
|
alias_method :eql?, :==
|
|
127
142
|
end
|
|
128
143
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby_event_store
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.18.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Arkency
|
|
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
121
121
|
- !ruby/object:Gem::Version
|
|
122
122
|
version: '0'
|
|
123
123
|
requirements: []
|
|
124
|
-
rubygems_version: 3.
|
|
124
|
+
rubygems_version: 3.7.2
|
|
125
125
|
specification_version: 4
|
|
126
126
|
summary: Implementation of an event store in Ruby
|
|
127
127
|
test_files: []
|