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:
parent
d0bc959bee
commit
47523f64c2
32 changed files with 591 additions and 56 deletions
11
db/migrate/20240710182529_create_securities.rb
Normal file
11
db/migrate/20240710182529_create_securities.rb
Normal 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
|
12
db/migrate/20240710182728_create_security_prices.rb
Normal file
12
db/migrate/20240710182728_create_security_prices.rb
Normal 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
|
11
db/migrate/20240710184048_create_account_trades.rb
Normal file
11
db/migrate/20240710184048_create_account_trades.rb
Normal 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
|
17
db/migrate/20240710184249_create_account_holdings.rb
Normal file
17
db/migrate/20240710184249_create_account_holdings.rb
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue