sandthorn_driver_sequel 4.0.0 → 4.1.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/sandthorn_driver_sequel/access/event_access.rb +2 -1
- data/lib/sandthorn_driver_sequel/event_store.rb +4 -4
- data/lib/sandthorn_driver_sequel/version.rb +1 -1
- data/spec/benchmark_spec.rb +4 -4
- data/spec/event_access_spec.rb +32 -0
- data/spec/event_store_with_context_spec.rb +3 -3
- data/spec/get_events_spec.rb +8 -8
- data/spec/saving_events_spec.rb +12 -12
- metadata +3 -5
- data/spec/event_store_spec.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a1fe00053ffc5348f2d2f32af95a97a94a6c282
|
4
|
+
data.tar.gz: 67e545d052af2a9633970b469cbeb1c68287bc46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c154c8ca437483f418464fa3c5d6fa279153dc173d26634824269d4e982c7b45df7f28f24c849f6e68bc58ea37051b14e2a0cea7a83eef7642bb7a7c604066d
|
7
|
+
data.tar.gz: a808bcdefe4bbf12872d63ad1b28a03856d91e51d7a54d47654d8f7acacf9808e44d69214e0629a1a8a6ce7ffe4062cf8f1eb4ecdb67fdb89271c6de82ee65f6
|
@@ -20,11 +20,12 @@ module SandthornDriverSequel
|
|
20
20
|
aggregate.save
|
21
21
|
end
|
22
22
|
|
23
|
-
def find_events_by_aggregate_id(aggregate_id)
|
23
|
+
def find_events_by_aggregate_id(aggregate_id, after_aggregate_version = 0)
|
24
24
|
aggregate_version = Sequel.qualify(storage.events_table_name, :aggregate_version)
|
25
25
|
wrap(storage.events
|
26
26
|
.join(storage.aggregates_table_name, id: :aggregate_table_id)
|
27
27
|
.where(aggregate_id: aggregate_id)
|
28
|
+
.where(aggregate_version > after_aggregate_version)
|
28
29
|
.select(
|
29
30
|
:sequence_number,
|
30
31
|
:aggregate_id,
|
@@ -36,8 +36,8 @@ module SandthornDriverSequel
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
def find aggregate_id, aggregate_type
|
40
|
-
aggregate_events(aggregate_id)
|
39
|
+
def find aggregate_id, aggregate_type, after_aggregate_version = 0
|
40
|
+
aggregate_events(aggregate_id, after_aggregate_version)
|
41
41
|
end
|
42
42
|
|
43
43
|
def get_events(*args)
|
@@ -49,10 +49,10 @@ module SandthornDriverSequel
|
|
49
49
|
|
50
50
|
private
|
51
51
|
|
52
|
-
def aggregate_events(aggregate_id)
|
52
|
+
def aggregate_events(aggregate_id, after_aggregate_version = 0)
|
53
53
|
driver.execute do |db|
|
54
54
|
event_access = get_event_access(db)
|
55
|
-
event_access.find_events_by_aggregate_id(aggregate_id)
|
55
|
+
event_access.find_events_by_aggregate_id(aggregate_id, after_aggregate_version)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
data/spec/benchmark_spec.rb
CHANGED
@@ -10,9 +10,9 @@ module Sandthorn
|
|
10
10
|
before(:each) { prepare_for_test }
|
11
11
|
let(:test_events_20_events) do
|
12
12
|
e = []
|
13
|
-
e << {aggregate_version: 1,
|
13
|
+
e << {aggregate_version: 1, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "new", event_data: {} }
|
14
14
|
19.times do |i|
|
15
|
-
e << {aggregate_version: i+2, event_name: "foo", event_data: "A2"}
|
15
|
+
e << {aggregate_version: i+2, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "foo", event_data: "A2"}
|
16
16
|
end
|
17
17
|
e
|
18
18
|
end
|
@@ -22,8 +22,8 @@ module Sandthorn
|
|
22
22
|
end
|
23
23
|
let(:test_events_two_events) do
|
24
24
|
e = []
|
25
|
-
e << {aggregate_version: 1,
|
26
|
-
e << {aggregate_version: 2, event_name: "foo", event_data: "A2"}
|
25
|
+
e << {aggregate_version: 1, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "new", event_data: {} }
|
26
|
+
e << {aggregate_version: 2, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "foo", event_data: "A2"}
|
27
27
|
end
|
28
28
|
let(:aggregate_id) {"c0456e26-2345-4f67-92fa-130b3a31a39a"}
|
29
29
|
let(:es) { event_store }
|
data/spec/event_access_spec.rb
CHANGED
@@ -33,6 +33,11 @@ module SandthornDriverSequel
|
|
33
33
|
event_name: "foo",
|
34
34
|
event_data: "foo_data",
|
35
35
|
event_metadata: nil
|
36
|
+
},{
|
37
|
+
aggregate_version: 3,
|
38
|
+
event_name: "foo2",
|
39
|
+
event_data: "foo_data2",
|
40
|
+
event_metadata: nil
|
36
41
|
}
|
37
42
|
]
|
38
43
|
end
|
@@ -80,10 +85,37 @@ module SandthornDriverSequel
|
|
80
85
|
expect(stored_events.size).to eq(events.size)
|
81
86
|
expect(stored_events).to all(respond_to(:merge))
|
82
87
|
end
|
88
|
+
|
89
|
+
it "returns events in correct order" do
|
90
|
+
expect(stored_events.first[:aggregate_version] < stored_events.last[:aggregate_version]).to be_truthy
|
91
|
+
expect(stored_events.first[:sequence_number] < stored_events.last[:sequence_number]).to be_truthy
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
context "when using after_aggregate_version" do
|
97
|
+
before do
|
98
|
+
access.store_events(aggregate, events)
|
99
|
+
end
|
100
|
+
|
101
|
+
# exclude the first event
|
102
|
+
let(:stored_events) { access.find_events_by_aggregate_id(aggregate.aggregate_id, 1) }
|
103
|
+
|
104
|
+
it "returns correct events" do
|
105
|
+
expect(stored_events.map(&:aggregate_table_id)).to all(eq(aggregate.id))
|
106
|
+
expect(stored_events.size).to eq(events.size-1)
|
107
|
+
expect(stored_events).to all(respond_to(:merge))
|
108
|
+
end
|
109
|
+
|
83
110
|
it "returns events in correct order" do
|
84
111
|
expect(stored_events.first[:aggregate_version] < stored_events.last[:aggregate_version]).to be_truthy
|
85
112
|
expect(stored_events.first[:sequence_number] < stored_events.last[:sequence_number]).to be_truthy
|
86
113
|
end
|
114
|
+
|
115
|
+
it "should not return event with aggregate_version = 1" do
|
116
|
+
expect(stored_events.first[:aggregate_version]).not_to eq(1)
|
117
|
+
end
|
118
|
+
|
87
119
|
end
|
88
120
|
end
|
89
121
|
|
@@ -8,9 +8,9 @@ module SandthornDriverSequel
|
|
8
8
|
context("when saving in one context and retrieving in another") do
|
9
9
|
let(:test_events) do
|
10
10
|
e = []
|
11
|
-
e << {aggregate_version: 1,
|
12
|
-
e << {aggregate_version: 2, event_name: "foo", event_data: "noop", event_metadata: nil}
|
13
|
-
e << {aggregate_version: 3, event_name: "flubber", event_data: "noop", event_metadata: nil}
|
11
|
+
e << {aggregate_version: 1, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "new", event_data: {}, event_metadata: nil}
|
12
|
+
e << {aggregate_version: 2, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "foo", event_data: "noop", event_metadata: nil}
|
13
|
+
e << {aggregate_version: 3, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "flubber", event_data: "noop", event_metadata: nil}
|
14
14
|
end
|
15
15
|
let(:aggregate_id) {"c0456e26-e29a-4f67-92fa-130b3a31a39b"}
|
16
16
|
it "should not find them" do
|
data/spec/get_events_spec.rb
CHANGED
@@ -5,25 +5,25 @@ module SandthornDriverSequel
|
|
5
5
|
before(:each) { prepare_for_test }
|
6
6
|
let(:test_events_a) do
|
7
7
|
e = []
|
8
|
-
e << {aggregate_version: 1,
|
9
|
-
e << {aggregate_version: 2, event_name: "foo", event_data: "A2", event_metadata: {a: 1}}
|
10
|
-
e << {aggregate_version: 3, event_name: "bard", event_data: "A3", event_metadata: {a: 1}}
|
8
|
+
e << {aggregate_version: 1, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "new", event_data: {}, event_metadata: {a: 1}}
|
9
|
+
e << {aggregate_version: 2, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "foo", event_data: "A2", event_metadata: {a: 1}}
|
10
|
+
e << {aggregate_version: 3, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "bard", event_data: "A3", event_metadata: {a: 1}}
|
11
11
|
end
|
12
12
|
let(:aggregate_id_a) {"c0456e26-e29a-4f67-92fa-130b3a31a39a"}
|
13
13
|
let(:test_events_b) do
|
14
14
|
e = []
|
15
|
-
e << {aggregate_version: 1, event_name: "new", event_data: "B1", event_metadata: 1}
|
16
|
-
e << {aggregate_version: 2, event_name: "foo", event_data: "B2", event_metadata: 2}
|
17
|
-
e << {aggregate_version: 3, event_name: "bar", event_data: "B3", event_metadata: 3}
|
15
|
+
e << {aggregate_version: 1, aggregate_id: "c0456e26-e29a-4f67-92fa-130b3a31a39a", event_name: "new", event_data: "B1", event_metadata: 1}
|
16
|
+
e << {aggregate_version: 2, aggregate_id: "c0456e26-e29a-4f67-92fa-130b3a31a39a", event_name: "foo", event_data: "B2", event_metadata: 2}
|
17
|
+
e << {aggregate_version: 3, aggregate_id: "c0456e26-e29a-4f67-92fa-130b3a31a39a", event_name: "bar", event_data: "B3", event_metadata: 3}
|
18
18
|
end
|
19
19
|
let(:aggregate_id_b) {"c0456e26-1234-4f67-92fa-130b3a31a39a"}
|
20
20
|
let(:test_events_c) do
|
21
21
|
e = []
|
22
|
-
e << {aggregate_version: 1, event_name: "new", event_data: "C1", event_metadata: 4}
|
22
|
+
e << {aggregate_version: 1, aggregate_id: "c0456e26-e29a-4f67-92fa-130b3a31a39a", event_name: "new", event_data: "C1", event_metadata: 4}
|
23
23
|
end
|
24
24
|
let(:test_events_c_2) do
|
25
25
|
e = []
|
26
|
-
e << {aggregate_version: 2, event_name: "flubber", event_data: "C2", event_metadata: 6}
|
26
|
+
e << {aggregate_version: 2, aggregate_id: "c0456e26-e29a-4f67-92fa-130b3a31a39a", event_name: "flubber", event_data: "C2", event_metadata: 6}
|
27
27
|
end
|
28
28
|
let(:aggregate_id_c) {"c0456e26-2345-4f67-92fa-130b3a31a39a"}
|
29
29
|
before(:each) do
|
data/spec/saving_events_spec.rb
CHANGED
@@ -6,9 +6,9 @@ module SandthornDriverSequel
|
|
6
6
|
context "when saving a prefectly sane event stream" do
|
7
7
|
let(:test_events) do
|
8
8
|
e = []
|
9
|
-
e << {aggregate_version: 1,
|
10
|
-
e << {aggregate_version: 2, event_name: "foo", event_data: "noop", event_metadata: nil}
|
11
|
-
e << {aggregate_version: 3, event_name: "flubber", event_data: "noop", event_metadata: nil}
|
9
|
+
e << {aggregate_version: 1, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "new", event_data: {}, event_metadata: [1,2,3]}
|
10
|
+
e << {aggregate_version: 2, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "foo", event_data: "noop", event_metadata: nil}
|
11
|
+
e << {aggregate_version: 3, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "flubber", event_data: "noop", event_metadata: nil}
|
12
12
|
end
|
13
13
|
|
14
14
|
let(:aggregate_id) { "c0456e26-e29a-4f67-92fa-130b3a31a39a" }
|
@@ -28,7 +28,7 @@ module SandthornDriverSequel
|
|
28
28
|
expect(event[:event_name]).to eql("new")
|
29
29
|
expect(event[:aggregate_id]).to eql aggregate_id
|
30
30
|
expect(event[:aggregate_version]).to eql 1
|
31
|
-
expect(event[:sequence_number]).to be_a(
|
31
|
+
expect(event[:sequence_number]).to be_a(Integer)
|
32
32
|
expect(event[:timestamp]).to be_a(Time)
|
33
33
|
end
|
34
34
|
end
|
@@ -36,13 +36,13 @@ module SandthornDriverSequel
|
|
36
36
|
context "when saving two aggregate types" do
|
37
37
|
let(:test_events_1) do
|
38
38
|
e = []
|
39
|
-
e << {aggregate_version: 1,
|
40
|
-
e << {aggregate_version: 2, event_name: "foo", event_data: "noop", event_metadata: nil}
|
41
|
-
e << {aggregate_version: 3, event_name: "flubber", event_data: "noop", event_metadata: nil}
|
39
|
+
e << {aggregate_version: 1, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "new", event_data: {}, event_metadata: nil}
|
40
|
+
e << {aggregate_version: 2, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "foo", event_data: "noop", event_metadata: nil}
|
41
|
+
e << {aggregate_version: 3, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "flubber", event_data: "noop", event_metadata: nil}
|
42
42
|
end
|
43
43
|
let(:test_events_2) do
|
44
44
|
e = []
|
45
|
-
e << {aggregate_version: 1,
|
45
|
+
e << {aggregate_version: 1, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "new", event_data: {}, event_metadata: nil}
|
46
46
|
end
|
47
47
|
let(:aggregate_id_1) {"c0456e26-e29a-4f67-92fa-130b3a31a39a"}
|
48
48
|
let(:aggregate_id_2) {"c0456e26-e92b-4f67-92fa-130b3a31b93b"}
|
@@ -65,9 +65,9 @@ module SandthornDriverSequel
|
|
65
65
|
context "when saving events that have no aggregate_version" do
|
66
66
|
let(:test_events) do
|
67
67
|
e = []
|
68
|
-
e << {aggregate_version: nil,
|
69
|
-
e << {aggregate_version: nil, event_name: "foo", event_data: "noop", event_metadata: nil}
|
70
|
-
e << {aggregate_version: nil, event_name: "flubber", event_data: "noop", event_metadata: nil}
|
68
|
+
e << {aggregate_version: nil, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "new", event_data: {}, event_metadata: nil}
|
69
|
+
e << {aggregate_version: nil, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "foo", event_data: "noop", event_metadata: nil}
|
70
|
+
e << {aggregate_version: nil, aggregate_id: "0a74e545-be84-4506-8b0a-73e947856327", event_name: "flubber", event_data: "noop", event_metadata: nil}
|
71
71
|
end
|
72
72
|
|
73
73
|
let(:aggregate_id) { "c0456e26-e29a-4f67-92fa-130b3a31a39a" }
|
@@ -87,7 +87,7 @@ module SandthornDriverSequel
|
|
87
87
|
expect(event[:event_name]).to eql("new")
|
88
88
|
expect(event[:aggregate_id]).to eql aggregate_id
|
89
89
|
expect(event[:aggregate_version]).to eql 1
|
90
|
-
expect(event[:sequence_number]).to be_a(
|
90
|
+
expect(event[:sequence_number]).to be_a(Integer)
|
91
91
|
expect(event[:timestamp]).to be_a(Time)
|
92
92
|
end
|
93
93
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sandthorn_driver_sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lars Krantz
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2018-06-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -223,7 +223,6 @@ files:
|
|
223
223
|
- spec/db/.keep
|
224
224
|
- spec/driver_interface_spec.rb
|
225
225
|
- spec/event_access_spec.rb
|
226
|
-
- spec/event_store_spec.rb
|
227
226
|
- spec/event_store_with_context_spec.rb
|
228
227
|
- spec/get_events_spec.rb
|
229
228
|
- spec/migration_specifying_domain_spec.rb
|
@@ -250,7 +249,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
250
249
|
version: '0'
|
251
250
|
requirements: []
|
252
251
|
rubyforge_project:
|
253
|
-
rubygems_version: 2.
|
252
|
+
rubygems_version: 2.6.14
|
254
253
|
signing_key:
|
255
254
|
specification_version: 4
|
256
255
|
summary: Sequel driver for Sandthorn
|
@@ -261,7 +260,6 @@ test_files:
|
|
261
260
|
- spec/db/.keep
|
262
261
|
- spec/driver_interface_spec.rb
|
263
262
|
- spec/event_access_spec.rb
|
264
|
-
- spec/event_store_spec.rb
|
265
263
|
- spec/event_store_with_context_spec.rb
|
266
264
|
- spec/get_events_spec.rb
|
267
265
|
- spec/migration_specifying_domain_spec.rb
|
data/spec/event_store_spec.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
# require 'spec_helper'
|
2
|
-
# module SandthornDriverSequel
|
3
|
-
# describe EventStore do
|
4
|
-
|
5
|
-
# before(:each) { prepare_for_test context: nil; }
|
6
|
-
# let(:event_store) { SandthornDriverSequel.driver_from_url url: event_store_url }
|
7
|
-
|
8
|
-
# describe("when getting the same data from find and aggregate_events") do
|
9
|
-
# let(:test_events) do
|
10
|
-
# e = []
|
11
|
-
# e << {aggregate_version: 1, event_name: "new", event_data: {:attribute_deltas=>[{:attribute_name=>"aggregate_id", :old_value=>nil, :new_value=>aggregate_id}]}, event_meta_data: nil}
|
12
|
-
# e << {aggregate_version: 2, event_name: "foo", event_data: "noop", event_meta_data: nil}
|
13
|
-
# e << {aggregate_version: 3, event_name: "flubber", event_data: "noop", event_meta_data: nil}
|
14
|
-
# end
|
15
|
-
# let(:aggregate_id) {"c0456e26-e29a-4f67-92fa-130b3a31a39b"}
|
16
|
-
|
17
|
-
# before do
|
18
|
-
# event_store.save_events test_events, aggregate_id, String
|
19
|
-
# end
|
20
|
-
|
21
|
-
# context "all" do
|
22
|
-
|
23
|
-
# let(:test_events_2) do
|
24
|
-
# e = []
|
25
|
-
# e << {aggregate_version: 1, event_name: "new", event_data: {:attribute_deltas=>[{:attribute_name=>"aggregate_id", :old_value=>nil, :new_value=>aggregate_id_2}]}, event_meta_data: nil}
|
26
|
-
# e << {aggregate_version: 2, event_name: "foo", event_data: "noop", event_meta_data: nil}
|
27
|
-
# e << {aggregate_version: 3, event_name: "flubber", event_data: "noop", event_meta_data: nil}
|
28
|
-
# end
|
29
|
-
# let(:aggregate_id_2) {"d0456e26-e29a-4f67-92fa-130b3a31a39b"}
|
30
|
-
|
31
|
-
# before do
|
32
|
-
# event_store.save_events test_events_2, aggregate_id_2, String
|
33
|
-
# end
|
34
|
-
|
35
|
-
# let(:all_events) do
|
36
|
-
# event_store.all String
|
37
|
-
# end
|
38
|
-
|
39
|
-
# it "should get two arrays of events" do
|
40
|
-
# expect(all_events.length).to eql 2
|
41
|
-
# end
|
42
|
-
|
43
|
-
# end
|
44
|
-
# end
|
45
|
-
# end
|
46
|
-
# end
|