mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 05:09:38 +02:00
59 lines
2.2 KiB
Ruby
59 lines
2.2 KiB
Ruby
|
class RemoveOldColumnsFromEntryables < ActiveRecord::Migration[7.2]
|
||
|
def change
|
||
|
reversible do |dir|
|
||
|
dir.up do
|
||
|
# Remove old columns from Account::Transaction
|
||
|
remove_column :account_transactions, :name
|
||
|
remove_column :account_transactions, :date
|
||
|
remove_column :account_transactions, :amount
|
||
|
remove_column :account_transactions, :currency
|
||
|
remove_column :account_transactions, :account_id
|
||
|
|
||
|
# Remove old columns from Account::Valuation
|
||
|
remove_column :account_valuations, :date
|
||
|
remove_column :account_valuations, :value
|
||
|
remove_column :account_valuations, :currency
|
||
|
remove_column :account_valuations, :account_id
|
||
|
end
|
||
|
|
||
|
dir.down do
|
||
|
# Add old columns back to Account::Transaction
|
||
|
add_column :account_transactions, :name, :string
|
||
|
add_column :account_transactions, :date, :date
|
||
|
add_column :account_transactions, :amount, :decimal, precision: 19, scale: 4
|
||
|
add_column :account_transactions, :currency, :string
|
||
|
add_column :account_transactions, :account_id, :uuid
|
||
|
|
||
|
# Add old columns back to Account::Valuation
|
||
|
add_column :account_valuations, :date, :date
|
||
|
add_column :account_valuations, :value, :decimal, precision: 19, scale: 4
|
||
|
add_column :account_valuations, :currency, :string
|
||
|
add_column :account_valuations, :account_id, :uuid
|
||
|
|
||
|
# Repopulate data for Account::Transaction
|
||
|
execute <<-SQL.squish
|
||
|
UPDATE account_transactions at
|
||
|
SET name = ae.name,
|
||
|
date = ae.date,
|
||
|
amount = ae.amount,
|
||
|
currency = ae.currency,
|
||
|
account_id = ae.account_id
|
||
|
FROM account_entries ae
|
||
|
WHERE ae.entryable_type = 'Account::Transaction' AND ae.entryable_id = at.id
|
||
|
SQL
|
||
|
|
||
|
# Repopulate data for Account::Valuation
|
||
|
execute <<-SQL.squish
|
||
|
UPDATE account_valuations av
|
||
|
SET date = ae.date,
|
||
|
value = ae.amount,
|
||
|
currency = ae.currency,
|
||
|
account_id = ae.account_id
|
||
|
FROM account_entries ae
|
||
|
WHERE ae.entryable_type = 'Account::Valuation' AND ae.entryable_id = av.id
|
||
|
SQL
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|