Skip to content

Commit

Permalink
Merge pull request #319 from ilyakatz/manyfold3d-db-prepare-withdata
Browse files Browse the repository at this point in the history
Manyfold3d db prepare withdata
  • Loading branch information
ilyakatz committed Aug 13, 2024
2 parents 4927b56 + bbd5efa commit 2bf9a52
Show file tree
Hide file tree
Showing 8 changed files with 40 additions and 33 deletions.
3 changes: 3 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changelog

## 9.4.1
- Add db:prepare task

## 9.4.0
- Reset model schema cache before each data migration https://github.com/ilyakatz/data-migrate/pull/307
- Run load_config rake task before db:migrate:with_data https://github.com/ilyakatz/data-migrate/pull/308
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
data_migrate (9.4.0)
data_migrate (9.4.1)
activerecord (>= 6.1)
railties (>= 6.1)

Expand Down
2 changes: 1 addition & 1 deletion gemfiles/rails_6.1.gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: ..
specs:
data_migrate (9.4.0)
data_migrate (9.4.1)
activerecord (>= 6.1)
railties (>= 6.1)

Expand Down
2 changes: 1 addition & 1 deletion gemfiles/rails_7.0.gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: ..
specs:
data_migrate (9.4.0)
data_migrate (9.4.1)
activerecord (>= 6.1)
railties (>= 6.1)

Expand Down
2 changes: 1 addition & 1 deletion gemfiles/rails_7.1.gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: ..
specs:
data_migrate (9.4.0)
data_migrate (9.4.1)
activerecord (>= 6.1)
railties (>= 6.1)

Expand Down
31 changes: 31 additions & 0 deletions lib/data_migrate/database_tasks.rb
Original file line number Diff line number Diff line change
Expand Up @@ -173,5 +173,36 @@ def past_migrations(sort = nil)

sort&.downcase == "asc" ? sort_migrations(migrations) : sort_migrations(migrations).reverse
end

def self.migrate_with_data
DataMigrate::DataMigrator.create_data_schema_table

ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true

db_configs = ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env)

schema_mapped_versions = ActiveRecord::Tasks::DatabaseTasks.db_configs_with_versions(db_configs)
data_mapped_versions = DataMigrate::DatabaseTasks.db_configs_with_versions

mapped_versions = schema_mapped_versions.merge(data_mapped_versions) do |_key, schema_db_configs, data_db_configs|
schema_db_configs + data_db_configs
end

mapped_versions.sort.each do |version, db_configs|
db_configs.each do |db_config|
if is_data_migration = db_config.is_a?(DataMigrate::DatabaseConfigurationWrapper)
db_config = db_config.db_config
end

DataMigrate::DatabaseTasks.with_temporary_connection(db_config) do
if is_data_migration
DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, version)
else
ActiveRecord::Tasks::DatabaseTasks.migrate(version)
end
end
end
end
end
end
end
2 changes: 1 addition & 1 deletion lib/data_migrate/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module DataMigrate
VERSION = "9.4.0".freeze
VERSION = "9.4.1".freeze
end
29 changes: 1 addition & 28 deletions tasks/databases.rake
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,7 @@ namespace :db do
namespace :migrate do
desc "Migrate the database data and schema (options: VERSION=x, VERBOSE=false)."
task :with_data => :load_config do
DataMigrate::DataMigrator.create_data_schema_table
ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true

db_configs = ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env)

schema_mapped_versions = ActiveRecord::Tasks::DatabaseTasks.db_configs_with_versions(db_configs)
data_mapped_versions = DataMigrate::DatabaseTasks.db_configs_with_versions

mapped_versions = schema_mapped_versions.merge(data_mapped_versions) do |_key, schema_db_configs, data_db_configs|
schema_db_configs + data_db_configs
end

mapped_versions.sort.each do |version, db_configs|
db_configs.each do |db_config|
if is_data_migration = db_config.is_a?(DataMigrate::DatabaseConfigurationWrapper)
db_config = db_config.db_config
end

DataMigrate::DatabaseTasks.with_temporary_connection(db_config) do
if is_data_migration
DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, version)
else
ActiveRecord::Tasks::DatabaseTasks.migrate(version)
end
end
end
end

DataMigrate::DatabaseTasks.migrate_with_data
Rake::Task["db:_dump"].invoke
Rake::Task["data:dump"].invoke
end
Expand Down

0 comments on commit 2bf9a52

Please sign in to comment.