a11yist/db/migrate/20241101125547_add_external_numbers_field_to_checks.rb
david d1294c2fc4
Some checks failed
/ Run tests (push) Successful in 1m22s
/ Run system tests (push) Failing after 1m33s
/ Build, push and deploy image (push) Successful in 3m22s
Refactorings and gui improvements
2024-11-03 21:58:25 +01:00

33 lines
1.4 KiB
Ruby

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