1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 05:09:38 +02:00
Maybe/db/migrate/20250316122019_security_price_unique_index.rb
Zach Gollwitzer f65b93a352
Data provider simplification, tests, and documentation (#1997)
* Ignore env.test from source control

* Simplification of providers interface

* Synth tests

* Update money to use new find rates method

* Remove unused issues code

* Additional issue feature removals

* Update price data fetching and tests

* Update documentation for providers

* Security test fixes

* Fix self host test

* Update synth usage data access

* Remove AI pr schema changes
2025-03-17 11:54:53 -04:00

31 lines
1,013 B
Ruby

class SecurityPriceUniqueIndex < ActiveRecord::Migration[7.2]
def change
# First, we have to delete duplicate prices from DB so we can apply the unique index
reversible do |dir|
dir.up do
execute <<~SQL
DELETE FROM security_prices
WHERE id IN (
SELECT id FROM (
SELECT id,
ROW_NUMBER() OVER (
PARTITION BY security_id, date, currency
ORDER BY updated_at DESC, id DESC
) as row_num
FROM security_prices
) as duplicates
WHERE row_num > 1
);
SQL
end
end
add_index :security_prices, [ :security_id, :date, :currency ], unique: true
change_column_null :security_prices, :date, false
change_column_null :security_prices, :price, false
change_column_null :security_prices, :currency, false
change_column_null :exchange_rates, :date, false
change_column_null :exchange_rates, :rate, false
end
end