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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 584a718972b372e273512e4af2e7da9448c4b6d95f8a38f2e97f86dcf75a4bb8
4
- data.tar.gz: f29d2fe958a8a214f6d1e80491130b429ceb9cab0a26b507f5b47f1284592ee5
3
+ metadata.gz: 82556ae88f8391f125384c68ab2dc9ab304d7faae665432f93df0c0283925043
4
+ data.tar.gz: 3bb3ae6455b09c231b72a7ff4da9594832785cb5fa6c3aca73701eda12fca7dc
5
5
  SHA512:
6
- metadata.gz: 3565b061885fb4dd9cec8adbe77fcf0f87f9f810e5c5792626bc50f701fdfafdb464bd2bccdf5686a7617e8c3be2d7b5af47b4b6b8d9e887ae5189c283c7573e
7
- data.tar.gz: be7a632720eb7c60deb0da18171a45a58cce1e53df18be9707bc237a382ba1d7116313f2e7a277a2bf9ca7a3bf98b434c98f56d814b1b051974dd9ccd6fc5c8f
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 [EventNotInStream]
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyEventStore
4
- VERSION = "2.17.1"
4
+ VERSION = "2.18.0"
5
5
  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.17.1
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.6.9
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: []