makes plaid really usable, allowing choosing on bank screen, and searchable on vendors page.
This commit is contained in:
@@ -16,12 +16,16 @@
|
||||
assert-can-see-client
|
||||
assert-present
|
||||
attach-tracing-resolvers
|
||||
cleanse-query
|
||||
limited-clients]]
|
||||
[auto-ap.plaid.core :as p]
|
||||
[clj-time.coerce :as coerce]
|
||||
[clj-time.core :as time]
|
||||
[clojure.tools.logging :as log]
|
||||
[datomic.api :as dc]))
|
||||
[datomic.api :as dc]
|
||||
[auto-ap.solr :as solr]
|
||||
[manifold.deferred :as de]
|
||||
[manifold.executor :as ex]))
|
||||
|
||||
(defn plaid-link-token [context value _]
|
||||
(when-not (:client_id value)
|
||||
@@ -128,6 +132,30 @@
|
||||
@(dc/transact conn [[:db/retractEntity (:id args)]])
|
||||
{:message "Item deleted."})
|
||||
|
||||
(defn search-merchants [context args _]
|
||||
(if-let [query (not-empty (cleanse-query (:query args)))]
|
||||
(let [search-query (str "name:(" query ")")]
|
||||
(for [{:keys [id name]} (solr/query solr/impl "plaid_merchants" {"query" search-query
|
||||
"fields" "id, name"})]
|
||||
{:id (Long/parseLong id)
|
||||
:name (first name)}))
|
||||
[]))
|
||||
|
||||
(def single-thread (ex/fixed-thread-executor 1))
|
||||
|
||||
(defn rebuild-search-index []
|
||||
(de/future-with
|
||||
single-thread
|
||||
(auto-ap.solr/index-documents-raw
|
||||
auto-ap.solr/impl
|
||||
"plaid_merchants"
|
||||
(for [[result] (dc/qseq {:query '[:find (pull ?v [:plaid-merchant/name :db/id])
|
||||
:in $
|
||||
:where [?v :plaid-merchant/name]]
|
||||
:args [(dc/db conn)]})]
|
||||
{"id" (:db/id result)
|
||||
"name" (:plaid-merchant/name result)}))))
|
||||
|
||||
(defn attach [schema]
|
||||
(->
|
||||
(merge-with merge schema
|
||||
@@ -162,7 +190,10 @@
|
||||
:sort {:type '(list :sort_item)}
|
||||
:start {:type 'Int}
|
||||
:per_page {:type 'Int}}
|
||||
:resolve :get-plaid-item-page}}
|
||||
:resolve :get-plaid-item-page}
|
||||
:search_plaid_merchants {:type '(list :plaid_merchant)
|
||||
:args {:query {:type 'String}}
|
||||
:resolve :search-plaid-merchants}}
|
||||
:mutations {:link_plaid {:type :message
|
||||
:args {:client_code {:type 'String}
|
||||
:public_token {:type 'String}}
|
||||
@@ -171,6 +202,7 @@
|
||||
:args {:id {:type :id}}
|
||||
:resolve :mutation/delete-plaid-item}}})
|
||||
(attach-tracing-resolvers {:plaid-link-token plaid-link-token
|
||||
:search-plaid-merchants search-merchants
|
||||
:get-plaid-item-page get-plaid-item-page
|
||||
:mutation/link-plaid link-plaid
|
||||
:mutation/delete-plaid-item delete-plaid-item})))
|
||||
|
||||
@@ -550,6 +550,7 @@
|
||||
:accounts {:type '(list :invoices_expense_accounts)}
|
||||
:payment {:type :payment}
|
||||
:expected_deposit {:type :expected_deposit}
|
||||
:plaid_merchant {:type :plaid_merchant}
|
||||
:vendor {:type :vendor}
|
||||
:bank_account {:type :bank_account}
|
||||
:date {:type 'String}
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
(map first)))
|
||||
(set (map :db/id (:user/clients id)))))))
|
||||
|
||||
(defn upsert-vendor [context {{:keys [id name hidden terms code print_as primary_contact secondary_contact address default_account_id invoice_reminder_schedule schedule_payment_dom terms_overrides account_overrides] :as in} :vendor} _]
|
||||
(defn upsert-vendor [context {{:keys [id name hidden terms code print_as primary_contact plaid_merchant secondary_contact address default_account_id invoice_reminder_schedule schedule_payment_dom terms_overrides account_overrides] :as in} :vendor} _]
|
||||
(when (and id (not (can-user-edit-vendor? id (:id context))))
|
||||
(assert-failure "This vendor is managed by Integreat. Please reach out to ben@integreatconsult.com for your changes."))
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
:vendor/legal-entity-tin (:legal_entity_tin in)
|
||||
:vendor/legal-entity-tin-type (enum->keyword (:legal_entity_tin_type in) "legal-entity-tin-type")
|
||||
:vendor/legal-entity-1099-type (enum->keyword (:legal_entity_1099_type in) "legal-entity-1099-type")
|
||||
:vendor/plaid-merchant plaid_merchant
|
||||
:vendor/account-overrides account-overrides
|
||||
:vendor/terms-overrides terms-overrides
|
||||
:vendor/schedule-payment-dom schedule-payment-dom
|
||||
|
||||
Reference in New Issue
Block a user