1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-18 20:59:39 +02:00
Maybe/db/migrate/20250701161640_add_account_status.rb
Zach Gollwitzer 662f2c04ce
Some checks failed
Publish Docker image / ci (push) Has been cancelled
Publish Docker image / Build docker image (push) Has been cancelled
Multi-step account forms + clearer balance editing (#2427)
* Initial multi-step property form

* Improve form structure, add optional tooltip help icons to form fields

* Add basic inline alert component

* Clean up and improve property form lifecycle

* Implement Account status concept

* Lint fixes

* Remove whitespace

* Balance editing, scope updates for account

* Passing tests

* Fix brakeman warning

* Remove stale columns

* data constraint tweaks

* Redundant property
2025-07-03 09:33:07 -04:00

41 lines
1.1 KiB
Ruby

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