Makes integreat run on datomic cloud
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
(ns auto-ap.datomic.accounts
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query uri]]
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query conn pull-many]]
|
||||
[clojure.string :as str]
|
||||
[datomic.api :as d]
|
||||
[datomic.client.api :as dc]
|
||||
[clojure.tools.logging :as log]))
|
||||
|
||||
(defn <-datomic [a]
|
||||
@@ -37,21 +37,21 @@
|
||||
(let [query (cond-> {:query {:find [(list 'pull '?e default-read)]
|
||||
:in ['$]
|
||||
:where [['?e :account/name]]}
|
||||
:args [(d/db (d/connect uri))]}
|
||||
:args [(dc/db conn)]}
|
||||
(:account-set args) (merge-query {:query {:in ['?account-set]
|
||||
:where [['?e :account/account-set '?account-set]]}
|
||||
:args [(:account-set args)]}))]
|
||||
(->>
|
||||
(d/query query)
|
||||
(dc/q query)
|
||||
(map first)
|
||||
(map <-datomic)))))
|
||||
|
||||
(defn get-by-id [id]
|
||||
(let [query {:query {:find [(list 'pull '?e default-read)]
|
||||
:in ['$ '?e]}
|
||||
:args [(d/db (d/connect uri) ) id]}]
|
||||
:args [(dc/db conn ) id]}]
|
||||
(->>
|
||||
(d/query query)
|
||||
(dc/q query)
|
||||
(map first)
|
||||
(map <-datomic)
|
||||
first)))
|
||||
@@ -59,38 +59,40 @@
|
||||
(defn get-for-vendor [vendor-id client-id]
|
||||
(if client-id
|
||||
(->>
|
||||
(d/q [:find (list 'pull '?e default-read)
|
||||
:in '$ '?v '?c
|
||||
:where '(or-join [?v ?c ?e]
|
||||
(and [?v :vendor/account-overrides ?ao]
|
||||
[?ao :vendor-account-override/client ?c]
|
||||
[?ao :vendor-account-override/account ?e])
|
||||
(and [?v :vendor/account-overrides ?ao]
|
||||
(not [?ao vendor-account-override/client ?c])
|
||||
[?v :vendor/default-account ?e])
|
||||
(and (not [?v :vendor/account-overrides])
|
||||
[?v :vendor/default-account ?e]))]
|
||||
(dc/q '[:find (pull ?e r)
|
||||
:in $ ?v ?c r
|
||||
:where (or-join [?v ?c ?e]
|
||||
(and [?v :vendor/account-overrides ?ao]
|
||||
[?ao :vendor-account-override/client ?c]
|
||||
[?ao :vendor-account-override/account ?e])
|
||||
(and [?v :vendor/account-overrides ?ao]
|
||||
(not [?ao :vendor-account-override/client ?c])
|
||||
[?v :vendor/default-account ?e])
|
||||
(and (not [?v :vendor/account-overrides])
|
||||
[?v :vendor/default-account ?e]))]
|
||||
|
||||
(d/db conn )
|
||||
(dc/db conn )
|
||||
vendor-id
|
||||
client-id)
|
||||
client-id
|
||||
default-read)
|
||||
(map first)
|
||||
(map <-datomic)
|
||||
first)
|
||||
(d/q [:find (list 'pull '?e default-read)
|
||||
:in '$ '?v
|
||||
:where '[?v :vendor/default-account ?e]]
|
||||
(<-datomic (dc/q '[:find (pull ?e r)
|
||||
:in $ ?v r
|
||||
:where [?v :vendor/default-account ?e]]
|
||||
|
||||
(d/db conn )
|
||||
vendor-id)))
|
||||
(dc/db conn )
|
||||
vendor-id
|
||||
default-read))))
|
||||
|
||||
(defn get-account-by-numeric-code-and-sets [numeric-code _]
|
||||
(let [query (cond-> {:query {:find ['(pull ?e [* {:account/type [:db/ident :db/id]}])]
|
||||
:in ['$ '?numeric-code]
|
||||
:where ['[?e :account/numeric-code ?numeric-code]]}
|
||||
:args [(d/db (d/connect uri)) numeric-code]})]
|
||||
:args [(dc/db conn) numeric-code]})]
|
||||
(->>
|
||||
(d/query query)
|
||||
(dc/q query)
|
||||
(map first)
|
||||
(map <-datomic)
|
||||
(first))))
|
||||
@@ -121,13 +123,13 @@
|
||||
|
||||
|
||||
(cond->> query
|
||||
true (d/query)
|
||||
true (dc/q)
|
||||
true (apply-sort-3 args)
|
||||
true (apply-pagination args))))
|
||||
|
||||
|
||||
(defn graphql-results [ids db _]
|
||||
(let [results (->> (d/pull-many db default-read ids)
|
||||
(let [results (->> (pull-many db default-read ids)
|
||||
(group-by :db/id))
|
||||
accounts (->> ids
|
||||
(map results)
|
||||
@@ -137,7 +139,7 @@
|
||||
|
||||
(defn get-graphql [args]
|
||||
(log/info "ARGS" args)
|
||||
(let [db (d/db conn)
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
matching-count]))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(ns auto-ap.datomic.bank-accounts
|
||||
(:require
|
||||
[auto-ap.datomic :refer [uri]]
|
||||
[datomic.api :as d]))
|
||||
[auto-ap.datomic :refer [conn]]
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(defn add-arg [query name value where & rest]
|
||||
(let [query (-> query
|
||||
@@ -21,10 +21,10 @@
|
||||
|
||||
(defn get-by-id [id]
|
||||
(->>
|
||||
(d/query (-> {:query {:find [default-read]
|
||||
(dc/q (-> {:query {:find [default-read]
|
||||
:in ['$]
|
||||
:where []}
|
||||
:args [(d/db (d/connect uri))]}
|
||||
:args [(dc/db conn)]}
|
||||
(add-arg '?e id ['?e])))
|
||||
(map first)
|
||||
(<-datomic)
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
(ns auto-ap.datomic.checks
|
||||
(:require [datomic.api :as d]
|
||||
[auto-ap.datomic :refer [merge-query apply-sort-3 apply-pagination add-sorter-fields conn]]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clojure.set :refer [rename-keys]]
|
||||
[clj-time.coerce :as c]
|
||||
[clojure.tools.logging :as log]))
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields
|
||||
apply-pagination
|
||||
apply-sort-3
|
||||
conn
|
||||
merge-query
|
||||
pull-many]]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clj-time.coerce :as c]
|
||||
[datomic.client.api :as dc]
|
||||
[clojure.set :refer [rename-keys]]
|
||||
[clojure.tools.logging :as log]))
|
||||
|
||||
(defn <-datomic [result]
|
||||
(-> result
|
||||
@@ -28,7 +35,7 @@
|
||||
{:transaction/_payment [:db/id :transaction/date]}])
|
||||
|
||||
(defn raw-graphql-ids
|
||||
([args] (raw-graphql-ids (d/db conn) args))
|
||||
([args] (raw-graphql-ids (dc/db conn) args))
|
||||
([db args]
|
||||
(let [check-number-like (try (Long/parseLong (:check-number-like args)) (catch Exception _ nil))
|
||||
query (cond-> {:query {:find []
|
||||
@@ -148,12 +155,12 @@
|
||||
|
||||
(log/info query)
|
||||
(cond->> query
|
||||
true (d/query)
|
||||
true (apply-sort-3 args)
|
||||
true (dc/q)
|
||||
true (apply-sort-3 (assoc args :default-asc? false))
|
||||
true (apply-pagination args)))))
|
||||
|
||||
(defn graphql-results [ids db _]
|
||||
(let [results (->> (d/pull-many db default-read ids)
|
||||
(let [results (->> (pull-many db default-read ids)
|
||||
(group-by :db/id))
|
||||
payments (->> ids
|
||||
(map results)
|
||||
@@ -163,7 +170,7 @@
|
||||
|
||||
(defn get-graphql [args]
|
||||
(log/info (:id args))
|
||||
(let [db (d/db conn)
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
@@ -174,13 +181,21 @@
|
||||
(->> {:query {:find ['?e]
|
||||
:in ['$ '[?e ...]]
|
||||
:where ['[?e :payment/date]]}
|
||||
:args [(d/db conn) ids]}
|
||||
(d/query)
|
||||
:args [(dc/db conn) ids]}
|
||||
(dc/q)
|
||||
(map first)
|
||||
vec)
|
||||
[]))
|
||||
|
||||
(defn get-by-id [id]
|
||||
(->>
|
||||
(d/pull (d/db conn) default-read id)
|
||||
(dc/pull (dc/db conn) default-read id)
|
||||
(<-datomic)))
|
||||
|
||||
(defn pay [db e amount]
|
||||
(let [current-outstanding-balance (-> (dc/pull db [:invoice/outstanding-balance] e) :invoice/outstanding-balance)
|
||||
new-outstanding-balance (- current-outstanding-balance amount)]
|
||||
[[:db/add e :invoice/outstanding-balance new-outstanding-balance]
|
||||
[:db/add e :invoice/status (if (> new-outstanding-balance 0)
|
||||
:invoice-status/unpaid
|
||||
:invoice-status/paid)]]))
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
(ns auto-ap.datomic.clients
|
||||
(:require
|
||||
[auto-ap.datomic :refer [conn uri]]
|
||||
[auto-ap.datomic :refer [conn]]
|
||||
[auto-ap.search :as search]
|
||||
[clj-time.coerce :as coerce]
|
||||
[datomic.api :as d]))
|
||||
[clojure.string :as str]
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(defn cleanse [e]
|
||||
(-> e
|
||||
@@ -27,7 +29,7 @@
|
||||
(update :bank-account/sort-order (fn [so] (or so i)))))
|
||||
(range) bas)))))
|
||||
(defn get-all []
|
||||
(->> (d/q '[:find (pull ?e [*
|
||||
(->> (dc/q '[:find (pull ?e [*
|
||||
{:client/square-integration-status [:integration-status/message
|
||||
:integration-status/last-attempt
|
||||
:integration-status/last-updated
|
||||
@@ -56,14 +58,13 @@
|
||||
{:plaid-item/_client [*]}
|
||||
{:client/emails [:db/id :email-contact/email :email-contact/description]}])
|
||||
:where [?e :client/name]]
|
||||
(d/db (d/connect uri)))
|
||||
(dc/db conn))
|
||||
(map first)
|
||||
(map cleanse)))
|
||||
|
||||
(defn get-by-id [id]
|
||||
|
||||
(->>
|
||||
(d/pull (d/db conn )
|
||||
(dc/pull (dc/db conn )
|
||||
'[* {:client/bank-accounts [* {:bank-account/type [*]
|
||||
:bank-account/yodlee-account [:yodlee-account/name :yodlee-account/id :yodlee-account/number]
|
||||
:bank-account/intuit-bank-account [:intuit-bank-account/name :intuit-bank-account/external-id :db/id]
|
||||
@@ -79,9 +80,28 @@
|
||||
|
||||
(defn code->id [code]
|
||||
(->>
|
||||
(d/query (-> {:query {:find ['?e]
|
||||
(dc/q (-> {:query {:find ['?e]
|
||||
:in ['$ '?code]
|
||||
:where [['?e :client/code '?code ]]}
|
||||
:args [(d/db (d/connect uri)) code]}))
|
||||
:args [(dc/db conn) code]}))
|
||||
(first)
|
||||
(first)))
|
||||
|
||||
(defn best-match [identifier]
|
||||
(first (search/search-ids {:q (str/replace identifier #"[\(\)\-/\*\]\[\#:\&]" " ")} "client")))
|
||||
|
||||
(defn exact-match [identifier]
|
||||
(first (search/search-ids {:exact-match (str/upper-case identifier)} "client")))
|
||||
|
||||
(defn rebuild-search-index []
|
||||
(search/full-index-query
|
||||
(for [result (map first (dc/qseq '[:find (pull ?v [:client/name :client/matches :db/id])
|
||||
:in $
|
||||
:where [?v :client/code]]
|
||||
(dc/db conn)))
|
||||
match (conj (or (:client/matches result) [])
|
||||
(:client/name result))]
|
||||
{:id (:db/id result)
|
||||
:text match
|
||||
:exact-match (str/upper-case match)})
|
||||
"client"))
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
(ns auto-ap.datomic.expected-deposit
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query]]
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query pull-many]]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clj-time.coerce :as c]
|
||||
[datomic.api :as d]))
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(defn <-datomic [result]
|
||||
(let [transaction (first (:transaction/_expected-deposit result))
|
||||
@@ -88,12 +88,12 @@
|
||||
:where ['[?e :expected-deposit/date ?sort-default]]}}))]
|
||||
|
||||
(cond->> query
|
||||
true (d/query)
|
||||
true (dc/q)
|
||||
true (apply-sort-3 args)
|
||||
true (apply-pagination args))))
|
||||
|
||||
(defn graphql-results [ids db _]
|
||||
(let [results (->> (d/pull-many db default-read ids)
|
||||
(let [results (->> (pull-many db default-read ids)
|
||||
(group-by :db/id))
|
||||
payments (->> ids
|
||||
(map results)
|
||||
@@ -101,7 +101,7 @@
|
||||
(mapv <-datomic)
|
||||
(map (fn get-totals [ed]
|
||||
(assoc ed :totals
|
||||
(->> (d/q '[:find ?d4 (count ?c) (sum ?a)
|
||||
(->> (dc/q '[:find ?d4 (count ?c) (sum ?a)
|
||||
:in $ ?ed
|
||||
:where [?ed :expected-deposit/charges ?c]
|
||||
[?c :charge/total ?a]
|
||||
@@ -110,7 +110,7 @@
|
||||
[(clj-time.coerce/from-date ?d) ?d2]
|
||||
[(auto-ap.time/localize ?d2) ?d3]
|
||||
[(clj-time.coerce/to-local-date ?d3) ?d4]]
|
||||
(d/db conn)
|
||||
(dc/db conn)
|
||||
(:db/id ed))
|
||||
(map (fn [[date count amount]]
|
||||
{:date (c/to-date-time date)
|
||||
@@ -119,7 +119,7 @@
|
||||
payments))
|
||||
|
||||
(defn get-graphql [args]
|
||||
(let [db (d/db conn)
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
(ns auto-ap.datomic.invoices
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query uri]]
|
||||
:refer [add-sorter-fields
|
||||
apply-pagination
|
||||
apply-sort-3
|
||||
conn
|
||||
merge-query
|
||||
pull-many
|
||||
remove-nils]]
|
||||
[auto-ap.datomic.accounts :as d-accounts]
|
||||
[auto-ap.datomic.vendors :as d-vendors]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
@@ -9,7 +15,7 @@
|
||||
[clj-time.coerce :as coerce]
|
||||
[clj-time.core :as time]
|
||||
[clojure.set :refer [rename-keys]]
|
||||
[datomic.api :as d]))
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(def default-read '[*
|
||||
{:invoice/client [:client/name :db/id :client/locations :client/code]}
|
||||
@@ -37,7 +43,7 @@
|
||||
|
||||
(defn raw-graphql-ids
|
||||
([args]
|
||||
(raw-graphql-ids (d/db conn) args))
|
||||
(raw-graphql-ids (dc/db conn) args))
|
||||
([db args]
|
||||
(->> (cond-> {:query {:find []
|
||||
:in ['$]
|
||||
@@ -164,13 +170,13 @@
|
||||
(merge-query {:query {:find ['?sort-default '?e ]
|
||||
:where ['[?e :invoice/client]
|
||||
'[?e :invoice/date ?sort-default]]}}) )
|
||||
(d/query)
|
||||
(dc/q)
|
||||
(apply-sort-3 args)
|
||||
(apply-pagination args))))
|
||||
|
||||
|
||||
(defn graphql-results [ids db _]
|
||||
(let [results (->> (d/pull-many db default-read ids)
|
||||
(let [results (->> (pull-many db default-read ids)
|
||||
(group-by :db/id))
|
||||
|
||||
invoices (->> ids
|
||||
@@ -182,11 +188,11 @@
|
||||
(defn sum-outstanding [ids]
|
||||
|
||||
(->>
|
||||
(d/query {:query {:find ['?id '?o]
|
||||
(dc/q {:query {:find ['?id '?o]
|
||||
:in ['$ '[?id ...]]
|
||||
:where ['[?id :invoice/outstanding-balance ?o]]
|
||||
}
|
||||
:args [(d/db conn)
|
||||
:args [(dc/db conn)
|
||||
ids]})
|
||||
(map last)
|
||||
(reduce
|
||||
@@ -196,11 +202,11 @@
|
||||
(defn sum-total-amount [ids]
|
||||
|
||||
(->>
|
||||
(d/query {:query {:find ['?id '?o]
|
||||
(dc/q {:query {:find ['?id '?o]
|
||||
:in ['$ '[?id ...]]
|
||||
:where ['[?id :invoice/total ?o]]
|
||||
}
|
||||
:args [(d/db conn)
|
||||
:args [(dc/db conn)
|
||||
ids]})
|
||||
(map last)
|
||||
(reduce
|
||||
@@ -209,7 +215,7 @@
|
||||
|
||||
(defn get-graphql [args]
|
||||
|
||||
(let [db (d/db (d/connect uri))
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)
|
||||
outstanding (sum-outstanding ids-to-retrieve)
|
||||
total-amount (sum-total-amount ids-to-retrieve)]
|
||||
@@ -221,34 +227,34 @@
|
||||
total-amount]))
|
||||
|
||||
(defn get-by-id [id]
|
||||
(-> (d/db (d/connect uri))
|
||||
(d/pull default-read id)
|
||||
(-> (dc/db conn)
|
||||
(dc/pull default-read id)
|
||||
(<-datomic)))
|
||||
|
||||
(defn get-multi [ids]
|
||||
(map <-datomic
|
||||
(-> (d/db (d/connect uri))
|
||||
(d/pull-many default-read ids))))
|
||||
(pull-many (dc/db conn) default-read ids )))
|
||||
|
||||
|
||||
|
||||
(defn find-conflicting [{:keys [:invoice/invoice-number :invoice/vendor :invoice/client :db/id]}]
|
||||
|
||||
(->> (d/query
|
||||
(cond-> {:query {:find [(list 'pull '?e default-read)]
|
||||
:in ['$ '?invoice-number '?vendor '?client '?invoice-id]
|
||||
:where '[[?e :invoice/invoice-number ?invoice-number]
|
||||
[?e :invoice/vendor ?vendor]
|
||||
[?e :invoice/client ?client]
|
||||
(not [?e :invoice/status :invoice-status/voided])
|
||||
[(not= ?e ?invoice-id)]]}
|
||||
:args [(d/db (d/connect uri)) invoice-number vendor client (or id 0)]}))
|
||||
|
||||
(->> (dc/q
|
||||
(cond-> {:query {:find [(list 'pull '?e default-read)]
|
||||
:in ['$ '?invoice-number '?vendor '?client '?invoice-id]
|
||||
:where '[[?e :invoice/invoice-number ?invoice-number]
|
||||
[?e :invoice/vendor ?vendor]
|
||||
[?e :invoice/client ?client]
|
||||
(not [?e :invoice/status :invoice-status/voided])
|
||||
[(not= ?e ?invoice-id)]]}
|
||||
|
||||
:args [(dc/db conn) invoice-number vendor client (or id 0)]}))
|
||||
(map first)
|
||||
(map <-datomic)))
|
||||
|
||||
|
||||
(defn get-existing-set []
|
||||
(let [vendored-results (set (d/query {:query {:find ['?vendor '?client '?invoice-number]
|
||||
(let [vendored-results (set (dc/q {:query {:find ['?vendor '?client '?invoice-number]
|
||||
:in ['$]
|
||||
:where '[[?e :invoice/invoice-number ?invoice-number]
|
||||
[?e :invoice/vendor ?vendor]
|
||||
@@ -256,8 +262,8 @@
|
||||
(not [?e :invoice/status :invoice-status/voided])
|
||||
]}
|
||||
|
||||
:args [(d/db (d/connect uri))]}))
|
||||
vendorless-results (->> (d/query {:query {:find ['?client '?invoice-number]
|
||||
:args [(dc/db conn)]}))
|
||||
vendorless-results (->> (dc/q {:query {:find ['?client '?invoice-number]
|
||||
:in ['$]
|
||||
:where '[[?e :invoice/invoice-number ?invoice-number]
|
||||
(not [?e :invoice/vendor])
|
||||
@@ -265,7 +271,7 @@
|
||||
(not [?e :invoice/status :invoice-status/voided])
|
||||
]}
|
||||
|
||||
:args [(d/db (d/connect uri))]})
|
||||
:args [(dc/db conn)]})
|
||||
(mapv (fn [[client invoice-number]]
|
||||
[nil client invoice-number]) )
|
||||
set)]
|
||||
@@ -276,37 +282,37 @@
|
||||
(->> {:query {:find ['?e]
|
||||
:in ['$ '[?e ...]]
|
||||
:where ['[?e :invoice/date]]}
|
||||
:args [(d/db conn) ids]}
|
||||
(d/query)
|
||||
:args [(dc/db conn) ids]}
|
||||
(dc/q)
|
||||
(map first)
|
||||
vec)
|
||||
[]))
|
||||
|
||||
(defn code-invoice [invoice]
|
||||
(let [db (d/db auto-ap.datomic/conn)
|
||||
(let [db (dc/db auto-ap.datomic/conn)
|
||||
client-id (:invoice/client invoice)
|
||||
vendor-id (:invoice/vendor invoice)
|
||||
date (:invoice/date invoice)
|
||||
vendor (d/pull db '[*] vendor-id)
|
||||
vendor (dc/pull db '[*] vendor-id)
|
||||
due (when (:vendor/terms vendor)
|
||||
(-> date
|
||||
(coerce/to-date-time)
|
||||
(time/plus (time/days (d-vendors/terms-for-client-id vendor client-id)))
|
||||
coerce/to-date))
|
||||
automatically-paid? (boolean (seq (d/q '[:find [?c ...]
|
||||
:in $ ?v ?c
|
||||
:where [?v :vendor/automatically-paid-when-due ?c]]
|
||||
automatically-paid? (boolean (seq (map first (dc/q '[:find ?c
|
||||
:in $ ?v ?c
|
||||
:where [?v :vendor/automatically-paid-when-due ?c]]
|
||||
db
|
||||
vendor-id
|
||||
client-id))))
|
||||
[schedule-payment-dom] (map first (dc/q '[:find ?dom
|
||||
:in $ ?v ?c
|
||||
:where [?v :vendor/schedule-payment-dom ?sp ]
|
||||
[?sp :vendor-schedule-payment-dom/client ?c]
|
||||
[?sp :vendor-schedule-payment-dom/dom ?dom]]
|
||||
db
|
||||
vendor-id
|
||||
client-id)))
|
||||
[schedule-payment-dom] (d/q '[:find [?dom ...]
|
||||
:in $ ?v ?c
|
||||
:where [?v :vendor/schedule-payment-dom ?sp ]
|
||||
[?sp :vendor-schedule-payment-dom/client ?c]
|
||||
[?sp :vendor-schedule-payment-dom/dom ?dom]]
|
||||
db
|
||||
vendor-id
|
||||
client-id)
|
||||
client-id))
|
||||
|
||||
scheduled-payment (cond automatically-paid?
|
||||
due
|
||||
@@ -324,3 +330,19 @@
|
||||
true (assoc :invoice/expense-accounts [default-expense-account])
|
||||
due (assoc :invoice/due due)
|
||||
scheduled-payment (assoc :invoice/scheduled-payment scheduled-payment))))
|
||||
|
||||
(defn propose-invoice [db invoice]
|
||||
(let [existing? (boolean (seq (dc/q '[:find ?i
|
||||
:in $ ?invoice-number ?client ?vendor
|
||||
:where
|
||||
[?i :invoice/invoice-number ?invoice-number]
|
||||
[?i :invoice/client ?client]
|
||||
[?i :invoice/vendor ?vendor]
|
||||
(not [?i :invoice/status :invoice-status/voided])]
|
||||
db
|
||||
(:invoice/invoice-number invoice)
|
||||
(:invoice/client invoice)
|
||||
(:invoice/vendor invoice))))]
|
||||
(if existing?
|
||||
[]
|
||||
[(doto (remove-nils invoice) println)])))
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
(ns auto-ap.datomic.ledger
|
||||
(:require [datomic.api :as d]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[auto-ap.datomic :refer [merge-query apply-sort-3 apply-pagination add-sorter-fields conn]]
|
||||
[clj-time.coerce :as c]
|
||||
[auto-ap.datomic.accounts :as d-accounts]))
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields
|
||||
apply-pagination
|
||||
apply-sort-3
|
||||
conn
|
||||
merge-query
|
||||
pull-many]]
|
||||
[auto-ap.datomic.accounts :as d-accounts]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clj-time.coerce :as c]
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(defn raw-graphql-ids [db args]
|
||||
(let [query (cond-> {:query {:find []
|
||||
@@ -120,12 +127,12 @@
|
||||
true
|
||||
(merge-query {:query {:find ['?sort-default '?e] :where ['[?e :journal-entry/date ?sort-default]]}}))]
|
||||
(->> query
|
||||
(d/query)
|
||||
(dc/q)
|
||||
(apply-sort-3 (update args :sort conj {:sort-key "default-2" :asc true}))
|
||||
(apply-pagination args))))
|
||||
|
||||
(defn graphql-results [ids db _]
|
||||
(let [results (->> (d/pull-many db '[* {:journal-entry/client [:client/name :client/code :db/id]
|
||||
(let [results (->> (pull-many db '[* {:journal-entry/client [:client/name :client/code :db/id]
|
||||
:journal-entry/vendor [:vendor/name :db/id]
|
||||
:journal-entry/line-items [* {:journal-entry-line/account [*
|
||||
{:account/type [*]}
|
||||
@@ -154,7 +161,7 @@
|
||||
(map first))))
|
||||
|
||||
(defn get-graphql [args]
|
||||
(let [db (d/db conn)
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
matching-count]))
|
||||
@@ -164,8 +171,8 @@
|
||||
(->> {:query {:find ['?e]
|
||||
:in ['$ '[?e ...]]
|
||||
:where ['[?e :journal-entry/date]]}
|
||||
:args [(d/db conn) ids]}
|
||||
(d/query)
|
||||
:args [(dc/db conn) ids]}
|
||||
(dc/q)
|
||||
(map first)
|
||||
vec)
|
||||
[]))
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
(ns auto-ap.datomic.reports
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query]]
|
||||
:refer [add-sorter-fields
|
||||
apply-pagination
|
||||
apply-sort-3
|
||||
conn
|
||||
merge-query
|
||||
pull-many]]
|
||||
[auto-ap.graphql.utils :refer [can-see-client? limited-clients]]
|
||||
[clj-time.coerce :as c]
|
||||
[datomic.api :as d]))
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(defn raw-graphql-ids [db args]
|
||||
(let [query (cond-> {:query {:find []
|
||||
@@ -33,12 +38,12 @@
|
||||
true
|
||||
(merge-query {:query {:find ['?sort-default '?e] :where ['[?e :report/created ?sort-default]]}}))]
|
||||
(->> query
|
||||
(d/query)
|
||||
(dc/q)
|
||||
(apply-sort-3 (update args :sort conj {:sort-key "default-2" :asc true}))
|
||||
(apply-pagination args))))
|
||||
|
||||
(defn graphql-results [ids db args]
|
||||
(let [results (->> (d/pull-many db '[:db/id :report/client :report/created :report/url :report/name :report/creator]
|
||||
(let [results (->> (pull-many db '[:db/id :report/client :report/created :report/url :report/name :report/creator]
|
||||
ids)
|
||||
(map #(update % :report/created c/from-date))
|
||||
(group-by :db/id))]
|
||||
@@ -53,7 +58,7 @@
|
||||
(map :db/id (:report/client r))))))))
|
||||
|
||||
(defn get-graphql [args]
|
||||
(let [db (d/db conn)
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
(ns auto-ap.datomic.sales-orders
|
||||
(:require [auto-ap.datomic :refer [add-sorter-fields apply-pagination apply-sort-3 merge-query uri]]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clj-time.coerce :as c]
|
||||
[datomic.api :as d]
|
||||
[clojure.tools.logging :as log]
|
||||
[clojure.set :as set]))
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields-2
|
||||
apply-pagination
|
||||
apply-sort-3
|
||||
merge-query
|
||||
pull-many
|
||||
conn]]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clj-time.coerce :as c]
|
||||
[clojure.set :as set]
|
||||
[clojure.tools.logging :as log]
|
||||
[datomic.client.api :as dc]
|
||||
))
|
||||
|
||||
(defn <-datomic [result]
|
||||
(-> result
|
||||
@@ -21,12 +29,96 @@
|
||||
{:sales-order/client [:client/name :db/id :client/code]
|
||||
:sales-order/charges [* {:charge/processor [:db/ident]} {:expected-deposit/_charges [:db/id]}]}])
|
||||
|
||||
#_(defn client-index-search [db attr client-ids [start end]]
|
||||
(for [c client-ids
|
||||
d
|
||||
(dc/q '[:find ?e
|
||||
:in $ ?start ?end
|
||||
:where [?e :sales-order/client+date ?g]
|
||||
[(>= ?g ?start)]
|
||||
[(<= ?g ?end)]]
|
||||
db [c start] [c end])
|
||||
|
||||
#_(dc/index-range db {:attrid attr
|
||||
:start [c start]
|
||||
:end [c end]})]
|
||||
(first d)))
|
||||
|
||||
#_(comment
|
||||
(do
|
||||
(println "starting")
|
||||
(doseq [n (partition-all 500 (dc/q '[:find ?s ?d
|
||||
:where [?s :sales-order/date ?d]]
|
||||
(dc/db conn)))]
|
||||
(print ".")
|
||||
(dc/transact conn {:tx-data (map (fn [[n d]] {:db/id n :sales-order/date d}) n)}))
|
||||
(println "done"))
|
||||
|
||||
|
||||
(time (count (client-index-search (dc/db conn)
|
||||
:sales-order/client+date
|
||||
[3575611821801781]
|
||||
[#inst "2021-05-21T18:06:02.000-00:00"
|
||||
#inst "2022-09-25T18:06:02.000-00:00"]
|
||||
)))
|
||||
|
||||
(time (count (dc/q '[:find ?e
|
||||
:in $ ?client ?start ?end
|
||||
:where [?e :sales-order/client ?client]
|
||||
[?e :sales-order/date ?date]
|
||||
[(>= ?date ?start)]
|
||||
[(<= ?date ?end)]]
|
||||
(dc/db conn)
|
||||
3575611821801781
|
||||
|
||||
#inst "2021-05-21T18:06:02.000-00:00"
|
||||
#inst "2022-09-25T18:06:02.000-00:00"
|
||||
)))
|
||||
|
||||
(time (do (count (dc/q '[:find ?e,
|
||||
:in $ [[?s1 ?e1]]
|
||||
:where
|
||||
#_[(untuple ?period) [?s1 ?e1]]
|
||||
[(q '[:find ?e
|
||||
:in $ ?s1 ?e1
|
||||
:where [?e :sales-order/client+date ?g]
|
||||
[(>= ?g ?s1)]
|
||||
[(<= ?g ?e1)]]
|
||||
$ ?s1 ?e1) [?e ...]]
|
||||
]
|
||||
(dc/db conn) [[[3575611821801781 #inst "2022-08-21T18:06:02.000-00:00" ] [3575611821801781 #inst "2022-09-25T18:06:02.000-00:00"]]
|
||||
[[3575611821801766 #inst "2022-08-21T18:06:02.000-00:00" ] [3575611821801766 #inst "2022-09-25T18:06:02.000-00:00"]]]))
|
||||
(println "done")))
|
||||
|
||||
(dc/index-range (dc/db conn) {:attrid :sales-order/date+client3
|
||||
:start [#inst "2022-08-25T18:06:02.000-00:00" ]
|
||||
:end [#inst "2022-08-25T20:06:02.000-00:00" ]})
|
||||
(dc/pull (dc/db conn) '[*] :sales-order/date+client3)
|
||||
(dc/pull (dc/db conn) '[*] 5040161313201309)
|
||||
|
||||
#_(time (do (dc/q {:query '{:find [(count ?x)],
|
||||
:in [$ ?client-id],
|
||||
:where [[?e :sales-order/date+client3 ?x]]},
|
||||
:args [(dc/db conn) 3575611821801781]})
|
||||
(println "done")))
|
||||
|
||||
#_(datomic.dev-local.async/return-1)
|
||||
|
||||
(clojure.core.async/<!! (dca/transact conn {:tx-data [{:db/ident :sales-order/client+date
|
||||
:db/valueType :db.type/tuple
|
||||
:db/tupleAttrs [:sales-order/client :sales-order/date]
|
||||
:db/cardinality :db.cardinality/one}]
|
||||
:timeout 600000}))
|
||||
|
||||
|
||||
)
|
||||
|
||||
(defn raw-graphql-ids [db args]
|
||||
(let [query (cond-> {:query {:find []
|
||||
:in ['$]
|
||||
:where []}
|
||||
:args [db]}
|
||||
(:sort args) (add-sorter-fields {"client" ['[?e :sales-order/client ?c]
|
||||
(:sort args) (add-sorter-fields-2 {"client" ['[?e :sales-order/client ?c]
|
||||
'[?c :client/name ?sort-client]]
|
||||
"location" ['[?e :sales-order/location ?sort-location]]
|
||||
"source" ['[?e :sales-order/source ?sort-source]]
|
||||
@@ -100,17 +192,17 @@
|
||||
:args [(:total args)]})
|
||||
|
||||
true
|
||||
(merge-query {:query {:find ['?sort-default '?e]
|
||||
:where ['[?e :sales-order/date ?sort-default]]}}))]
|
||||
(merge-query {:query {:find ['?date '?e]
|
||||
:where ['[?e :sales-order/date ?date]]}}))]
|
||||
(log/info "Sales query" query)
|
||||
|
||||
(cond->> query
|
||||
true (d/query)
|
||||
true (dc/q)
|
||||
true (apply-sort-3 (assoc args :default-asc? false))
|
||||
true (apply-pagination args))))
|
||||
|
||||
(defn graphql-results [ids db _]
|
||||
(let [results (->> (d/pull-many db default-read ids)
|
||||
(let [results (->> (pull-many db default-read ids)
|
||||
(group-by :db/id))
|
||||
payments (->> ids
|
||||
(map results)
|
||||
@@ -121,19 +213,19 @@
|
||||
(defn summarize-orders [ids]
|
||||
|
||||
(let [[total tax] (->>
|
||||
(d/query {:query {:find ['(sum ?t) '(sum ?tax)]
|
||||
(dc/q {:query {:find ['(sum ?t) '(sum ?tax)]
|
||||
:with ['?id]
|
||||
:in ['$ '[?id ...]]
|
||||
:where ['[?id :sales-order/total ?t]
|
||||
'[?id :sales-order/tax ?tax]]}
|
||||
:args [(d/db (d/connect uri))
|
||||
:args [(dc/db conn)
|
||||
ids]})
|
||||
first)]
|
||||
{:total total
|
||||
:tax tax}))
|
||||
|
||||
(defn get-graphql [args]
|
||||
(let [db (d/db (d/connect uri))
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
matching-count
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
(ns auto-ap.datomic.transaction-rules
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 merge-query uri]]
|
||||
:refer [add-sorter-fields
|
||||
apply-pagination
|
||||
apply-sort-3
|
||||
conn
|
||||
merge-query
|
||||
pull-many]]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clojure.string :as str]
|
||||
[datomic.api :as d]))
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(defn <-datomic [result]
|
||||
result)
|
||||
@@ -72,12 +77,12 @@
|
||||
|
||||
|
||||
(cond->> query
|
||||
true (d/query)
|
||||
true (dc/q)
|
||||
true (apply-sort-3 args)
|
||||
true (apply-pagination args))))
|
||||
|
||||
(defn graphql-results [ids db _]
|
||||
(let [results (->> (d/pull-many db default-read ids)
|
||||
(let [results (->> (pull-many db default-read ids)
|
||||
(group-by :db/id))
|
||||
transaction-rules (->> ids
|
||||
(map results)
|
||||
@@ -86,19 +91,19 @@
|
||||
transaction-rules))
|
||||
|
||||
(defn get-graphql [args]
|
||||
(let [db (d/db (d/connect uri))
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
matching-count]))
|
||||
|
||||
(defn get-by-id [id]
|
||||
(->>
|
||||
(d/pull (d/db (d/connect uri)) default-read id)
|
||||
(dc/pull (dc/db conn) default-read id)
|
||||
(<-datomic)))
|
||||
|
||||
(defn get-all []
|
||||
(mapv first
|
||||
(d/query {:query {:find [(list 'pull '?e default-read )]
|
||||
:in ['$]
|
||||
:where ['[?e :transaction-rule/transaction-approval-status]]}
|
||||
:args [(d/db (d/connect uri))]})))
|
||||
(dc/q {:query {:find [(list 'pull '?e default-read )]
|
||||
:in ['$]
|
||||
:where ['[?e :transaction-rule/transaction-approval-status]]}
|
||||
:args [(dc/db conn)]})))
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
(ns auto-ap.datomic.transactions
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query uri]]
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 conn merge-query conn pull-many]]
|
||||
[auto-ap.datomic.accounts :as d-accounts]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clj-time.coerce :as coerce]
|
||||
[clojure.string :as str]
|
||||
[clojure.tools.logging :as log]
|
||||
[datomic.api :as d]))
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(defn potential-duplicate-ids [db args]
|
||||
(when (and (:potential-duplicates args)
|
||||
(:bank-account-id args))
|
||||
(->> (d/q '[:find ?tx ?amount ?date
|
||||
(->> (dc/q '[:find ?tx ?amount ?date
|
||||
:in $ ?ba
|
||||
:where
|
||||
[?tx :transaction/bank-account ?ba]
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
|
||||
(defn raw-graphql-ids
|
||||
([args] (raw-graphql-ids (d/db conn) args))
|
||||
([args] (raw-graphql-ids (dc/db conn) args))
|
||||
([db args]
|
||||
(let [potential-duplicates (potential-duplicate-ids db args)
|
||||
query (cond-> {:query {:find []
|
||||
@@ -169,28 +169,28 @@
|
||||
'(not [?e :transaction/approval-status :transaction-approval-status/suppressed])]}}))]
|
||||
(log/info "query is" query)
|
||||
(cond->> query
|
||||
true (d/query)
|
||||
true (dc/q)
|
||||
true (apply-sort-3 (assoc args :default-asc? false))
|
||||
true (apply-pagination args)))))
|
||||
|
||||
(defn graphql-results [ids db _]
|
||||
(let [results (->> (d/pull-many db '[* {:transaction/client [:client/name :db/id :client/code]
|
||||
:transaction/approval-status [:db/ident :db/id]
|
||||
:transaction/bank-account [:bank-account/name :bank-account/code :bank-account/yodlee-account-id :db/id :bank-account/locations :bank-account/current-balance]
|
||||
:transaction/forecast-match [:db/id :forecasted-transaction/identifier]
|
||||
:transaction/vendor [:db/id :vendor/name]
|
||||
:transaction/matched-rule [:db/id :transaction-rule/note]
|
||||
:transaction/payment [:db/id :payment/date]
|
||||
:transaction/expected-deposit [:db/id :expected-deposit/date]
|
||||
:transaction/accounts [:transaction-account/amount
|
||||
:db/id
|
||||
:transaction-account/location
|
||||
{:transaction-account/account [:account/name :db/id
|
||||
:account/location
|
||||
{:account/client-overrides [:account-client-override/name
|
||||
{:account-client-override/client [:db/id]}]}]}]
|
||||
:transaction/yodlee-merchant [:db/id :yodlee-merchant/yodlee-id :yodlee-merchant/name]}]
|
||||
ids)
|
||||
(let [results (->> (pull-many db '[* {:transaction/client [:client/name :db/id :client/code]
|
||||
:transaction/approval-status [:db/ident :db/id]
|
||||
:transaction/bank-account [:bank-account/name :bank-account/code :bank-account/yodlee-account-id :db/id :bank-account/locations :bank-account/current-balance]
|
||||
:transaction/forecast-match [:db/id :forecasted-transaction/identifier]
|
||||
:transaction/vendor [:db/id :vendor/name]
|
||||
:transaction/matched-rule [:db/id :transaction-rule/note]
|
||||
:transaction/payment [:db/id :payment/date]
|
||||
:transaction/expected-deposit [:db/id :expected-deposit/date]
|
||||
:transaction/accounts [:transaction-account/amount
|
||||
:db/id
|
||||
:transaction-account/location
|
||||
{:transaction-account/account [:account/name :db/id
|
||||
:account/location
|
||||
{:account/client-overrides [:account-client-override/name
|
||||
{:account-client-override/client [:db/id]}]}]}]
|
||||
:transaction/yodlee-merchant [:db/id :yodlee-merchant/yodlee-id :yodlee-merchant/name]}]
|
||||
ids)
|
||||
(map #(update % :transaction/date coerce/from-date))
|
||||
(map #(update % :transaction/post-date coerce/from-date))
|
||||
(map #(update % :transaction/accounts
|
||||
@@ -203,7 +203,7 @@
|
||||
(cond-> transaction
|
||||
(:transaction/payment transaction) (update-in [:transaction/payment :payment/date] coerce/from-date)
|
||||
(:transaction/expected-deposit transaction) (update-in [:transaction/expected-deposit :expected-deposit/date] coerce/from-date))
|
||||
))
|
||||
))
|
||||
(map #(dissoc % :transaction/id))
|
||||
(group-by :db/id))]
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
(map first))))
|
||||
|
||||
(defn get-graphql [args]
|
||||
(let [db (d/db (d/connect uri))
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
@@ -223,15 +223,15 @@
|
||||
(->> {:query {:find ['?e]
|
||||
:in ['$ '[?e ...]]
|
||||
:where ['[?e :transaction/date]]}
|
||||
:args [(d/db conn) ids]}
|
||||
(d/query)
|
||||
:args [(dc/db conn) ids]}
|
||||
(dc/q)
|
||||
(map first)
|
||||
vec)
|
||||
[]))
|
||||
|
||||
(defn get-by-id [id]
|
||||
(->
|
||||
(d/pull (d/db (d/connect uri))
|
||||
(dc/pull (dc/db conn)
|
||||
'[* {:transaction/client [:client/name :db/id :client/code :client/locations]
|
||||
:transaction/approval-status [:db/ident :db/id]
|
||||
:transaction/bank-account [:bank-account/name :bank-account/code :bank-account/yodlee-account-id :db/id :bank-account/locations :bank-account/current-balance]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(ns auto-ap.datomic.users
|
||||
(:require
|
||||
[auto-ap.datomic :refer [uri]]
|
||||
[datomic.api :as d]))
|
||||
[auto-ap.datomic :refer [conn]]
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(defn add-arg [query name value where & rest]
|
||||
(let [query (-> query
|
||||
@@ -16,35 +16,35 @@
|
||||
{:user/role [:db/ident]}])]
|
||||
:in ['$]
|
||||
:where []}
|
||||
:args [(d/db (d/connect uri))]}
|
||||
:args [(dc/db conn)]}
|
||||
(add-arg '?e id ['?e]))]
|
||||
|
||||
(->> (d/query query)
|
||||
(->> (dc/q query)
|
||||
(map first)
|
||||
(map #(update % :user/role :db/ident))
|
||||
first)))
|
||||
|
||||
(defn find-or-insert! [{:keys [:user/provider :user/provider-id] :as new-user}]
|
||||
(let [is-first-user? (not (seq (d/query {:query [:find '?e
|
||||
(let [is-first-user? (not (seq (dc/q {:query [:find '?e
|
||||
:in '$
|
||||
:where '[?e :user/provider]]
|
||||
:args [(d/db (d/connect uri))]})))
|
||||
:args [(dc/db conn)]})))
|
||||
user (some-> {:query [:find '(pull ?e [*
|
||||
{:user/clients [*]}
|
||||
{:user/role [:db/ident]}])
|
||||
:in '$ '?provider '?provider-id
|
||||
:where '[?e :user/provider ?provider]
|
||||
'[?e :user/provider-id ?provider-id]]
|
||||
:args [(d/db (d/connect uri)) provider provider-id]}
|
||||
(d/query)
|
||||
:args [(dc/db conn) provider provider-id]}
|
||||
(dc/q)
|
||||
first
|
||||
first
|
||||
(update :user/role :db/ident))]
|
||||
(if user
|
||||
user
|
||||
(let [new-user-trans @(d/transact (d/connect uri) [(cond-> new-user
|
||||
true (assoc :db/id "user")
|
||||
is-first-user? (assoc :user/role :user-role/admin))])]
|
||||
(let [new-user-trans (dc/transact conn {:tx-data [(cond-> new-user
|
||||
true (assoc :db/id "user")
|
||||
is-first-user? (assoc :user/role :user-role/admin))]})]
|
||||
(get-by-id (-> new-user-trans :tempids (get "user")))))))
|
||||
|
||||
(defn raw-graphql [_]
|
||||
@@ -53,9 +53,9 @@
|
||||
{:user/role [:db/ident]}])]
|
||||
:in ['$]
|
||||
:where ['[?e :user/role]]}
|
||||
:args [(d/db (d/connect uri))]})]
|
||||
:args [(dc/db conn)]})]
|
||||
|
||||
(->> (d/query query)
|
||||
(->> (dc/q query)
|
||||
(map first)
|
||||
(map #(update % :user/role :db/ident))
|
||||
)))
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
(ns auto-ap.datomic.vendors
|
||||
(:require
|
||||
[auto-ap.datomic :refer [conn merge-query uri add-sorter-fields apply-pagination merge-query apply-sort-3]]
|
||||
[auto-ap.datomic :refer [conn merge-query add-sorter-fields apply-pagination merge-query apply-sort-3 pull-many]]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clojure.string :as str]
|
||||
[datomic.api :as d]
|
||||
[datomic.client.api :as dc]
|
||||
[auto-ap.datomic.accounts :as d-accounts]))
|
||||
|
||||
(defn <-datomic [a]
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
|
||||
(cond->> query
|
||||
true (d/query)
|
||||
true (dc/q)
|
||||
true (apply-sort-3 args)
|
||||
true (apply-pagination args))))
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
))
|
||||
|
||||
(defn graphql-results [ids db args]
|
||||
(let [results (->> (d/pull-many db default-read ids)
|
||||
(let [results (->> (pull-many db default-read ids)
|
||||
(group-by :db/id))
|
||||
vendors (->> ids
|
||||
(map results)
|
||||
@@ -93,7 +93,7 @@
|
||||
vendors))
|
||||
|
||||
(defn get-graphql [args]
|
||||
(let [db (d/db conn)
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
matching-count])
|
||||
@@ -104,8 +104,8 @@
|
||||
(->> (cond-> {:query {:find [(list 'pull '?e default-read)]
|
||||
:in ['$ '?e]
|
||||
:where ['[?e :vendor/name]]}
|
||||
:args [(d/db (d/connect uri)) id]})
|
||||
(d/query)
|
||||
:args [(dc/db conn) id]})
|
||||
(dc/q)
|
||||
(map first)
|
||||
(map #(cleanse (:id args) %))
|
||||
(map <-datomic)
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
(defn get-by-id [id]
|
||||
|
||||
(->> (d/q '[:find (pull ?e [*
|
||||
(->> (dc/q '[:find (pull ?e [*
|
||||
{:vendor/default-account [:account/name :db/id :account/location]
|
||||
:vendor/legal-entity-tin-type [:db/ident :db/id]
|
||||
:vendor/legal-entity-1099-type [:db/ident :db/id]
|
||||
@@ -125,7 +125,7 @@
|
||||
:vendor/automatically-paid-when-due [:db/id :client/name]}])
|
||||
:in $ ?e
|
||||
:where [?e]]
|
||||
(d/db (d/connect uri))
|
||||
(dc/db conn)
|
||||
id)
|
||||
(map first)
|
||||
(map <-datomic)
|
||||
@@ -165,3 +165,5 @@
|
||||
client-id)))
|
||||
first
|
||||
boolean))
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
(ns auto-ap.datomic.yodlee2
|
||||
(:require
|
||||
[auto-ap.datomic
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 merge-query uri]]
|
||||
:refer [add-sorter-fields apply-pagination apply-sort-3 merge-query conn pull-many]]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[clj-time.coerce :as c]
|
||||
[datomic.api :as d]))
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(def default-read '[*])
|
||||
|
||||
@@ -39,13 +39,13 @@
|
||||
(merge-query {:query {:find ['?e ]
|
||||
:where ['[?e :yodlee-provider-account/id]]}}) )
|
||||
|
||||
(d/query)
|
||||
(dc/q)
|
||||
(apply-sort-3 args)
|
||||
(apply-pagination args)))
|
||||
|
||||
|
||||
(defn graphql-results [ids db _]
|
||||
(let [results (->> (d/pull-many db default-read ids)
|
||||
(let [results (->> (pull-many db default-read ids)
|
||||
(group-by :db/id))]
|
||||
(->> ids
|
||||
(map results)
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
|
||||
(defn get-graphql [args]
|
||||
(let [db (d/db (d/connect uri))
|
||||
(let [db (dc/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
matching-count]))
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
(ns auto-ap.datomic.yodlee-merchants
|
||||
(:require
|
||||
[auto-ap.datomic :refer [uri]]
|
||||
[datomic.api :as d]))
|
||||
[auto-ap.datomic :refer [conn]]
|
||||
[datomic.client.api :as dc]))
|
||||
|
||||
(defn get-merchants [_]
|
||||
;; TODO admin?
|
||||
(let [query {:query {:find ['(pull ?e [:yodlee-merchant/name :yodlee-merchant/yodlee-id :db/id])]
|
||||
:in ['$]
|
||||
:where [['?e :yodlee-merchant/name]]}
|
||||
:args [(d/db (d/connect uri))]}]
|
||||
:args [(dc/db conn)]}]
|
||||
(->>
|
||||
(d/query query)
|
||||
(dc/q query)
|
||||
(mapv first))))
|
||||
|
||||
Reference in New Issue
Block a user