mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-02 03:55:20 +02:00
Plaid sync domain improvements (#2267)
Breaks our Plaid sync process out into more manageable classes. Notably, this moves the sync process to a distinct, 2-step flow: 1. Import stage - we first make API calls and import Plaid data to "mirror" tables 2. Processing stage - read the raw data, apply business rules, build internal domain models and sync balances This provides several benefits: - Plaid syncs can now be "replayed" without fetching API data again - Mirror tables provide better audit and debugging capabilities - Eliminates the "all or nothing" sync behavior that is currently in place, which is brittle
This commit is contained in:
parent
5c82af0e8c
commit
03a146222d
72 changed files with 3763 additions and 706 deletions
|
@ -1,6 +1,13 @@
|
|||
class Loan < ApplicationRecord
|
||||
include Accountable
|
||||
|
||||
SUBTYPES = {
|
||||
"mortgage" => { short: "Mortgage", long: "Mortgage" },
|
||||
"student" => { short: "Student", long: "Student Loan" },
|
||||
"auto" => { short: "Auto", long: "Auto Loan" },
|
||||
"other" => { short: "Other", long: "Other Loan" }
|
||||
}.freeze
|
||||
|
||||
def monthly_payment
|
||||
return nil if term_months.nil? || interest_rate.nil? || rate_type.nil? || rate_type != "fixed"
|
||||
return Money.new(0, account.currency) if account.loan.original_balance.amount.zero? || term_months.zero?
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue