a11yist/db/migrate/20241101125547_add_external_numbers_field_to_checks.rb

34 lines
1.4 KiB
Ruby
Raw Permalink Normal View History

2024-11-03 21:58:25 +01:00
class AddExternalNumbersFieldToChecks < ActiveRecord::Migration[7.2]
def change
reversible do |dir|
dir.down do
add_column :checks, :external_number, :integer
execute <<~SQL
UPDATE checks SET
external_number = printf('%d.%d.%d', external_number_1, external_number_2, external_number_3)
SQL
remove_column :checks, :external_number_1, :integer
remove_column :checks, :external_number_2, :integer
remove_column :checks, :external_number_3, :integer
end
end
reversible do |dir|
dir.up do
add_column :checks, :external_number_1, :integer
add_column :checks, :external_number_2, :integer
add_column :checks, :external_number_3, :integer
execute <<~SQL
UPDATE checks SET
external_number_1 = CAST(SUBSTRING(external_number, 1, INSTR(external_number, '.') - 1) AS integer),
external_number_2 = CAST(SUBSTRING(SUBSTRING(external_number, INSTR(external_number, '.') + 1), 1, INSTR(SUBSTRING(external_number, INSTR(external_number, '.') + 1), '.') - 1) AS integer),
external_number_3 = CAST(SUBSTRING(SUBSTRING(external_number, INSTR(external_number, '.') + 1), INSTR(SUBSTRING(external_number, INSTR(external_number, '.') + 1), '.') + 1) AS integer)
SQL
remove_column :checks, :external_number
end
end
end
end