ruby_event_store-active_record 2.12.0 → 2.13.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/active_record/batch_enumerator.rb +2 -2
- data/lib/ruby_event_store/active_record/event_repository_reader.rb +1 -1
- data/lib/ruby_event_store/active_record/generators/database_adapter.rb +11 -12
- data/lib/ruby_event_store/active_record/generators/foreign_key_on_event_id_migration_generator.rb +11 -11
- data/lib/ruby_event_store/active_record/generators/rails_foreign_key_on_event_id_migration_generator.rb +6 -5
- data/lib/ruby_event_store/active_record/generators/templates/add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb +1 -1
- data/lib/ruby_event_store/active_record/generators/templates/mysql/add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb +1 -1
- data/lib/ruby_event_store/active_record/generators/templates/postgres/add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb +1 -1
- data/lib/ruby_event_store/active_record/generators/templates/postgres/validate_add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb +1 -1
- data/lib/ruby_event_store/active_record/tasks/migration_tasks.rake +37 -10
- data/lib/ruby_event_store/active_record/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 844a72fb4397a85af4951552a503d02f3f46fee88add52b3d4da559da0a578e1
|
4
|
+
data.tar.gz: c09cd8f7af18e4b3a276c09efa2a31f4e3ee5e62d29394f7022ab83ab7763ae5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 523f386852a08972217416c04335113e99f8c9bbe167100aed3035bc39e866f83d4cafb59d270ef314fbe974f2e1f23090479407eabe6bb44cf39382e0e953a8
|
7
|
+
data.tar.gz: a1974be5b9e5fe233e9dc27f23e98b4140bc51dced795a61f1cfc714d3af959c6fc6a5da40fd6c5cd508f408fa5a24b2840e7e06a435807c981cd2887ba9133c
|
@@ -17,8 +17,8 @@ module RubyEventStore
|
|
17
17
|
batch_limit = [batch_size, total_limit - batch_offset].min
|
18
18
|
results, offset_id = reader.call(offset_id, batch_limit)
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
yield results if results.any?
|
21
|
+
break if results.size < batch_size
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -96,7 +96,7 @@ module RubyEventStore
|
|
96
96
|
stream = stream.where(newer_than_or_equal_condition(spec)) if spec.newer_than_or_equal
|
97
97
|
stream.order(id: order(spec))
|
98
98
|
else
|
99
|
-
stream = @stream_klass.
|
99
|
+
stream = @stream_klass.includes(:event).where(stream: spec.stream.name)
|
100
100
|
stream = stream.where(event_id: spec.with_ids) if spec.with_ids?
|
101
101
|
stream = stream.joins(:event).where(@event_klass.table_name => { event_type: spec.with_types }) if spec.with_types?
|
102
102
|
stream = stream.joins(:event).order(as_at(spec)) if spec.time_sort_by_as_at?
|
@@ -6,13 +6,13 @@ module RubyEventStore
|
|
6
6
|
InvalidDataTypeForAdapter = Class.new(StandardError)
|
7
7
|
|
8
8
|
class DatabaseAdapter
|
9
|
-
|
9
|
+
NONE = Object.new.freeze
|
10
10
|
|
11
11
|
class PostgreSQL < self
|
12
12
|
SUPPORTED_DATA_TYPES = %w[binary json jsonb].freeze
|
13
13
|
|
14
|
-
def
|
15
|
-
|
14
|
+
def adapter_name
|
15
|
+
"postgresql"
|
16
16
|
end
|
17
17
|
|
18
18
|
def template_directory
|
@@ -23,8 +23,8 @@ module RubyEventStore
|
|
23
23
|
class MySQL < self
|
24
24
|
SUPPORTED_DATA_TYPES = %w[binary json].freeze
|
25
25
|
|
26
|
-
def
|
27
|
-
|
26
|
+
def adapter_name
|
27
|
+
"mysql2"
|
28
28
|
end
|
29
29
|
|
30
30
|
def template_directory
|
@@ -35,21 +35,20 @@ module RubyEventStore
|
|
35
35
|
class SQLite < self
|
36
36
|
SUPPORTED_DATA_TYPES = %w[binary].freeze
|
37
37
|
|
38
|
-
def
|
39
|
-
|
38
|
+
def adapter_name
|
39
|
+
"sqlite"
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
def initialize(
|
43
|
+
def initialize(data_type = NONE)
|
44
44
|
raise UnsupportedAdapter if instance_of?(DatabaseAdapter)
|
45
45
|
|
46
46
|
validate_data_type!(data_type)
|
47
47
|
|
48
|
-
@adapter_name = adapter_name
|
49
48
|
@data_type = data_type
|
50
49
|
end
|
51
50
|
|
52
|
-
attr_reader :
|
51
|
+
attr_reader :data_type
|
53
52
|
|
54
53
|
def supported_data_types
|
55
54
|
self.class::SUPPORTED_DATA_TYPES
|
@@ -68,7 +67,7 @@ module RubyEventStore
|
|
68
67
|
def template_directory
|
69
68
|
end
|
70
69
|
|
71
|
-
def self.from_string(adapter_name, data_type =
|
70
|
+
def self.from_string(adapter_name, data_type = NONE)
|
72
71
|
raise NoMethodError unless eql?(DatabaseAdapter)
|
73
72
|
|
74
73
|
case adapter_name.to_s.downcase
|
@@ -86,7 +85,7 @@ module RubyEventStore
|
|
86
85
|
private
|
87
86
|
|
88
87
|
def validate_data_type!(data_type)
|
89
|
-
if !data_type.eql?(
|
88
|
+
if !data_type.eql?(NONE) && !supported_data_types.include?(data_type)
|
90
89
|
raise InvalidDataTypeForAdapter,
|
91
90
|
"#{class_name} doesn't support #{data_type.inspect}. Supported types are: #{supported_data_types.join(", ")}."
|
92
91
|
end
|
data/lib/ruby_event_store/active_record/generators/foreign_key_on_event_id_migration_generator.rb
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|
module RubyEventStore
|
4
4
|
module ActiveRecord
|
5
5
|
class ForeignKeyOnEventIdMigrationGenerator
|
6
|
-
def call(
|
7
|
-
|
8
|
-
each_migration(database_adapter) do |migration_name|
|
9
|
-
path = build_path(migration_path, migration_name)
|
6
|
+
def call(database_adapter, migration_path)
|
7
|
+
time = Time.now
|
8
|
+
each_migration(database_adapter) do |migration_name, i|
|
9
|
+
path = build_path(migration_path, migration_name, time + i)
|
10
10
|
write_to_file(path, migration_code(database_adapter, migration_name))
|
11
11
|
end
|
12
12
|
end
|
@@ -22,7 +22,7 @@ module RubyEventStore
|
|
22
22
|
]
|
23
23
|
else
|
24
24
|
['add_foreign_key_on_event_id_to_event_store_events_in_streams']
|
25
|
-
end.each(&block)
|
25
|
+
end.each.with_index(&block)
|
26
26
|
end
|
27
27
|
|
28
28
|
def absolute_path(path)
|
@@ -45,16 +45,16 @@ module RubyEventStore
|
|
45
45
|
::ActiveRecord::Migration.current_version
|
46
46
|
end
|
47
47
|
|
48
|
-
def timestamp
|
49
|
-
Time.now.strftime("%Y%m%d%H%M%S")
|
50
|
-
end
|
51
|
-
|
52
48
|
def write_to_file(path, migration_code)
|
53
49
|
File.write(path, migration_code)
|
54
50
|
end
|
55
51
|
|
56
|
-
def build_path(migration_path, migration_name)
|
57
|
-
File.join("#{migration_path}", "#{
|
52
|
+
def build_path(migration_path, migration_name, time)
|
53
|
+
File.join("#{migration_path}", "#{migration_verion_number(time)}_#{migration_name}.rb")
|
54
|
+
end
|
55
|
+
|
56
|
+
def migration_verion_number(time)
|
57
|
+
time.strftime("%Y%m%d%H%M%S")
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -27,13 +27,14 @@ if defined?(Rails::Generators::Base)
|
|
27
27
|
def create_migration
|
28
28
|
case @database_adapter
|
29
29
|
when DatabaseAdapter::PostgreSQL
|
30
|
+
time = Time.now
|
30
31
|
template "#{@database_adapter.template_directory}add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb",
|
31
|
-
"db/migrate/#{
|
32
|
+
"db/migrate/#{migration_verion_number(time)}_add_foreign_key_on_event_id_to_event_store_events_in_streams.rb"
|
32
33
|
template "#{@database_adapter.template_directory}validate_add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb",
|
33
|
-
"db/migrate/#{
|
34
|
+
"db/migrate/#{migration_verion_number(time + 1)}_validate_add_foreign_key_on_event_id_to_event_store_events_in_streams.rb"
|
34
35
|
else
|
35
36
|
template "#{@database_adapter.template_directory}add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb",
|
36
|
-
"db/migrate/#{
|
37
|
+
"db/migrate/#{migration_verion_number(Time.now)}_add_foreign_key_on_event_id_to_event_store_events_in_streams.rb"
|
37
38
|
end
|
38
39
|
end
|
39
40
|
|
@@ -47,8 +48,8 @@ if defined?(Rails::Generators::Base)
|
|
47
48
|
::ActiveRecord::Migration.current_version
|
48
49
|
end
|
49
50
|
|
50
|
-
def
|
51
|
-
|
51
|
+
def migration_verion_number(time)
|
52
|
+
time.strftime("%Y%m%d%H%M%S")
|
52
53
|
end
|
53
54
|
end
|
54
55
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class
|
3
|
+
class AddForeignKeyOnEventIdToEventStoreEventsInStreams < ActiveRecord::Migration[<%= migration_version %>]
|
4
4
|
def change
|
5
5
|
add_foreign_key :event_store_events_in_streams, :event_store_events, column: :event_id, primary_key: :event_id, if_not_exists: true
|
6
6
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class
|
3
|
+
class AddForeignKeyOnEventIdToEventStoreEventsInStreams < ActiveRecord::Migration[<%= migration_version %>]
|
4
4
|
def change
|
5
5
|
add_foreign_key :event_store_events_in_streams, :event_store_events, column: :event_id, primary_key: :event_id, if_not_exists: true
|
6
6
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class
|
3
|
+
class AddForeignKeyOnEventIdToEventStoreEventsInStreams < ActiveRecord::Migration[<%= migration_version %>]
|
4
4
|
def change
|
5
5
|
add_foreign_key :event_store_events_in_streams, :event_store_events, column: :event_id, primary_key: :event_id, if_not_exists: true, validate: false
|
6
6
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
class
|
3
|
+
class ValidateAddForeignKeyOnEventIdToEventStoreEventsInStreams < ActiveRecord::Migration[<%= migration_version %>]
|
4
4
|
def change
|
5
5
|
validate_foreign_key :event_store_events_in_streams, :event_store_events, column: :event_id, primary_key: :event_id
|
6
6
|
end
|
@@ -2,33 +2,60 @@ require_relative "../generators/migration_generator"
|
|
2
2
|
|
3
3
|
desc "Generate migration"
|
4
4
|
task "db:migrations:copy" do
|
5
|
-
|
6
|
-
|
7
|
-
::ActiveRecord::Base.establish_connection(ENV["DATABASE_URL"])
|
8
|
-
database_adapter =
|
9
|
-
RubyEventStore::ActiveRecord::DatabaseAdapter.from_string(::ActiveRecord::Base.connection.adapter_name, data_type)
|
5
|
+
task = MigrationTask.new("db:migrations:copy")
|
6
|
+
task.establish_connection
|
10
7
|
|
11
8
|
path =
|
12
|
-
RubyEventStore::ActiveRecord::MigrationGenerator.new.call(
|
9
|
+
RubyEventStore::ActiveRecord::MigrationGenerator.new.call(task.adapter, task.migration_path)
|
13
10
|
|
14
11
|
puts "Migration file created #{path}"
|
15
12
|
end
|
16
13
|
|
17
14
|
desc "Generate migration for missing event_id index"
|
18
15
|
task "db:migrations:fix_missing_event_id_index" do
|
19
|
-
|
16
|
+
task = MigrationTask.new("db:migrations:fix_missing_event_id_index")
|
17
|
+
task.establish_connection
|
20
18
|
|
21
|
-
path = RubyEventStore::ActiveRecord::EventIdIndexMigrationGenerator.new.call(
|
19
|
+
path = RubyEventStore::ActiveRecord::EventIdIndexMigrationGenerator.new.call(task.migration_path)
|
22
20
|
|
23
21
|
puts "Migration file created #{path}"
|
24
22
|
end
|
25
23
|
|
26
24
|
desc "Generate migration for adding foreign key on event_store_events_in_streams.event_id"
|
27
25
|
task "db:migrations:add_foreign_key_on_event_id" do
|
28
|
-
|
26
|
+
task = MigrationTask.new("db:migrations:add_foreign_key_on_event_id")
|
27
|
+
task.establish_connection
|
29
28
|
|
30
29
|
path =
|
31
|
-
RubyEventStore::ActiveRecord::ForeignKeyOnEventIdMigrationGenerator.new.call(
|
30
|
+
RubyEventStore::ActiveRecord::ForeignKeyOnEventIdMigrationGenerator.new.call(task.adapter, task.migration_path)
|
32
31
|
|
33
32
|
puts "Migration file created #{path}"
|
34
33
|
end
|
34
|
+
|
35
|
+
class MigrationTask
|
36
|
+
def initialize(
|
37
|
+
task,
|
38
|
+
database_url: ENV["DATABASE_URL"],
|
39
|
+
data_type: ENV["DATA_TYPE"],
|
40
|
+
migration_path: ENV["MIGRATION_PATH"]
|
41
|
+
)
|
42
|
+
@task = task
|
43
|
+
@data_type = data_type
|
44
|
+
@migration_path = migration_path
|
45
|
+
@database_url = database_url
|
46
|
+
end
|
47
|
+
|
48
|
+
def establish_connection
|
49
|
+
::ActiveRecord::Base.establish_connection(@database_url)
|
50
|
+
end
|
51
|
+
|
52
|
+
def adapter
|
53
|
+
data_type = @data_type || raise("Specify data type (binary, json, jsonb): rake #{@task} DATA_TYPE=json")
|
54
|
+
|
55
|
+
RubyEventStore::ActiveRecord::DatabaseAdapter.from_string(::ActiveRecord::Base.connection.adapter_name, data_type)
|
56
|
+
end
|
57
|
+
|
58
|
+
def migration_path
|
59
|
+
@migration_path || "db/migrate"
|
60
|
+
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_event_store-active_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arkency
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby_event_store
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.13.0
|
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: 2.
|
26
|
+
version: 2.13.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activerecord
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: '0'
|
106
106
|
requirements: []
|
107
|
-
rubygems_version: 3.
|
107
|
+
rubygems_version: 3.3.7
|
108
108
|
signing_key:
|
109
109
|
specification_version: 4
|
110
110
|
summary: Persistent event repository implementation for RubyEventStore based on ActiveRecord
|