1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 13:19:39 +02:00
Maybe/db/migrate/20250701161640_add_account_status.rb

42 lines
1.1 KiB
Ruby
Raw Normal View History

class AddAccountStatus < ActiveRecord::Migration[7.2]
def up
add_column :accounts, :status, :string, default: "active"
change_column_null :entries, :amount, false
# Migrate existing data
execute <<-SQL
UPDATE accounts
SET status = CASE
WHEN scheduled_for_deletion = true THEN 'pending_deletion'
WHEN is_active = true THEN 'active'
WHEN is_active = false THEN 'disabled'
ELSE 'draft'
END
SQL
remove_column :accounts, :is_active
remove_column :accounts, :scheduled_for_deletion
end
def down
add_column :accounts, :is_active, :boolean, default: true, null: false
add_column :accounts, :scheduled_for_deletion, :boolean, default: false
# Restore the original boolean fields based on status
execute <<-SQL
UPDATE accounts
SET is_active = CASE
WHEN status = 'active' THEN true
WHEN status IN ('disabled', 'pending_deletion') THEN false
ELSE false
END,
scheduled_for_deletion = CASE
WHEN status = 'pending_deletion' THEN true
ELSE false
END
SQL
remove_column :accounts, :status
end
end