ruby_event_store 0.32.0 → 0.33.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: bab926d223e59f80a3c302a45cc70f6cfd4d82e5f768294701ca5474c63c03bd
4
- data.tar.gz: 8856dbe54742b11daa510d45b9d6b7dd48d19b82593796786c9a4a859b852655
3
+ metadata.gz: 72b0e4a52d4e09c87ef8b190fd2e310c306469d053b517c3d93facf2fee6a918
4
+ data.tar.gz: ff0344153ae4e205e709da00b703b3a85605ac0c4c3aafb5b20439adce26a60e
5
5
  SHA512:
6
- metadata.gz: 528ba2456e22858c87dea1cea275fd97a63404080c2b7143248ccec3b43c2be45781fe20caf3460afb8d01e900cc5db40c99962686d66a84d40c66cee694288f
7
- data.tar.gz: 65100e90a4ed432b7ded41bca6f15d30a4acd60b21bdea373ad191900f8f98bb610605481fd4b3f3d9b1bf19718a527114f8f6582b941d4a7f48286fe8f41ec3
6
+ metadata.gz: 1bd120b03290fa27864af3ab4aa7d07cbda4bf1786beb7523103e67d04d02ec2c3fdeb5af6fea9df304a296a658cff944aefd91790ea21839cbc213a53313b60
7
+ data.tar.gz: 710cba6e537aa3378ad677d72d6f170a91fb2c617e8bdc583aa35f03ebe78d202f0c4c40b48e6a3c88728bbcefc422a7414335d8205c6813ebd87b86b12fb892
data/Makefile CHANGED
@@ -9,10 +9,6 @@ IGNORE = RubyEventStore::InMemoryRepository\#append_with_synchronize \
9
9
  RubyEventStore::Client::Within\#add_thread_global_subscribers \
10
10
  RubyEventStore::DeprecatedReadAPIRunner* \
11
11
  RubyEventStore::DeprecatedReadAPIRewriter* \
12
- RubyEventStore::Client\#publish_event \
13
- RubyEventStore::Client\#publish_events \
14
- RubyEventStore::Client\#link_to_stream \
15
- RubyEventStore::Client\#append_to_stream \
16
12
  RubyEventStore::AsyncDispatcher* \
17
13
  RubyEventStore::AsyncProxyStrategy::Inline* \
18
14
  RubyEventStore::SpecificationResult\#count \
@@ -37,36 +37,6 @@ module RubyEventStore
37
37
  self
38
38
  end
39
39
 
40
- # @deprecated Use {#publish} instead
41
- def publish_events(events, stream_name: GLOBAL_STREAM, expected_version: :any)
42
- warn <<~EOW
43
- RubyEventStore::Client#publish_events has been deprecated.
44
-
45
- Use RubyEventStore::Client#publish instead
46
- EOW
47
- publish(events, stream_name: stream_name, expected_version: expected_version)
48
- end
49
-
50
- # @deprecated Use {#publish} instead
51
- def publish_event(event, stream_name: GLOBAL_STREAM, expected_version: :any)
52
- warn <<~EOW
53
- RubyEventStore::Client#publish_event has been deprecated.
54
-
55
- Use RubyEventStore::Client#publish instead
56
- EOW
57
- publish(event, stream_name: stream_name, expected_version: expected_version)
58
- end
59
-
60
- # @deprecated Use {#append} instead
61
- def append_to_stream(events, stream_name: GLOBAL_STREAM, expected_version: :any)
62
- warn <<~EOW
63
- RubyEventStore::Client#append_to_stream has been deprecated.
64
-
65
- Use RubyEventStore::Client#append instead
66
- EOW
67
- append(events, stream_name: stream_name, expected_version: expected_version)
68
- end
69
-
70
40
  # Persists new event(s) without notifying any subscribed handlers
71
41
  #
72
42
  # @param (see #publish)
@@ -89,16 +59,6 @@ module RubyEventStore
89
59
  self
90
60
  end
91
61
 
92
- # @deprecated Use {#link} instead
93
- def link_to_stream(event_ids, stream_name:, expected_version: :any)
94
- warn <<~EOW
95
- RubyEventStore::Client#link_to_stream has been deprecated.
96
-
97
- Use RubyEventStore::Client#link instead
98
- EOW
99
- link(event_ids, stream_name: stream_name, expected_version: expected_version)
100
- end
101
-
102
62
  # Deletes a stream.
103
63
  # All events from the stream remain intact but they are no
104
64
  # longer linked to the stream.
@@ -110,12 +70,14 @@ module RubyEventStore
110
70
  self
111
71
  end
112
72
 
113
- # Returns a single, persisted event based on its ID.
114
- #
115
- # @param event_id [String] event id
116
- # @return [Event, Proto]
73
+ # @deprecated Use {#read.event!(event_id)} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.33.0 More info}
117
74
  def read_event(event_id)
118
- deserialize_event(repository.read_event(event_id))
75
+ warn <<~EOW
76
+ RubyEventStore::Client#read_event(event_id) has been deprecated.
77
+ Use `client.read.event!(event_id)` instead. Also available without
78
+ bang - return nil when no event is found.
79
+ EOW
80
+ read.event!(event_id)
119
81
  end
120
82
 
121
83
  # Starts building a query specification for reading events.
@@ -320,6 +282,10 @@ module RubyEventStore
320
282
  self
321
283
  end
322
284
 
285
+ def inspect
286
+ "#<#{self.class}:0x#{__id__.to_s(16)}>"
287
+ end
288
+
323
289
  EMPTY_HASH = {}.freeze
324
290
  private_constant :EMPTY_HASH
325
291
 
@@ -331,10 +297,6 @@ module RubyEventStore
331
297
  end
332
298
  end
333
299
 
334
- def deserialize_event(sev)
335
- mapper.serialized_record_to_event(sev)
336
- end
337
-
338
300
  def normalize_to_array(events)
339
301
  return *events
340
302
  end
@@ -31,12 +31,9 @@ module RubyEventStore
31
31
  stream_of(stream.name).last
32
32
  end
33
33
 
34
- def read_event(event_id)
35
- global.find {|e| event_id.eql?(e.event_id)} or raise EventNotFound.new(event_id)
36
- end
37
-
38
34
  def read(spec)
39
35
  events = spec.stream.global? ? global : stream_of(spec.stream.name)
36
+ events = events.select{|e| spec.with_ids.any?{|x| x.eql?(e.event_id)}} if spec.with_ids?
40
37
  events = events.reverse if spec.backward?
41
38
  events = events.drop(index_of(events, spec.start) + 1) unless spec.head?
42
39
  events = events[0...spec.limit] if spec.limit?
@@ -71,6 +68,10 @@ module RubyEventStore
71
68
 
72
69
  private
73
70
 
71
+ def read_event(event_id)
72
+ global.find {|e| event_id.eql?(e.event_id)} or raise EventNotFound.new(event_id)
73
+ end
74
+
74
75
  def stream_of(name)
75
76
  streams.fetch(name, Array.new)
76
77
  end
@@ -31,12 +31,6 @@ module RubyEventStore
31
31
  repository.last_stream_event(stream)
32
32
  end
33
33
 
34
- def read_event(event_id)
35
- instrumentation.instrument("read_event.repository.rails_event_store", event_id: event_id) do
36
- repository.read_event(event_id)
37
- end
38
- end
39
-
40
34
  def read(specification)
41
35
  instrumentation.instrument("read.repository.rails_event_store", specification: specification) do
42
36
  repository.read(specification)
@@ -953,25 +953,6 @@ module RubyEventStore
953
953
  expect(repository.has_event?('9bedf448-e4d0-41a3-a8cd-f94aec7aa763')).to be_falsey
954
954
  end
955
955
 
956
- specify 'reading particular event' do
957
- test_event = SRecord.new(event_id: "941cd8f5-b3f9-47af-b4e4-07f8cea37467")
958
- repository.
959
- append_to_stream(SRecord.new, stream_test, version_none).
960
- append_to_stream(test_event, stream_test, version_0)
961
-
962
- expect(repository.read_event("941cd8f5-b3f9-47af-b4e4-07f8cea37467")).to eq(test_event)
963
- end
964
-
965
- specify 'reading non-existent event' do
966
- expect do
967
- repository.read_event('72922e65-1b32-4e97-8023-03ae81dd3a27')
968
- end.to raise_error do |err|
969
- expect(err).to be_a(EventNotFound)
970
- expect(err.event_id).to eq('72922e65-1b32-4e97-8023-03ae81dd3a27')
971
- expect(err.message).to eq('Event not found: 72922e65-1b32-4e97-8023-03ae81dd3a27')
972
- end
973
- end
974
-
975
956
  specify 'linking non-existent event' do
976
957
  skip unless test_link_events_to_stream
977
958
  expect do
@@ -1192,5 +1173,27 @@ module RubyEventStore
1192
1173
  expect(repository.streams_of(event_3.event_id)).to eq [stream_b]
1193
1174
  expect(repository.streams_of(event_4.event_id)).to eq []
1194
1175
  end
1176
+
1177
+ specify do
1178
+ e1 = SRecord.new(event_id: '8a6f053e-3ce2-4c82-a55b-4d02c66ae6ea')
1179
+ e2 = SRecord.new(event_id: '8cee1139-4f96-483a-a175-2b947283c3c7')
1180
+ e3 = SRecord.new(event_id: 'd345f86d-b903-4d78-803f-38990c078d9e')
1181
+ stream = Stream.new('Stream A')
1182
+ repository.append_to_stream([e1, e2, e3], stream, version_any)
1183
+
1184
+ expect(repository.read(specification.with_id([
1185
+ '8a6f053e-3ce2-4c82-a55b-4d02c66ae6ea'
1186
+ ]).read_first.result)).to eq(e1)
1187
+ expect(repository.read(specification.with_id([
1188
+ 'd345f86d-b903-4d78-803f-38990c078d9e'
1189
+ ]).read_first.result)).to eq(e3)
1190
+ expect(repository.read(specification.with_id([
1191
+ 'c31b327c-0da1-4178-a3cd-d2f6bb5d0688'
1192
+ ]).read_first.result)).to eq(nil)
1193
+ expect(repository.read(specification.with_id([
1194
+ '8a6f053e-3ce2-4c82-a55b-4d02c66ae6ea',
1195
+ 'd345f86d-b903-4d78-803f-38990c078d9e'
1196
+ ]).in_batches.result).to_a[0]).to eq([e1,e3])
1197
+ end
1195
1198
  end
1196
1199
  end
@@ -143,6 +143,46 @@ module RubyEventStore
143
143
  reader.one(read_last.result)
144
144
  end
145
145
 
146
+ # Limits the query to certain events by given even ids.
147
+ # {http://railseventstore.org/docs/read/ Find out more}.
148
+ #
149
+ # @param even_ids [Array(String)] ids of event to look for.
150
+ # @return [Specification]
151
+ def with_id(event_ids)
152
+ Specification.new(reader, result.dup{ |r| r.with_ids = event_ids })
153
+ end
154
+
155
+ # Executes the query based on the specification built up to this point.
156
+ # Returns the event with specified id or nil if event is not found
157
+ # in specified collection of events.
158
+ # {http://railseventstore.org/docs/read/ Find out more}.
159
+ #
160
+ # @return [Event, nil]
161
+ def event(event_id)
162
+ reader.one(read_first.with_id([event_id]).result)
163
+ end
164
+
165
+ # Executes the query based on the specification built up to this point.
166
+ # Returns the event with specified id or raises [EventNotFound[ error if
167
+ # event is not found in specified collection of events.
168
+ # {http://railseventstore.org/docs/read/ Find out more}.
169
+ #
170
+ # @return [Event]
171
+ def event!(event_id)
172
+ event(event_id) or raise EventNotFound.new(event_id)
173
+ end
174
+
175
+ # Executes the query based on the specification built up to this point.
176
+ # Yields each event (found by id in specified collection of events)
177
+ # read from the store if block given. Otherwise, returns enumerable collection.
178
+ # {http://railseventstore.org/docs/read/ Find out more}.
179
+ #
180
+ # @yield [Event, Proto] event
181
+ # @return [Enumerator, nil] Enumerator is returned when block not given
182
+ def events(event_ids)
183
+ with_id(event_ids).each
184
+ end
185
+
146
186
  attr_reader :result
147
187
  private
148
188
  attr_reader :reader
@@ -5,9 +5,10 @@ module RubyEventStore
5
5
  count: nil,
6
6
  stream: Stream.new(GLOBAL_STREAM),
7
7
  read_as: :all,
8
- batch_size: Specification::DEFAULT_BATCH_SIZE)
9
- @attributes = Struct.new(:direction, :start, :count, :stream, :read_as, :batch_size)
10
- .new(direction, start, count, stream, read_as, batch_size)
8
+ batch_size: Specification::DEFAULT_BATCH_SIZE,
9
+ with_ids: nil)
10
+ @attributes = Struct.new(:direction, :start, :count, :stream, :read_as, :batch_size, :with_ids)
11
+ .new(direction, start, count, stream, read_as, batch_size, with_ids)
11
12
  freeze
12
13
  end
13
14
 
@@ -75,6 +76,22 @@ module RubyEventStore
75
76
  attributes.batch_size
76
77
  end
77
78
 
79
+ # Ids of specified event to be read (if any given)
80
+ # {http://railseventstore.org/docs/read/ Find out more}.
81
+ #
82
+ # @return [Array|nil]
83
+ def with_ids
84
+ attributes.with_ids
85
+ end
86
+
87
+ # Read by specified ids. True if event ids have been specified.
88
+ # {http://railseventstore.org/docs/read/ Find out more}.
89
+ #
90
+ # @return [Boolean]
91
+ def with_ids?
92
+ !(with_ids || []).empty?
93
+ end
94
+
78
95
  # Read strategy. True if items will be read in batches
79
96
  # {http://railseventstore.org/docs/read/ Find out more}.
80
97
  #
@@ -145,6 +162,7 @@ module RubyEventStore
145
162
  # * stream
146
163
  # * read_as
147
164
  # * batch_size
165
+ # * with_ids
148
166
  #
149
167
  # @return [Integer]
150
168
  def hash
@@ -156,6 +174,7 @@ module RubyEventStore
156
174
  stream,
157
175
  attributes.read_as,
158
176
  batch_size,
177
+ with_ids,
159
178
  ].hash ^ BIG_VALUE
160
179
  end
161
180
 
@@ -1,3 +1,3 @@
1
1
  module RubyEventStore
2
- VERSION = "0.32.0"
2
+ VERSION = "0.33.0"
3
3
  end
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: 0.32.0
4
+ version: 0.33.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-09-27 00:00:00.000000000 Z
11
+ date: 2018-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -225,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
225
225
  version: '0'
226
226
  requirements: []
227
227
  rubyforge_project:
228
- rubygems_version: 2.7.6
228
+ rubygems_version: 3.0.0.beta1
229
229
  signing_key:
230
230
  specification_version: 4
231
231
  summary: Event Store in Ruby