@@ -2,33 +2,52 @@ require_relative "../generators/migration_generator"
22
33desc "Generate migration"
44task "db:migrations:copy" do
5- data_type =
6- ENV [ "DATA_TYPE" ] || raise ( "Specify data type (binary, json, jsonb): rake db:migrations:copy DATA_TYPE=json" )
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
107
118 path =
12- RubyEventStore ::ActiveRecord ::MigrationGenerator . new . call ( database_adapter , ENV [ "MIGRATION_PATH" ] || "db/migrate" )
9+ RubyEventStore ::ActiveRecord ::MigrationGenerator . new . call ( task . adapter , task . migration_path )
1310
1411 puts "Migration file created #{ path } "
1512end
1613
1714desc "Generate migration for missing event_id index"
1815task "db:migrations:fix_missing_event_id_index" do
19- ::ActiveRecord ::Base . establish_connection ( ENV [ "DATABASE_URL" ] )
16+ task = MigrationTask . new ( "db:migrations:fix_missing_event_id_index" )
17+ task . establish_connection
2018
21- path = RubyEventStore ::ActiveRecord ::EventIdIndexMigrationGenerator . new . call ( ENV [ "MIGRATION_PATH" ] || "db/migrate" )
19+ path = RubyEventStore ::ActiveRecord ::EventIdIndexMigrationGenerator . new . call ( task . migration_path )
2220
2321 puts "Migration file created #{ path } "
2422end
2523
2624desc "Generate migration for adding foreign key on event_store_events_in_streams.event_id"
2725task "db:migrations:add_foreign_key_on_event_id" do
28- ::ActiveRecord ::Base . establish_connection ( ENV [ "DATABASE_URL" ] )
26+ task = MigrationTask . new ( "db:migrations:add_foreign_key_on_event_id" )
27+ task . establish_connection
2928
3029 path =
31- RubyEventStore ::ActiveRecord ::ForeignKeyOnEventIdMigrationGenerator . new . call ( ENV [ "MIGRATION_PATH" ] || "db/migrate" )
30+ RubyEventStore ::ActiveRecord ::ForeignKeyOnEventIdMigrationGenerator . new . call ( task . migration_path )
3231
3332 puts "Migration file created #{ path } "
3433end
34+
35+ class MigrationTask
36+ def initialize ( task )
37+ @task = task
38+ end
39+
40+ def establish_connection
41+ ::ActiveRecord ::Base . establish_connection ( ENV [ "DATABASE_URL" ] )
42+ end
43+
44+ def adapter
45+ data_type = ENV [ "DATA_TYPE" ] || raise ( "Specify data type (binary, json, jsonb): rake #{ @task } DATA_TYPE=json" )
46+
47+ RubyEventStore ::ActiveRecord ::DatabaseAdapter . from_string ( ::ActiveRecord ::Base . connection . adapter_name , data_type )
48+ end
49+
50+ def migration_path
51+ ENV [ "MIGRATION_PATH" ] || "db/migrate"
52+ end
53+ end
0 commit comments