ruby_event_store-active_record 3.0.1 → 3.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.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ruby_event_store/active_record/generators/event_id_index_migration_generator.rb +6 -21
  3. data/lib/ruby_event_store/active_record/generators/foreign_key_on_event_id_migration_generator.rb +3 -21
  4. data/lib/ruby_event_store/active_record/generators/migration_generator.rb +2 -20
  5. data/lib/ruby_event_store/active_record/generators/migration_generator_methods.rb +29 -0
  6. data/lib/ruby_event_store/active_record/generators/rails_event_id_index_migration_generator.rb +2 -10
  7. data/lib/ruby_event_store/active_record/generators/rails_foreign_key_on_event_id_migration_generator.rb +5 -17
  8. data/lib/ruby_event_store/active_record/generators/rails_generator_methods.rb +21 -0
  9. data/lib/ruby_event_store/active_record/generators/rails_migration_generator.rb +2 -12
  10. data/lib/ruby_event_store/active_record/generators/rails_stream_id_index_migration_generator.rb +36 -0
  11. data/lib/ruby_event_store/active_record/generators/rails_valid_at_index_migration_generator.rb +10 -10
  12. data/lib/ruby_event_store/active_record/generators/stream_id_index_migration_generator.rb +32 -0
  13. data/lib/ruby_event_store/active_record/generators/templates/add_stream_id_index_to_event_store_events_in_streams_template.erb +9 -0
  14. data/lib/ruby_event_store/active_record/generators/templates/add_valid_at_index_to_event_store_events_template.erb +4 -9
  15. data/lib/ruby_event_store/active_record/generators/templates/create_event_store_events_template.erb +2 -0
  16. data/lib/ruby_event_store/active_record/generators/templates/mysql/add_stream_id_index_to_event_store_events_in_streams_template.erb +10 -0
  17. data/lib/ruby_event_store/active_record/generators/templates/mysql/add_valid_at_index_to_event_store_events_template.erb +11 -0
  18. data/lib/ruby_event_store/active_record/generators/templates/mysql/create_event_store_events_template.erb +2 -0
  19. data/lib/ruby_event_store/active_record/generators/templates/postgres/add_stream_id_index_to_event_store_events_in_streams_template.erb +12 -0
  20. data/lib/ruby_event_store/active_record/generators/templates/postgres/add_valid_at_index_to_event_store_events_template.erb +13 -0
  21. data/lib/ruby_event_store/active_record/generators/templates/postgres/create_event_store_events_template.erb +2 -2
  22. data/lib/ruby_event_store/active_record/generators/valid_at_index_migration_generator.rb +9 -25
  23. data/lib/ruby_event_store/active_record/tasks/migration_tasks.rake +17 -2
  24. data/lib/ruby_event_store/active_record/version.rb +1 -1
  25. data/lib/ruby_event_store/active_record.rb +4 -0
  26. metadata +14 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 709b65c1c1943b5650ee396ae57707570a2249cc4b9469c07428283f72b03ede
4
- data.tar.gz: cb53f7dc5382e689c4b9533785b3731e7bd26a544b67a0b8e7ded6852838b154
3
+ metadata.gz: ace3f93a084a58fe640439c6d9226ee1881df6b48780e72a2a60a45b74131617
4
+ data.tar.gz: afb4cc25690692688c950dba6ef4218b6dc5ca8e9b6a48c99aee27de7d860cf3
5
5
  SHA512:
6
- metadata.gz: a25bbbc5072b14123d0a9164310d16727196af536c85b16883278840827c037ba8a65ba88e85acd24a7a62bf3573d891f3f2524ab243f19d5166e76906cf16de
7
- data.tar.gz: 4397fef94a8bb5b46d65554020ec8684310354b1eb6c17a8cacc413e90b398325cb2694ba4fb4e1b68848833b70f65c38a26b92672572cc979fad4670a2fc0a7
6
+ metadata.gz: a48f212dbad8fb279fbc2ea8e59c33ed408a123b69475ca7f2147393144229efb8d085ae5468b217ee6db9debe7f2b047bd199d610be0f1b9efe0f3065d74924
7
+ data.tar.gz: 8839101a35c2715434511fde00b4dcef0b46162e30e2d5cbdbe1b1fa8ffc43a1165d186ec1c120d7f16510fee476bf423d7f006e0d49f79f82578be1cf6290f9
@@ -3,6 +3,8 @@
3
3
  module RubyEventStore
4
4
  module ActiveRecord
5
5
  class EventIdIndexMigrationGenerator
6
+ include MigrationGeneratorMethods
7
+
6
8
  def call(migration_path)
7
9
  path, content = generate(migration_path)
8
10
  File.write(path, content)
@@ -15,28 +17,11 @@ module RubyEventStore
15
17
 
16
18
  private
17
19
 
18
- def absolute_path(path)
19
- File.expand_path(path, __dir__)
20
- end
21
-
22
20
  def migration_code
23
- migration_template.result_with_hash(migration_version: migration_version)
24
- end
25
-
26
- def migration_template
27
- ERB.new(
28
- File.read(
29
- File.join(absolute_path("./templates"), "add_event_id_index_to_event_store_events_in_streams_template.erb"),
30
- ),
31
- )
32
- end
33
-
34
- def migration_version
35
- ::ActiveRecord::Migration.current_version
36
- end
37
-
38
- def timestamp
39
- Time.now.strftime("%Y%m%d%H%M%S")
21
+ migration_template(
22
+ absolute_path("./templates"),
23
+ "add_event_id_index_to_event_store_events_in_streams",
24
+ ).result_with_hash(migration_version: migration_version)
40
25
  end
41
26
 
42
27
  def build_path(migration_path)
@@ -3,6 +3,8 @@
3
3
  module RubyEventStore
4
4
  module ActiveRecord
5
5
  class ForeignKeyOnEventIdMigrationGenerator
6
+ include MigrationGeneratorMethods
7
+
6
8
  def call(database_adapter, migration_path)
7
9
  generate(database_adapter, migration_path).each do |path, content|
8
10
  File.write(path, content)
@@ -33,34 +35,14 @@ module RubyEventStore
33
35
  end
34
36
  end
35
37
 
36
- def absolute_path(path)
37
- File.expand_path(path, __dir__)
38
- end
39
-
40
38
  def migration_code(database_adapter, migration_name)
41
39
  migration_template(template_root(database_adapter), migration_name).result_with_hash(
42
40
  migration_version: migration_version,
43
41
  )
44
42
  end
45
43
 
46
- def migration_template(template_root, name)
47
- ERB.new(File.read(File.join(template_root, "#{name}_template.erb")))
48
- end
49
-
50
- def template_root(database_adapter)
51
- absolute_path("./templates/#{database_adapter.template_directory}")
52
- end
53
-
54
- def migration_version
55
- ::ActiveRecord::Migration.current_version
56
- end
57
-
58
44
  def build_path(migration_path, migration_name, time)
59
- File.join("#{migration_path}", "#{migration_verion_number(time)}_#{migration_name}.rb")
60
- end
61
-
62
- def migration_verion_number(time)
63
- time.strftime("%Y%m%d%H%M%S")
45
+ File.join("#{migration_path}", "#{timestamp(time)}_#{migration_name}.rb")
64
46
  end
65
47
  end
66
48
  end
@@ -5,6 +5,8 @@ require "erb"
5
5
  module RubyEventStore
6
6
  module ActiveRecord
7
7
  class MigrationGenerator
8
+ include MigrationGeneratorMethods
9
+
8
10
  def call(database_adapter, migration_path)
9
11
  path, content = generate(database_adapter, migration_path)
10
12
  File.write(path, content)
@@ -17,10 +19,6 @@ module RubyEventStore
17
19
 
18
20
  private
19
21
 
20
- def absolute_path(path)
21
- File.expand_path(path, __dir__)
22
- end
23
-
24
22
  def migration_code(database_adapter)
25
23
  migration_template(template_root(database_adapter), "create_event_store_events").result_with_hash(
26
24
  migration_version: migration_version,
@@ -28,22 +26,6 @@ module RubyEventStore
28
26
  )
29
27
  end
30
28
 
31
- def template_root(database_adapter)
32
- absolute_path("./templates/#{database_adapter.template_directory}")
33
- end
34
-
35
- def migration_template(template_root, name)
36
- ERB.new(File.read(File.join(template_root, "#{name}_template.erb")))
37
- end
38
-
39
- def migration_version
40
- ::ActiveRecord::Migration.current_version
41
- end
42
-
43
- def timestamp
44
- Time.now.strftime("%Y%m%d%H%M%S")
45
- end
46
-
47
29
  def build_path(migration_path)
48
30
  File.join("#{migration_path}", "#{timestamp}_create_event_store_events.rb")
49
31
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyEventStore
4
+ module ActiveRecord
5
+ module MigrationGeneratorMethods
6
+ private
7
+
8
+ def absolute_path(path)
9
+ File.expand_path(path, __dir__)
10
+ end
11
+
12
+ def migration_template(template_root, name)
13
+ ERB.new(File.read(File.join(template_root, "#{name}_template.erb")))
14
+ end
15
+
16
+ def template_root(database_adapter)
17
+ absolute_path("./templates/#{database_adapter.template_directory}")
18
+ end
19
+
20
+ def migration_version
21
+ ::ActiveRecord::Migration.current_version
22
+ end
23
+
24
+ def timestamp(time = Time.now)
25
+ time.strftime("%Y%m%d%H%M%S")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -16,20 +16,12 @@ if defined?(Rails::Generators::Base)
16
16
 
17
17
  source_root File.expand_path(File.join(File.dirname(__FILE__), "../generators/templates"))
18
18
 
19
+ include RailsGeneratorMethods
20
+
19
21
  def create_migration
20
22
  template "add_event_id_index_to_event_store_events_in_streams_template.erb",
21
23
  "db/migrate/#{timestamp}_add_event_id_index_to_event_store_events_in_streams.rb"
22
24
  end
23
-
24
- private
25
-
26
- def migration_version
27
- ::ActiveRecord::Migration.current_version
28
- end
29
-
30
- def timestamp
31
- Time.now.strftime("%Y%m%d%H%M%S")
32
- end
33
25
  end
34
26
  end
35
27
  end
@@ -24,33 +24,21 @@ if defined?(Rails::Generators::Base)
24
24
  raise Error, e.message
25
25
  end
26
26
 
27
+ include RailsGeneratorMethods
28
+
27
29
  def create_migration
28
30
  case @database_adapter
29
31
  when DatabaseAdapter::PostgreSQL
30
32
  time = Time.now
31
33
  template "#{@database_adapter.template_directory}add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb",
32
- "db/migrate/#{migration_verion_number(time)}_add_foreign_key_on_event_id_to_event_store_events_in_streams.rb"
34
+ "db/migrate/#{timestamp(time)}_add_foreign_key_on_event_id_to_event_store_events_in_streams.rb"
33
35
  template "#{@database_adapter.template_directory}validate_add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb",
34
- "db/migrate/#{migration_verion_number(time + 1)}_validate_add_foreign_key_on_event_id_to_event_store_events_in_streams.rb"
36
+ "db/migrate/#{timestamp(time + 1)}_validate_add_foreign_key_on_event_id_to_event_store_events_in_streams.rb"
35
37
  else
36
38
  template "#{@database_adapter.template_directory}add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb",
37
- "db/migrate/#{migration_verion_number(Time.now)}_add_foreign_key_on_event_id_to_event_store_events_in_streams.rb"
39
+ "db/migrate/#{timestamp}_add_foreign_key_on_event_id_to_event_store_events_in_streams.rb"
38
40
  end
39
41
  end
40
-
41
- private
42
-
43
- def adapter_name
44
- ::ActiveRecord::Base.connection.adapter_name
45
- end
46
-
47
- def migration_version
48
- ::ActiveRecord::Migration.current_version
49
- end
50
-
51
- def migration_verion_number(time)
52
- time.strftime("%Y%m%d%H%M%S")
53
- end
54
42
  end
55
43
  end
56
44
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyEventStore
4
+ module ActiveRecord
5
+ module RailsGeneratorMethods
6
+ private
7
+
8
+ def adapter_name
9
+ ::ActiveRecord::Base.connection.adapter_name
10
+ end
11
+
12
+ def migration_version
13
+ ::ActiveRecord::Migration.current_version
14
+ end
15
+
16
+ def timestamp(time = Time.now)
17
+ time.strftime("%Y%m%d%H%M%S")
18
+ end
19
+ end
20
+ end
21
+ end
@@ -33,6 +33,8 @@ module RubyEventStore
33
33
  "Invalid value for --data-type option. Supported for options are: #{DatabaseAdapter.from_string(adapter_name).supported_data_types.join(", ")}."
34
34
  end
35
35
 
36
+ include RailsGeneratorMethods
37
+
36
38
  def create_migration
37
39
  template "#{@database_adapter.template_directory}create_event_store_events_template.erb",
38
40
  "db/migrate/#{timestamp}_create_event_store_events.rb"
@@ -43,18 +45,6 @@ module RubyEventStore
43
45
  def data_type
44
46
  options.fetch("data_type")
45
47
  end
46
-
47
- def adapter_name
48
- ::ActiveRecord::Base.connection.adapter_name
49
- end
50
-
51
- def migration_version
52
- ::ActiveRecord::Migration.current_version
53
- end
54
-
55
- def timestamp
56
- Time.now.strftime("%Y%m%d%H%M%S")
57
- end
58
48
  end
59
49
  end
60
50
  end if defined?(Rails::Generators::Base)
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require "rails/generators"
5
+ rescue LoadError
6
+ end
7
+
8
+ if defined?(Rails::Generators::Base)
9
+ module RubyEventStore
10
+ module ActiveRecord
11
+ class RailsStreamIdIndexMigrationGenerator < Rails::Generators::Base
12
+ class Error < Thor::Error
13
+ end
14
+
15
+ namespace "ruby_event_store:active_record:migration_for_missing_stream_id_index"
16
+
17
+ source_root File.expand_path(File.join(File.dirname(__FILE__), "../generators/templates"))
18
+
19
+ def initialize(*args)
20
+ super
21
+
22
+ @database_adapter = DatabaseAdapter.from_string(adapter_name)
23
+ rescue UnsupportedAdapter => e
24
+ raise Error, e.message
25
+ end
26
+
27
+ include RailsGeneratorMethods
28
+
29
+ def create_migration
30
+ template "#{@database_adapter.template_directory}add_stream_id_index_to_event_store_events_in_streams_template.erb",
31
+ "db/migrate/#{timestamp}_add_stream_id_index_to_event_store_events_in_streams.rb"
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -16,19 +16,19 @@ if defined?(Rails::Generators::Base)
16
16
 
17
17
  source_root File.expand_path(File.join(File.dirname(__FILE__), "../generators/templates"))
18
18
 
19
- def create_migration
20
- template "add_valid_at_index_to_event_store_events_template.erb",
21
- "db/migrate/#{timestamp}_add_valid_at_index_to_event_store_events.rb"
22
- end
23
-
24
- private
19
+ def initialize(*args)
20
+ super
25
21
 
26
- def migration_version
27
- ::ActiveRecord::Migration.current_version
22
+ @database_adapter = DatabaseAdapter.from_string(adapter_name)
23
+ rescue UnsupportedAdapter => e
24
+ raise Error, e.message
28
25
  end
29
26
 
30
- def timestamp
31
- Time.now.strftime("%Y%m%d%H%M%S")
27
+ include RailsGeneratorMethods
28
+
29
+ def create_migration
30
+ template "#{@database_adapter.template_directory}add_valid_at_index_to_event_store_events_template.erb",
31
+ "db/migrate/#{timestamp}_add_valid_at_index_to_event_store_events.rb"
32
32
  end
33
33
  end
34
34
  end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyEventStore
4
+ module ActiveRecord
5
+ class StreamIdIndexMigrationGenerator
6
+
7
+ include MigrationGeneratorMethods
8
+
9
+ def call(database_adapter, migration_path)
10
+ path, content = generate(database_adapter, migration_path)
11
+ File.write(path, content)
12
+ path
13
+ end
14
+
15
+ def generate(database_adapter, migration_path)
16
+ [build_path(migration_path), migration_code(database_adapter)]
17
+ end
18
+
19
+ private
20
+
21
+ def migration_code(database_adapter)
22
+ migration_template(template_root(database_adapter), "add_stream_id_index_to_event_store_events_in_streams").result_with_hash(
23
+ migration_version: migration_version,
24
+ )
25
+ end
26
+
27
+ def build_path(migration_path)
28
+ File.join("#{migration_path}", "#{timestamp}_add_stream_id_index_to_event_store_events_in_streams.rb")
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddStreamIdIndexToEventStoreEventsInStreams < ActiveRecord::Migration[<%= migration_version %>]
4
+ def change
5
+ add_index :event_store_events_in_streams, [:stream, :id],
6
+ name: "index_event_store_events_in_streams_on_stream_and_id",
7
+ if_not_exists: true
8
+ end
9
+ end
@@ -1,15 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class AddValidAtIndexToEventStoreEvents < ActiveRecord::Migration[<%= migration_version %>]
4
- disable_ddl_transaction!
5
-
6
4
  def change
7
- unless index_exists?(:event_store_events, "COALESCE(valid_at, created_at)",
8
- name: "index_event_store_events_on_as_of")
9
- add_index :event_store_events,
10
- "COALESCE(valid_at, created_at)",
11
- name: "index_event_store_events_on_as_of",
12
- algorithm: :concurrently
13
- end
5
+ add_index :event_store_events,
6
+ "COALESCE(valid_at, created_at)",
7
+ name: "index_event_store_events_on_as_of",
8
+ if_not_exists: true
14
9
  end
15
10
  end
@@ -9,6 +9,7 @@ class CreateEventStoreEvents < ActiveRecord::Migration[<%= migration_version %>]
9
9
  t.binary :data, null: false
10
10
  t.datetime :created_at, null: false, precision: 6, index: true
11
11
  t.datetime :valid_at, null: true, precision: 6, index: true
12
+ t.index "COALESCE(valid_at, created_at)", name: "index_event_store_events_on_as_of"
12
13
  end
13
14
 
14
15
  create_table(:event_store_events_in_streams, force: false) do |t|
@@ -19,6 +20,7 @@ class CreateEventStoreEvents < ActiveRecord::Migration[<%= migration_version %>]
19
20
 
20
21
  t.index [:stream, :position], unique: true
21
22
  t.index [:stream, :event_id], unique: true
23
+ t.index [:stream, :id], name: "index_event_store_events_in_streams_on_stream_and_id"
22
24
  end
23
25
  end
24
26
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddStreamIdIndexToEventStoreEventsInStreams < ActiveRecord::Migration[<%= migration_version %>]
4
+ def change
5
+ add_index :event_store_events_in_streams, [:stream, :id],
6
+ name: "index_event_store_events_in_streams_on_stream_and_id",
7
+ algorithm: :inplace,
8
+ if_not_exists: true
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddValidAtIndexToEventStoreEvents < ActiveRecord::Migration[<%= migration_version %>]
4
+ def change
5
+ add_index :event_store_events,
6
+ "(COALESCE(valid_at, created_at))",
7
+ name: "index_event_store_events_on_as_of",
8
+ algorithm: :inplace,
9
+ if_not_exists: true
10
+ end
11
+ end
@@ -9,6 +9,7 @@ class CreateEventStoreEvents < ActiveRecord::Migration[<%= migration_version %>]
9
9
  t.<%= data_type %> :data, null: false
10
10
  t.datetime :created_at, null: false, precision: 6, index: true
11
11
  t.datetime :valid_at, null: true, precision: 6, index: true
12
+ t.index "(COALESCE(valid_at, created_at))", name: "index_event_store_events_on_as_of"
12
13
  end
13
14
 
14
15
  create_table(:event_store_events_in_streams, force: false) do |t|
@@ -19,6 +20,7 @@ class CreateEventStoreEvents < ActiveRecord::Migration[<%= migration_version %>]
19
20
 
20
21
  t.index [:stream, :position], unique: true
21
22
  t.index [:stream, :event_id], unique: true
23
+ t.index [:stream, :id], name: "index_event_store_events_in_streams_on_stream_and_id"
22
24
  end
23
25
  end
24
26
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddStreamIdIndexToEventStoreEventsInStreams < ActiveRecord::Migration[<%= migration_version %>]
4
+ disable_ddl_transaction!
5
+
6
+ def change
7
+ add_index :event_store_events_in_streams, [:stream, :id],
8
+ name: "index_event_store_events_in_streams_on_stream_and_id",
9
+ algorithm: :concurrently,
10
+ if_not_exists: true
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddValidAtIndexToEventStoreEvents < ActiveRecord::Migration[<%= migration_version %>]
4
+ disable_ddl_transaction!
5
+
6
+ def change
7
+ add_index :event_store_events,
8
+ "COALESCE(valid_at, created_at)",
9
+ name: "index_event_store_events_on_as_of",
10
+ algorithm: :concurrently,
11
+ if_not_exists: true
12
+ end
13
+ end
@@ -9,10 +9,9 @@ class CreateEventStoreEvents < ActiveRecord::Migration[<%= migration_version %>]
9
9
  t.<%= data_type %> :data, null: false
10
10
  t.datetime :created_at, null: false, type: :timestamp, precision: 6, index: true
11
11
  t.datetime :valid_at, null: true, type: :timestamp, precision: 6, index: true
12
+ t.index "COALESCE(valid_at, created_at)", name: "index_event_store_events_on_as_of"
12
13
  end
13
14
 
14
- add_index :event_store_events, "COALESCE(valid_at, created_at)", name: "index_event_store_events_on_as_of"
15
-
16
15
  create_table(:event_store_events_in_streams, id: :bigserial, force: false) do |t|
17
16
  t.string :stream, null: false
18
17
  t.integer :position, null: true
@@ -21,6 +20,7 @@ class CreateEventStoreEvents < ActiveRecord::Migration[<%= migration_version %>]
21
20
 
22
21
  t.index [:stream, :position], unique: true
23
22
  t.index [:stream, :event_id], unique: true
23
+ t.index [:stream, :id], name: "index_event_store_events_in_streams_on_stream_and_id"
24
24
  end
25
25
  end
26
26
  end
@@ -3,42 +3,26 @@
3
3
  module RubyEventStore
4
4
  module ActiveRecord
5
5
  class ValidAtIndexMigrationGenerator
6
- def call(migration_path)
7
- path, content = generate(migration_path)
6
+ include MigrationGeneratorMethods
7
+
8
+ def call(database_adapter, migration_path)
9
+ path, content = generate(database_adapter, migration_path)
8
10
  File.write(path, content)
9
11
  path
10
12
  end
11
13
 
12
- def generate(migration_path)
13
- [build_path(migration_path), migration_code]
14
+ def generate(database_adapter, migration_path)
15
+ [build_path(migration_path), migration_code(database_adapter)]
14
16
  end
15
17
 
16
18
  private
17
19
 
18
- def absolute_path(path)
19
- File.expand_path(path, __dir__)
20
- end
21
-
22
- def migration_code
23
- migration_template.result_with_hash(migration_version: migration_version)
24
- end
25
-
26
- def migration_template
27
- ERB.new(
28
- File.read(
29
- File.join(absolute_path("./templates"), "add_valid_at_index_to_event_store_events_template.erb"),
30
- ),
20
+ def migration_code(database_adapter)
21
+ migration_template(template_root(database_adapter), "add_valid_at_index_to_event_store_events").result_with_hash(
22
+ migration_version: migration_version,
31
23
  )
32
24
  end
33
25
 
34
- def migration_version
35
- ::ActiveRecord::Migration.current_version
36
- end
37
-
38
- def timestamp
39
- Time.now.strftime("%Y%m%d%H%M%S")
40
- end
41
-
42
26
  def build_path(migration_path)
43
27
  File.join("#{migration_path}", "#{timestamp}_add_valid_at_index_to_event_store_events.rb")
44
28
  end
@@ -28,7 +28,7 @@ task "db:migrations:add_valid_at_index" do
28
28
  task = MigrationTask.new("db:migrations:add_valid_at_index")
29
29
  task.establish_connection
30
30
 
31
- path = RubyEventStore::ActiveRecord::ValidAtIndexMigrationGenerator.new.call(task.migration_path)
31
+ path = RubyEventStore::ActiveRecord::ValidAtIndexMigrationGenerator.new.call(task.adapter_type, task.migration_path)
32
32
 
33
33
  puts "Migration file created #{path}"
34
34
  end
@@ -44,6 +44,17 @@ task "db:migrations:add_foreign_key_on_event_id" do
44
44
  puts "Migration file created #{path}"
45
45
  end
46
46
 
47
+ desc "Generate migration for adding stream id index"
48
+ task "db:migrations:add_stream_id_index" do
49
+ task = MigrationTask.new("db:migrations:add_stream_id_index")
50
+ task.establish_connection
51
+
52
+ path =
53
+ RubyEventStore::ActiveRecord::StreamIdIndexMigrationGenerator.new.call(task.adapter, task.migration_path)
54
+
55
+ puts "Migration file created #{path}"
56
+ end
57
+
47
58
  class MigrationTask
48
59
  def initialize(
49
60
  task,
@@ -67,7 +78,11 @@ class MigrationTask
67
78
  RubyEventStore::ActiveRecord::DatabaseAdapter.from_string(::ActiveRecord::Base.connection.adapter_name, data_type)
68
79
  end
69
80
 
81
+ def adapter_type
82
+ RubyEventStore::ActiveRecord::DatabaseAdapter.from_string(::ActiveRecord::Base.connection.adapter_name)
83
+ end
84
+
70
85
  def migration_path
71
86
  @migration_path || "db/migrate"
72
87
  end
73
- end
88
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RubyEventStore
4
4
  module ActiveRecord
5
- VERSION = "3.0.1"
5
+ VERSION = "3.1.0"
6
6
  end
7
7
  end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "active_record/generators/database_adapter"
4
+ require_relative "active_record/generators/migration_generator_methods"
5
+ require_relative "active_record/generators/rails_generator_methods"
4
6
  require_relative "active_record/generators/migration_generator"
5
7
  require_relative "active_record/generators/rails_migration_generator"
6
8
  require_relative "active_record/generators/event_id_index_migration_generator"
@@ -9,6 +11,8 @@ require_relative "active_record/generators/foreign_key_on_event_id_migration_gen
9
11
  require_relative "active_record/generators/rails_foreign_key_on_event_id_migration_generator"
10
12
  require_relative "active_record/generators/valid_at_index_migration_generator"
11
13
  require_relative "active_record/generators/rails_valid_at_index_migration_generator"
14
+ require_relative "active_record/generators/stream_id_index_migration_generator"
15
+ require_relative "active_record/generators/rails_stream_id_index_migration_generator"
12
16
  require_relative "active_record/with_default_models"
13
17
  require_relative "active_record/with_abstract_base_class"
14
18
  require_relative "active_record/event_repository"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_event_store-active_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arkency
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 3.0.1
18
+ version: 3.1.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 3.0.1
25
+ version: 3.1.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activerecord
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -59,17 +59,26 @@ files:
59
59
  - lib/ruby_event_store/active_record/generators/event_id_index_migration_generator.rb
60
60
  - lib/ruby_event_store/active_record/generators/foreign_key_on_event_id_migration_generator.rb
61
61
  - lib/ruby_event_store/active_record/generators/migration_generator.rb
62
+ - lib/ruby_event_store/active_record/generators/migration_generator_methods.rb
62
63
  - lib/ruby_event_store/active_record/generators/rails_event_id_index_migration_generator.rb
63
64
  - lib/ruby_event_store/active_record/generators/rails_foreign_key_on_event_id_migration_generator.rb
65
+ - lib/ruby_event_store/active_record/generators/rails_generator_methods.rb
64
66
  - lib/ruby_event_store/active_record/generators/rails_migration_generator.rb
67
+ - lib/ruby_event_store/active_record/generators/rails_stream_id_index_migration_generator.rb
65
68
  - lib/ruby_event_store/active_record/generators/rails_valid_at_index_migration_generator.rb
69
+ - lib/ruby_event_store/active_record/generators/stream_id_index_migration_generator.rb
66
70
  - lib/ruby_event_store/active_record/generators/templates/add_event_id_index_to_event_store_events_in_streams_template.erb
67
71
  - lib/ruby_event_store/active_record/generators/templates/add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb
72
+ - lib/ruby_event_store/active_record/generators/templates/add_stream_id_index_to_event_store_events_in_streams_template.erb
68
73
  - lib/ruby_event_store/active_record/generators/templates/add_valid_at_index_to_event_store_events_template.erb
69
74
  - lib/ruby_event_store/active_record/generators/templates/create_event_store_events_template.erb
70
75
  - lib/ruby_event_store/active_record/generators/templates/mysql/add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb
76
+ - lib/ruby_event_store/active_record/generators/templates/mysql/add_stream_id_index_to_event_store_events_in_streams_template.erb
77
+ - lib/ruby_event_store/active_record/generators/templates/mysql/add_valid_at_index_to_event_store_events_template.erb
71
78
  - lib/ruby_event_store/active_record/generators/templates/mysql/create_event_store_events_template.erb
72
79
  - lib/ruby_event_store/active_record/generators/templates/postgres/add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb
80
+ - lib/ruby_event_store/active_record/generators/templates/postgres/add_stream_id_index_to_event_store_events_in_streams_template.erb
81
+ - lib/ruby_event_store/active_record/generators/templates/postgres/add_valid_at_index_to_event_store_events_template.erb
73
82
  - lib/ruby_event_store/active_record/generators/templates/postgres/create_event_store_events_template.erb
74
83
  - lib/ruby_event_store/active_record/generators/templates/postgres/validate_add_foreign_key_on_event_id_to_event_store_events_in_streams_template.erb
75
84
  - lib/ruby_event_store/active_record/generators/valid_at_index_migration_generator.rb
@@ -98,14 +107,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
107
  requirements:
99
108
  - - ">="
100
109
  - !ruby/object:Gem::Version
101
- version: '2.7'
110
+ version: '3.3'
102
111
  required_rubygems_version: !ruby/object:Gem::Requirement
103
112
  requirements:
104
113
  - - ">="
105
114
  - !ruby/object:Gem::Version
106
115
  version: '0'
107
116
  requirements: []
108
- rubygems_version: 3.7.1
117
+ rubygems_version: 3.6.9
109
118
  specification_version: 4
110
119
  summary: Persistent event repository implementation for RubyEventStore based on ActiveRecord
111
120
  test_files: []