Basic Plaid Integration #1433
Reference in New Issue
Block a user
Delete Branch "zachgoll/plaid-integration"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR introduces a basic Plaid integration for our hosted app offering, which includes:
Below are some details of the changes and implementation.
Institution UI
Previously, we had an "Institutions" UI that allowed users to add accounts to "institutions" (which were really just "groups"). This feature was confusing (as reported by several users), and therefore, this PR removes it entirely. Now, users will see all manually tracked accounts in a single group and Plaid institutions in their own groups:
Syncable Concern
I've reworked
Syncableso that theFamily,PlaidItem, andAccountcan all be "synced". Each "syncable" is expected to implement it's own implementation ofsync_data:This method will be called by
Sync, which is a generic model that performs a "sync" against a specific model and handles errors:Initial Plaid Implementation
The Plaid domain consists of the following classes:
A
PlaidItemmaps 1:1 with Plaid Items while aPlaidAccountmaps 1:1 with Plaid Accounts. These classes useProvider::Plaidthrough thePlaidableconcern in order to fetch Plaid data. These classes are then responsible for providing mappings and transformations required prior to loading data to theAccount(Maybe domain).An
Accountcan optionally belong to aPlaidItem. In this case, it is a "linked account" and will be synced at both thePlaidItemlevel (fetching and storing Plaid data) and theAccountlevel (syncing balances and holdings).If an
Accountdoes not belong_to aPlaidItem, it is considered a "manually tracked account".