1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-08-02 20:15:22 +02:00

Investment Portfolio Sync (#974)

* Add investment portfolio models

* Add portfolio to demo data

* Setup initial tests

* Rough sketch of sync logic

* Clean up trade sync logic

* Add trade validation

* Integrate trades into sync process
This commit is contained in:
Zach Gollwitzer 2024-07-16 09:26:49 -04:00 committed by GitHub
parent d0bc959bee
commit 47523f64c2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
32 changed files with 591 additions and 56 deletions

View file

@ -0,0 +1,11 @@
class CreateSecurities < ActiveRecord::Migration[7.2]
def change
create_table :securities, id: :uuid do |t|
t.string :isin, null: false
t.string :symbol
t.string :name
t.timestamps
end
end
end

View file

@ -0,0 +1,12 @@
class CreateSecurityPrices < ActiveRecord::Migration[7.2]
def change
create_table :security_prices, id: :uuid do |t|
t.string :isin
t.date :date
t.decimal :price, precision: 19, scale: 4
t.string :currency, default: "USD"
t.timestamps
end
end
end

View file

@ -0,0 +1,11 @@
class CreateAccountTrades < ActiveRecord::Migration[7.2]
def change
create_table :account_trades, id: :uuid do |t|
t.references :security, null: false, foreign_key: true, type: :uuid
t.decimal :qty, precision: 19, scale: 4
t.decimal :price, precision: 19, scale: 4
t.timestamps
end
end
end

View file

@ -0,0 +1,17 @@
class CreateAccountHoldings < ActiveRecord::Migration[7.2]
def change
create_table :account_holdings, id: :uuid do |t|
t.references :account, null: false, foreign_key: true, type: :uuid
t.references :security, null: false, foreign_key: true, type: :uuid
t.date :date
t.decimal :qty, precision: 19, scale: 4
t.decimal :price, precision: 19, scale: 4
t.decimal :amount, precision: 19, scale: 4
t.string :currency
t.timestamps
end
add_index :account_holdings, %i[account_id security_id date currency], unique: true
end
end