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