mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-24 15:49:39 +02:00
Add context to plaid sync errors
This commit is contained in:
parent
d73e7eacce
commit
9ec94cd1fa
3 changed files with 21 additions and 4 deletions
|
@ -28,9 +28,13 @@ class Family < ApplicationRecord
|
|||
account.sync_data(start_date: start_date)
|
||||
end
|
||||
|
||||
plaid_data = []
|
||||
|
||||
plaid_items.each do |plaid_item|
|
||||
plaid_item.sync_data(start_date: start_date)
|
||||
plaid_data << plaid_item.sync_data(start_date: start_date)
|
||||
end
|
||||
|
||||
plaid_data
|
||||
end
|
||||
|
||||
def post_sync
|
||||
|
|
|
@ -35,11 +35,13 @@ class PlaidItem < ApplicationRecord
|
|||
def sync_data(start_date: nil)
|
||||
update!(last_synced_at: Time.current)
|
||||
|
||||
fetch_and_load_plaid_data
|
||||
plaid_data = fetch_and_load_plaid_data
|
||||
|
||||
accounts.each do |account|
|
||||
account.sync_data(start_date: start_date)
|
||||
end
|
||||
|
||||
plaid_data
|
||||
end
|
||||
|
||||
def post_sync
|
||||
|
@ -53,10 +55,12 @@ class PlaidItem < ApplicationRecord
|
|||
|
||||
private
|
||||
def fetch_and_load_plaid_data
|
||||
data = {}
|
||||
item = plaid_provider.get_item(access_token).item
|
||||
update!(available_products: item.available_products, billed_products: item.billed_products)
|
||||
|
||||
fetched_accounts = plaid_provider.get_item_accounts(self).accounts
|
||||
data[:accounts] = fetched_accounts || []
|
||||
|
||||
internal_plaid_accounts = fetched_accounts.map do |account|
|
||||
internal_plaid_account = plaid_accounts.find_or_create_from_plaid_data!(account, family)
|
||||
|
@ -65,6 +69,7 @@ class PlaidItem < ApplicationRecord
|
|||
end
|
||||
|
||||
fetched_transactions = safe_fetch_plaid_data(:get_item_transactions)
|
||||
data[:transactions] = fetched_transactions || []
|
||||
|
||||
if fetched_transactions
|
||||
transaction do
|
||||
|
@ -81,6 +86,7 @@ class PlaidItem < ApplicationRecord
|
|||
end
|
||||
|
||||
fetched_investments = safe_fetch_plaid_data(:get_item_investments)
|
||||
data[:investments] = fetched_investments || []
|
||||
|
||||
if fetched_investments
|
||||
transaction do
|
||||
|
@ -95,6 +101,7 @@ class PlaidItem < ApplicationRecord
|
|||
end
|
||||
|
||||
fetched_liabilities = safe_fetch_plaid_data(:get_item_liabilities)
|
||||
data[:liabilities] = fetched_liabilities || []
|
||||
|
||||
if fetched_liabilities
|
||||
transaction do
|
||||
|
@ -109,6 +116,8 @@ class PlaidItem < ApplicationRecord
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
data
|
||||
end
|
||||
|
||||
def safe_fetch_plaid_data(method)
|
||||
|
|
|
@ -9,7 +9,8 @@ class Sync < ApplicationRecord
|
|||
start!
|
||||
|
||||
begin
|
||||
syncable.sync_data(start_date: start_date)
|
||||
data = syncable.sync_data(start_date: start_date)
|
||||
update!(data: data) if data
|
||||
complete!
|
||||
rescue StandardError => error
|
||||
fail! error
|
||||
|
@ -29,7 +30,10 @@ class Sync < ApplicationRecord
|
|||
end
|
||||
|
||||
def fail!(error)
|
||||
Sentry.capture_exception(error)
|
||||
Sentry.capture_exception(error) do |scope|
|
||||
scope.set_context("sync", { id: id })
|
||||
end
|
||||
|
||||
update! status: :failed, error: error.message, last_ran_at: Time.current
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue