1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-23 07:09:39 +02:00
Maybe/app/models/plaid_account.rb

55 lines
1.4 KiB
Ruby
Raw Normal View History

class PlaidAccount < ApplicationRecord
belongs_to :plaid_item
has_one :account, dependent: :destroy
validates :name, :plaid_type, :currency, presence: true
validate :has_balance
def upsert_plaid_snapshot!(account_snapshot)
assign_attributes(
current_balance: account_snapshot.balances.current,
available_balance: account_snapshot.balances.available,
currency: account_snapshot.balances.iso_currency_code,
plaid_type: account_snapshot.type,
plaid_subtype: account_snapshot.subtype,
name: account_snapshot.name,
mask: account_snapshot.mask,
raw_payload: account_snapshot
)
save!
end
def upsert_plaid_transactions_snapshot!(transactions_snapshot)
assign_attributes(
raw_transactions_payload: transactions_snapshot
)
save!
end
def upsert_plaid_investments_snapshot!(investments_snapshot)
assign_attributes(
raw_investments_payload: investments_snapshot
)
save!
end
def upsert_plaid_liabilities_snapshot!(liabilities_snapshot)
assign_attributes(
raw_liabilities_payload: liabilities_snapshot
)
save!
end
private
# Plaid guarantees at least one of these. This validation is a sanity check for that guarantee.
def has_balance
return if current_balance.present? || available_balance.present?
errors.add(:base, "Plaid account must have either current or available balance")
2024-12-10 18:54:09 -05:00
end
end