This commit is contained in:
2024-04-27 11:05:16 -07:00
parent 3e4a2b7322
commit d45c91d55c
5 changed files with 122 additions and 71 deletions

View File

@@ -1,21 +1,20 @@
(ns auto-ap.import.plaid
(:require
[auto-ap.datomic :refer [conn random-tempid]]
[auto-ap.import.common :refer [wrap-integration]]
[auto-ap.import.transactions :as t]
[auto-ap.logging :as alog]
[auto-ap.plaid.core :as p]
[auto-ap.solr]
[auto-ap.time :as atime]
[auto-ap.utils :refer [allow-once by]]
[clj-time.coerce :as coerce]
[clj-time.core :as time]
[datomic.api :as dc]
[digest :as di]
[manifold.deferred :as de]
[manifold.executor :as ex]
[clojure.string :as str]
[auto-ap.ezcater.core :as e]))
(:require [auto-ap.datomic :refer [conn random-tempid]]
[auto-ap.import.common :refer [wrap-integration]]
[auto-ap.import.transactions :as t]
[auto-ap.logging :as alog]
[auto-ap.plaid.core :as p]
[auto-ap.solr]
[auto-ap.time :as atime]
[auto-ap.utils :refer [allow-once by]]
[clj-time.coerce :as coerce]
[clj-time.core :as time]
[clojure.string :as str]
[datomic.api :as dc]
[digest :as di]
[iol-ion.utils :refer [remove-nils]]
[manifold.deferred :as de]
[manifold.executor :as ex]))
(defn get-plaid-accounts
([db]
@@ -86,31 +85,33 @@
"name" (:plaid-merchant/name result)}))))
(defn upsert-accounts []
(try
(doseq [[bank-account-id client-id external-id access-token] (get-plaid-accounts (dc/db conn))
]
(try
(let [accounts (p/get-accounts access-token)]
@(dc/transact
conn
(for [a (:accounts accounts)]
(try
(doseq [[bank-account-id client-id external-id access-token] (get-plaid-accounts (dc/db conn))]
(try
(let [accounts (p/get-accounts access-token)
item (p/get-item access-token)]
@(dc/transact
conn
(for [a (:accounts accounts)]
(remove-nils
{:plaid-account/external-id (:account_id a)
:plaid-account/last-synced (coerce/to-date (coerce/to-date-time (-> item :status :transactions :last_successful_update)))
:plaid-account/balance (or (some-> a
:balances
:current
double)
0.0) }))
)
(catch Exception e
(alog/warn ::couldnt-upsert-account :error e))))
(catch Exception e
(alog/warn ::couldnt-upsert-accounts :error e))))
0.0)}))))
(catch Exception e
(alog/warn ::couldnt-upsert-account :error e))))
(catch Exception e
(alog/warn ::couldnt-upsert-accounts :error e))))
(defn import-plaid-int []
(let [import-batch (t/start-import-batch :import-source/plaid "Automated plaid user")
(let [_ (upsert-accounts)
import-batch (t/start-import-batch :import-source/plaid "Automated plaid user")
end (atime/local-now)
start (time/plus end (time/days -30))
plaid-merchant->vendor-id (build-plaid-merchant->vendor-id)]