class PlaidAccount::Importer
  def initialize(plaid_account, account_snapshot:)
    @plaid_account = plaid_account
    @account_snapshot = account_snapshot
  end

  def import
    import_account_info
    import_transactions if account_snapshot.transactions_data.present?
    import_investments if account_snapshot.investments_data.present?
    import_liabilities if account_snapshot.liabilities_data.present?
  end

  private
    attr_reader :plaid_account, :account_snapshot

    def import_account_info
      plaid_account.upsert_plaid_snapshot!(account_snapshot.account_data)
    end

    def import_transactions
      plaid_account.upsert_plaid_transactions_snapshot!(account_snapshot.transactions_data)
    end

    def import_investments
      plaid_account.upsert_plaid_holdings_snapshot!(account_snapshot.investments_data)
    end

    def import_liabilities
      plaid_account.upsert_plaid_liabilities_snapshot!(account_snapshot.liabilities_data)
    end
end
