ruby_event_store-rom 0.39.0 → 0.40.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/rom.rb +17 -15
- data/lib/ruby_event_store/rom/adapters/memory/relations/stream_entries.rb +2 -2
- data/lib/ruby_event_store/rom/adapters/memory/unit_of_work.rb +1 -1
- data/lib/ruby_event_store/rom/adapters/sql/changesets/update_events.rb +1 -1
- data/lib/ruby_event_store/rom/adapters/sql/tasks/migration_tasks.rake +1 -1
- data/lib/ruby_event_store/rom/event_repository.rb +2 -2
- data/lib/ruby_event_store/rom/memory.rb +1 -1
- data/lib/ruby_event_store/rom/sql.rb +4 -4
- data/lib/ruby_event_store/rom/types.rb +10 -1
- data/lib/ruby_event_store/rom/unit_of_work.rb +1 -1
- data/lib/ruby_event_store/rom/version.rb +1 -1
- data/lib/ruby_event_store/spec/rom/event_repository_lint.rb +7 -7
- data/lib/ruby_event_store/spec/rom/relations/events_lint.rb +3 -3
- data/lib/ruby_event_store/spec/rom/relations/stream_entries_lint.rb +3 -3
- data/lib/ruby_event_store/spec/rom/spec_helper_lint.rb +3 -3
- data/lib/ruby_event_store/spec/rom/unit_of_work_lint.rb +3 -3
- data/ruby_event_store-rom.gemspec +9 -7
- metadata +27 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93e5cd45e5a2b089e08face73b1208bea7372beccea31eeb5a93853daaa0c3af
|
4
|
+
data.tar.gz: c5140402ae0991b2659b90b4f58e8b907e84fcb4a3cb55c6e9b5edf76ce1aeb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b45bdc9846968d2d34250bdce821c2dbeeb381651ef62e35ddfa4f4eb31def75746c744ee6f6b9518dcf68663b23947a34bb5de059147653efd94c53286285fc
|
7
|
+
data.tar.gz: a0ad08b7f19f8854a0e25271897ea1ec418cb66baa5003c329df7aedbfae8bd6bd3567e1c07264c975d0eefd44fb5dfe12d533bcb93ea60b16cf268d93fad0e1
|
data/lib/ruby_event_store/rom.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'rom-changeset'
|
2
|
-
require 'rom-mapper'
|
3
2
|
require 'rom-repository'
|
4
3
|
require 'ruby_event_store'
|
5
4
|
require 'ruby_event_store/rom/types'
|
@@ -14,40 +13,43 @@ require 'ruby_event_store/rom/version'
|
|
14
13
|
module RubyEventStore
|
15
14
|
module ROM
|
16
15
|
class Env
|
17
|
-
|
16
|
+
include Dry::Container::Mixin
|
18
17
|
|
19
|
-
|
20
|
-
@container = container
|
18
|
+
attr_accessor :rom_container
|
21
19
|
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
def initialize(rom_container)
|
21
|
+
@rom_container = rom_container
|
22
|
+
|
23
|
+
register(:unique_violation_error_handlers, Set.new)
|
24
|
+
register(:not_found_error_handlers, Set.new)
|
25
|
+
register(:logger, Logger.new(STDOUT).tap { |logger| logger.level = Logger::WARN })
|
25
26
|
end
|
26
27
|
|
27
28
|
def logger
|
28
|
-
|
29
|
+
resolve(:logger)
|
29
30
|
end
|
30
31
|
|
31
32
|
def unit_of_work(&block)
|
32
|
-
options =
|
33
|
+
options = resolve(:unit_of_work_options).dup
|
33
34
|
options.delete(:class) { UnitOfWork }.new(rom: self).call(**options, &block)
|
34
35
|
end
|
35
36
|
|
36
37
|
def register_unit_of_work_options(options)
|
37
|
-
|
38
|
+
register(:unit_of_work_options, options)
|
38
39
|
end
|
39
40
|
|
40
41
|
def register_error_handler(type, handler)
|
41
|
-
|
42
|
+
resolve(:"#{type}_error_handlers") << handler
|
42
43
|
end
|
43
44
|
|
44
45
|
def handle_error(type, *args, swallow: [])
|
45
46
|
yield
|
46
|
-
rescue StandardError =>
|
47
|
+
rescue StandardError => e
|
47
48
|
begin
|
48
|
-
|
49
|
-
raise
|
49
|
+
resolve(:"#{type}_error_handlers").each { |h| h.call(e, *args) }
|
50
|
+
raise e
|
50
51
|
rescue *swallow
|
52
|
+
# swallow
|
51
53
|
end
|
52
54
|
end
|
53
55
|
end
|
@@ -94,7 +96,7 @@ module RubyEventStore
|
|
94
96
|
end
|
95
97
|
}
|
96
98
|
|
97
|
-
find_adapters(env.
|
99
|
+
find_adapters(env.rom_container.gateways).each do |adapter|
|
98
100
|
adapter.configure(env)
|
99
101
|
end
|
100
102
|
end
|
@@ -4,9 +4,9 @@ module RubyEventStore
|
|
4
4
|
module Relations
|
5
5
|
class StreamEntries < ::ROM::Relation[:memory]
|
6
6
|
schema(:stream_entries) do
|
7
|
-
attribute(:id, ::ROM::Types::Strict::
|
7
|
+
attribute(:id, ::ROM::Types::Strict::Integer.meta(primary_key: true).default { RubyEventStore::ROM::Memory.fetch_next_id })
|
8
8
|
attribute :stream, ::ROM::Types::Strict::String
|
9
|
-
attribute :position, ::ROM::Types::Strict::
|
9
|
+
attribute :position, ::ROM::Types::Strict::Integer.optional
|
10
10
|
attribute :event_id, ::ROM::Types::Strict::String.meta(foreign_key: true, relation: :events)
|
11
11
|
attribute :created_at, RubyEventStore::ROM::Types::DateTime
|
12
12
|
|
@@ -13,7 +13,7 @@ module RubyEventStore
|
|
13
13
|
begin
|
14
14
|
until changesets.empty?
|
15
15
|
changeset = changesets.shift
|
16
|
-
relation = env.
|
16
|
+
relation = env.rom_container.relations[changeset.relation.name]
|
17
17
|
|
18
18
|
committed << [changeset, relation]
|
19
19
|
|
@@ -5,7 +5,7 @@ module RubyEventStore
|
|
5
5
|
class UpdateEvents < ::ROM::Changeset::Create
|
6
6
|
include ROM::Changesets::UpdateEvents::Defaults
|
7
7
|
|
8
|
-
UPSERT_COLUMNS = %i[event_type data metadata created_at]
|
8
|
+
UPSERT_COLUMNS = %i[event_type data metadata created_at].freeze
|
9
9
|
|
10
10
|
def commit
|
11
11
|
if SQL.supports_on_duplicate_key_update?(relation.dataset.db)
|
@@ -5,7 +5,7 @@ MIGRATIONS_PATH = 'db/migrate'.freeze
|
|
5
5
|
desc 'Setup ROM EventRespository environment'
|
6
6
|
task 'db:setup' do
|
7
7
|
Dir.chdir(Dir.pwd)
|
8
|
-
ROM::SQL::RakeSupport.env = ::RubyEventStore::ROM.configure(:sql).
|
8
|
+
ROM::SQL::RakeSupport.env = ::RubyEventStore::ROM.configure(:sql).rom_container
|
9
9
|
end
|
10
10
|
|
11
11
|
desc 'Copy RubyEventStore SQL migrations to db/migrate'
|
@@ -13,8 +13,8 @@ module RubyEventStore
|
|
13
13
|
raise ArgumentError, 'Must specify rom' unless rom && rom.instance_of?(Env)
|
14
14
|
|
15
15
|
@rom = rom
|
16
|
-
@events = Repositories::Events.new(rom.
|
17
|
-
@stream_entries = Repositories::StreamEntries.new(rom.
|
16
|
+
@events = Repositories::Events.new(rom.rom_container)
|
17
|
+
@stream_entries = Repositories::StreamEntries.new(rom.rom_container)
|
18
18
|
end
|
19
19
|
|
20
20
|
def append_to_stream(events, stream, expected_version)
|
@@ -63,7 +63,7 @@ module RubyEventStore
|
|
63
63
|
|
64
64
|
def supports_upsert?(db)
|
65
65
|
supports_on_duplicate_key_update?(db) ||
|
66
|
-
|
66
|
+
supports_insert_conflict_update?(db)
|
67
67
|
end
|
68
68
|
|
69
69
|
def supports_on_duplicate_key_update?(db)
|
@@ -76,7 +76,7 @@ module RubyEventStore
|
|
76
76
|
true
|
77
77
|
when :sqlite
|
78
78
|
# Sqlite 3.24.0+ supports PostgreSQL upsert syntax
|
79
|
-
db.sqlite_version >=
|
79
|
+
db.sqlite_version >= 32_400
|
80
80
|
else
|
81
81
|
false
|
82
82
|
end
|
@@ -91,7 +91,7 @@ module RubyEventStore
|
|
91
91
|
:sql,
|
92
92
|
database_uri,
|
93
93
|
max_connections: database_uri =~ /sqlite/ ? 1 : 5,
|
94
|
-
preconnect: :concurrently
|
94
|
+
preconnect: :concurrently
|
95
95
|
# sql_mode: %w[NO_AUTO_VALUE_ON_ZERO STRICT_ALL_TABLES]
|
96
96
|
)
|
97
97
|
# $stdout.sync = true
|
@@ -113,7 +113,7 @@ module RubyEventStore
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def gateway
|
116
|
-
env.
|
116
|
+
env.rom_container.gateways.fetch(:default)
|
117
117
|
end
|
118
118
|
|
119
119
|
def gateway_type?(name)
|
@@ -2,7 +2,16 @@ module RubyEventStore
|
|
2
2
|
module ROM
|
3
3
|
module Types
|
4
4
|
DateTime = ::ROM::Types::DateTime
|
5
|
-
.constructor
|
5
|
+
.constructor do |value|
|
6
|
+
case value
|
7
|
+
when nil
|
8
|
+
Dry::Core::Constants::Undefined
|
9
|
+
when ::String
|
10
|
+
::DateTime.iso8601(value)
|
11
|
+
else
|
12
|
+
value
|
13
|
+
end
|
14
|
+
end
|
6
15
|
.default { ::DateTime.now.new_offset(0) }
|
7
16
|
|
8
17
|
SerializedRecordSerializer = ::ROM::Types::String
|
@@ -6,8 +6,8 @@ module RubyEventStore::ROM
|
|
6
6
|
subject(:repository) { repository_class.new(rom: env) }
|
7
7
|
|
8
8
|
let(:env) { rom_helper.env }
|
9
|
-
let(:
|
10
|
-
let(:rom_db) {
|
9
|
+
let(:rom_container) { env.rom_container }
|
10
|
+
let(:rom_db) { rom_container.gateways[:default] }
|
11
11
|
|
12
12
|
around(:each) do |example|
|
13
13
|
rom_helper.run_lifecycle { example.run }
|
@@ -68,7 +68,7 @@ module RubyEventStore::ROM
|
|
68
68
|
RubyEventStore::SRecord.new(event_id: u3 = SecureRandom.uuid)
|
69
69
|
]
|
70
70
|
|
71
|
-
repo = Repositories::Events.new(
|
71
|
+
repo = Repositories::Events.new(rom_container)
|
72
72
|
repo.create_changeset(events).commit
|
73
73
|
|
74
74
|
expect(repo.events.to_a.size).to eq(3)
|
@@ -100,7 +100,7 @@ module RubyEventStore::ROM
|
|
100
100
|
RubyEventStore::SRecord.new(event_id: u3 = SecureRandom.uuid)
|
101
101
|
]
|
102
102
|
|
103
|
-
repo = Repositories::Events.new(
|
103
|
+
repo = Repositories::Events.new(rom_container)
|
104
104
|
repo.create_changeset(events).commit
|
105
105
|
|
106
106
|
expect(repo.events.to_a.size).to eq(3)
|
@@ -145,9 +145,9 @@ module RubyEventStore::ROM
|
|
145
145
|
|
146
146
|
# TODO: Port from AR to ROM
|
147
147
|
def additional_limited_concurrency_for_auto_check
|
148
|
-
positions =
|
149
|
-
|
150
|
-
|
148
|
+
positions = rom_container.relations[:stream_entries]
|
149
|
+
.ordered(:forward, default_stream)
|
150
|
+
.map { |entity| entity[:position] }
|
151
151
|
expect(positions).to eq((0..positions.size - 1).to_a)
|
152
152
|
end
|
153
153
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
RSpec.shared_examples :events_relation do |_relation_class|
|
2
|
-
subject(:relation) {
|
2
|
+
subject(:relation) { rom_container.relations[:events] }
|
3
3
|
|
4
4
|
let(:env) { rom_helper.env }
|
5
|
-
let(:
|
6
|
-
let(:rom_db) {
|
5
|
+
let(:rom_container) { env.rom_container }
|
6
|
+
let(:rom_db) { rom_container.gateways[:default] }
|
7
7
|
|
8
8
|
around(:each) do |example|
|
9
9
|
rom_helper.run_lifecycle { example.run }
|
@@ -1,9 +1,9 @@
|
|
1
1
|
RSpec.shared_examples :stream_entries_relation do |_relation_class|
|
2
|
-
subject(:relation) {
|
2
|
+
subject(:relation) { rom_container.relations[:stream_entries] }
|
3
3
|
|
4
4
|
let(:env) { rom_helper.env }
|
5
|
-
let(:
|
6
|
-
let(:rom_db) {
|
5
|
+
let(:rom_container) { env.rom_container }
|
6
|
+
let(:rom_db) { rom_container.gateways[:default] }
|
7
7
|
|
8
8
|
around(:each) do |example|
|
9
9
|
rom_helper.run_lifecycle { example.run }
|
@@ -1,15 +1,15 @@
|
|
1
1
|
module RubyEventStore::ROM
|
2
2
|
RSpec.shared_examples :rom_spec_helper do |_rom_spec_helper_class|
|
3
3
|
let(:env) { rom_helper.env }
|
4
|
-
let(:
|
5
|
-
let(:rom_db) {
|
4
|
+
let(:rom_container) { env.rom_container }
|
5
|
+
let(:rom_db) { rom_container.gateways[:default] }
|
6
6
|
|
7
7
|
around(:each) do |example|
|
8
8
|
rom_helper.run_lifecycle { example.run }
|
9
9
|
end
|
10
10
|
|
11
11
|
specify '#env gives access to ROM container' do
|
12
|
-
expect(subject.env.
|
12
|
+
expect(subject.env.rom_container).to be_a(::ROM::Container)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -3,15 +3,15 @@ module RubyEventStore::ROM
|
|
3
3
|
subject(:unit_of_work) { unit_of_work_class.new(rom: env) }
|
4
4
|
|
5
5
|
let(:env) { rom_helper.env }
|
6
|
-
let(:
|
7
|
-
let(:rom_db) {
|
6
|
+
let(:v) { env.rom_container }
|
7
|
+
let(:rom_db) { rom_container.gateways[:default] }
|
8
8
|
|
9
9
|
around(:each) do |example|
|
10
10
|
rom_helper.run_lifecycle { example.run }
|
11
11
|
end
|
12
12
|
|
13
13
|
specify '#env gives access to ROM container' do
|
14
|
-
expect(subject.env.
|
14
|
+
expect(subject.env.rom_container).to be_a(::ROM::Container)
|
15
15
|
end
|
16
16
|
|
17
17
|
specify '#call to throw an exeption' do
|
@@ -24,12 +24,14 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
25
|
spec.require_paths = ['lib']
|
26
26
|
|
27
|
-
spec.
|
28
|
-
|
29
|
-
spec.add_dependency 'dry-container', '
|
30
|
-
spec.add_dependency '
|
31
|
-
spec.add_dependency '
|
32
|
-
spec.add_dependency 'rom-
|
33
|
-
spec.add_dependency '
|
27
|
+
spec.required_ruby_version = '>= 2.4'
|
28
|
+
|
29
|
+
spec.add_dependency 'dry-container', '>= 0.6'
|
30
|
+
spec.add_dependency 'dry-initializer', '>= 3.0'
|
31
|
+
spec.add_dependency 'dry-types', '>= 1.0'
|
32
|
+
spec.add_dependency 'rom-changeset', '>= 5.0'
|
33
|
+
spec.add_dependency 'rom-repository', '>= 5.0'
|
34
|
+
spec.add_dependency 'rom-sql', '>= 3.0'
|
35
|
+
spec.add_dependency 'ruby_event_store', '= 0.40.0'
|
34
36
|
spec.add_dependency 'sequel', '>= 5.11.0'
|
35
37
|
end
|
metadata
CHANGED
@@ -1,113 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_event_store-rom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.40.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Van Horn
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: dry-
|
14
|
+
name: dry-container
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0.6'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: dry-
|
28
|
+
name: dry-initializer
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
33
|
+
version: '3.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0
|
40
|
+
version: '3.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: dry-
|
42
|
+
name: dry-types
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '1.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '1.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rom-changeset
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '5.0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '5.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rom-repository
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '5.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '5.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rom-sql
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '3.0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '3.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: ruby_event_store
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
103
|
+
version: 0.40.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
110
|
+
version: 0.40.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: sequel
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -189,14 +189,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
189
189
|
requirements:
|
190
190
|
- - ">="
|
191
191
|
- !ruby/object:Gem::Version
|
192
|
-
version: '
|
192
|
+
version: '2.4'
|
193
193
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
194
|
requirements:
|
195
195
|
- - ">="
|
196
196
|
- !ruby/object:Gem::Version
|
197
197
|
version: '0'
|
198
198
|
requirements: []
|
199
|
-
rubygems_version: 3.0.
|
199
|
+
rubygems_version: 3.0.1
|
200
200
|
signing_key:
|
201
201
|
specification_version: 4
|
202
202
|
summary: ROM events repository for Ruby Event Store
|