Correct bugs in BackupUploaderColumns

This commit is contained in:
Eric 2020-05-05 13:56:17 -05:00
parent ce831539f5
commit 7c9f097f1d

View file

@ -2,28 +2,27 @@
class BackupUploaderColumns < ActiveRecord::Migration[5.2] class BackupUploaderColumns < ActiveRecord::Migration[5.2]
def up def up
# copy all # copy all
HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |table| HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |uploader_table|
create_table table.backup_table do |table| create_table uploader_table.backup_table do |table|
table.references table.name, index:true table.references uploader_table.name, foreign_key: true, index: { name: "idx_#{uploader_table.backup_table}_on_fk"}
table.fields.each do |f| uploader_table.fields.each do |f|
table.string f.migrated_name table.string f.migrated_name
end end
end end
end end
# copy all # copy all
HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |table| HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |table|
execute <<-SQL execute <<-SQL
INSERT INTO #{table.backup_table} (#{table.foreign_key}, #{table.fields.map(&:migrated_name).join(', ')}) INSERT INTO #{table.backup_table} (#{table.foreign_key}, #{table.fields.map(&:migrated_name).join(', ')})
VALUES ( SELECT id, #{table.fields.map(&:migrated_name).join(', ')} FROM #{table.name}) ( SELECT id, #{table.fields.map(&:migrated_name).join(', ')} FROM #{table.name})
SQL; SQL
end end
# delete columns # delete columns
HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |table| HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |table|
table.fields.each do |f|
fields.each do |f| remove_column table.name, f.migrated_name
drop_column table.name, f.migrated_name
end end
end end
end end
@ -31,7 +30,7 @@ class BackupUploaderColumns < ActiveRecord::Migration[5.2]
def down def down
## readd columns ## readd columns
HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |table| HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |table|
fields.each do |f| table.fields.each do |f|
add_column table.name, f.migrated_name, :string add_column table.name, f.migrated_name, :string
end end
end end
@ -40,16 +39,13 @@ class BackupUploaderColumns < ActiveRecord::Migration[5.2]
HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |table| HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each do |table|
execute <<-SQL execute <<-SQL
UPDATE #{table.name} SET (#{table.fields.map(&:migrated_name).join(', ')}) = ( UPDATE #{table.name} SET (#{table.fields.map(&:migrated_name).join(', ')}) = (
SELECT (#{table.fields.map(&:migrated_name).join(', ')}) FROM #{table.backup_table} SELECT #{table.fields.map{|f| table.backup_table + "." + f.migrated_name}.join(', ')} FROM #{table.backup_table}
WHERE #{table.backup_table}.#{table.foreign_key} = #{table.name}.id WHERE #{table.backup_table}.#{table.foreign_key} = #{table.name}.id
) )
SQL
SQL;
end end
# delete tables # delete tables
HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each{ |entity, _| drop_table entity.backup_table}
HoudiniUpgrade::UPLOADERS_TO_MIGRATE.each{ |entity, _| drop_table table.backup_table}
end end
end end