mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 13:19:39 +02:00
Add post-sync hook (#1479)
This commit is contained in:
parent
d1b506d16c
commit
e641cfccd4
4 changed files with 21 additions and 14 deletions
|
@ -22,6 +22,10 @@ module Syncable
|
|||
raise NotImplementedError, "Subclasses must implement the `sync_data` method"
|
||||
end
|
||||
|
||||
def post_sync
|
||||
# no-op, syncable can optionally provide implementation
|
||||
end
|
||||
|
||||
def sync_error
|
||||
latest_sync.error
|
||||
end
|
||||
|
|
|
@ -32,6 +32,10 @@ class Family < ApplicationRecord
|
|||
end
|
||||
end
|
||||
|
||||
def post_sync
|
||||
broadcast_refresh
|
||||
end
|
||||
|
||||
def syncing?
|
||||
super || accounts.manual.any?(&:syncing?) || plaid_items.any?(&:syncing?)
|
||||
end
|
||||
|
|
|
@ -42,6 +42,10 @@ class PlaidItem < ApplicationRecord
|
|||
end
|
||||
end
|
||||
|
||||
def post_sync
|
||||
family.broadcast_refresh
|
||||
end
|
||||
|
||||
def destroy_later
|
||||
update!(scheduled_for_deletion: true)
|
||||
DestroyJob.perform_later(self)
|
||||
|
|
|
@ -8,32 +8,27 @@ class Sync < ApplicationRecord
|
|||
def perform
|
||||
start!
|
||||
|
||||
syncable.sync_data(start_date: start_date)
|
||||
|
||||
complete!
|
||||
rescue StandardError => error
|
||||
fail! error
|
||||
raise error if Rails.env.development?
|
||||
begin
|
||||
syncable.sync_data(start_date: start_date)
|
||||
complete!
|
||||
rescue StandardError => error
|
||||
fail! error
|
||||
raise error if Rails.env.development?
|
||||
ensure
|
||||
syncable.post_sync
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def family
|
||||
syncable.is_a?(Family) ? syncable : syncable.family
|
||||
end
|
||||
|
||||
def start!
|
||||
update! status: :syncing
|
||||
end
|
||||
|
||||
def complete!
|
||||
update! status: :completed, last_ran_at: Time.current
|
||||
|
||||
family.broadcast_refresh
|
||||
end
|
||||
|
||||
def fail!(error)
|
||||
update! status: :failed, error: error.message, last_ran_at: Time.current
|
||||
|
||||
family.broadcast_refresh
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue