Makes running datomic cloud work again

This commit is contained in:
2023-03-17 12:56:39 -07:00
parent aebf95a87b
commit f7fe2b2bee
12 changed files with 102 additions and 105 deletions

View File

@@ -283,7 +283,7 @@
(iterate #(time/plus % (time/days -1)))
(filter #(= 7 (time/day-of-week %)))))
(time/days 1)))
orders-to-update (doall (for [[order uuid] (d/q '[:find ?eid ?uuid
orders-to-update (doall (for [[order uuid] (dc/q '[:find ?eid ?uuid
:in $ ?start
:where [?e :sales-order/vendor :vendor/ccp-ezcater]
[?e :sales-order/date ?d]
@@ -293,7 +293,7 @@
[?c :client/ezcater-locations ?l]
[?l :ezcater-location/caterer ?c2]
[?c2 :ezcater-caterer/uuid ?uuid]]
(d/db conn)
(dc/db conn)
last-sunday)
:let [_ (alog/info ::considering
:order order)
@@ -307,7 +307,7 @@
"key" "accepted",
"occurred_at" "2022-07-21T19:21:07.549Z"}
ezcater-order (lookup-order lookup-map)
extant-order (d/pull (d/db conn) '[:sales-order/total
extant-order (dc/pull (dc/db conn) '[:sales-order/total
:sales-order/tax
:sales-order/tip
:sales-order/discount
@@ -346,6 +346,6 @@
updated-order))]
(alog/info :found-orders-to-update
:orders orders-to-update)
@(dc/transact conn {:tx-data orders-to-update})))
(dc/transact conn {:tx-data orders-to-update})))

View File

@@ -98,10 +98,10 @@
:account/default-allowance)
vendor-account (when vendor-id
(-> (d/q '[:find ?da
(-> (dc/q '[:find ?da
:in $ ?v
:where [?v :vendor/default-account ?da]]
(d/db conn)
(dc/db conn)
vendor-id)
ffirst))
xform (comp
@@ -117,37 +117,37 @@
"This account is not typically used for this purpose.")})))]
(if query
(if num
(->> (d/q '[:find ?n (pull ?i pattern)
(->> (dc/q '[:find ?n (pull ?i pattern)
:in $ ?numeric-code ?allowance pattern
:where [?i :account/numeric-code ?numeric-code]
[?i :account/name ?n]
(or [?i :account/applicability :account-applicability/global]
[?i :account/applicability :account-applicability/optional]
[?i :account/applicability :account-applicability/customized])]
(d/db conn)
(dc/db conn)
num
allowance
search-pattern)
(sequence xform))
(->> (d/q '[:find ?n (pull ?i pattern) ?s
(->> (dc/q '[:find ?n (pull ?i pattern) ?s
:in $ ?q ?allowance pattern
:where [(fulltext $ :account/search-terms ?q) [[?i ?n _ ?s]]]
[?i :account/numeric-code ?numeric-code]
(or [?i :account/applicability :account-applicability/global]
[?i :account/applicability :account-applicability/optional])]
(d/db conn)
(dc/db conn)
query
allowance
search-pattern)
(concat (when client
(d/q '[:find ?n (pull ?a pattern) ?s
(dc/q '[:find ?n (pull ?a pattern) ?s
:in $ ?c ?q ?allowance pattern
:where
[?i :account-client-override/client ?c]
[(fulltext $ :account-client-override/search-terms ?q) [[?i ?n _ ?s]]]
[?a :account/client-overrides ?i]
[?a :account/numeric-code ?numeric-code]]
(d/db conn)
(dc/db conn)
client
query
allowance

View File

@@ -1,7 +1,7 @@
(ns auto-ap.graphql.checks
(:require
[amazonica.aws.s3 :as s3]
[auto-ap.datomic :refer [conn remove-nils plus]]
[auto-ap.datomic :refer [conn remove-nils plus pull-many]]
[auto-ap.datomic.accounts :as a]
[auto-ap.datomic.bank-accounts :as d-bank-accounts]
[auto-ap.datomic.checks :as d-checks]
@@ -393,7 +393,7 @@
client (d-clients/get-by-id client-id)
invoice-amounts (by :invoice-id :amount invoice-payments)
invoices-grouped-by-vendor (group-by (comp :db/id :invoice/vendor) invoices)
vendors (->> (d/pull-many (d/db conn) d-vendors/default-read (keys invoices-grouped-by-vendor))
vendors (->> (pull-many (dc/db conn) d-vendors/default-read (keys invoices-grouped-by-vendor))
(by :db/id))
bank-account (d-bank-accounts/get-by-id bank-account-id)
_ (validate-belonging client-id invoices bank-account)
@@ -516,10 +516,10 @@
(defn void-payments-internal [all-ids id]
(transact-with-ledger (->> all-ids
(d/q '[:find [(pull ?p [:db/id
(dc/q '[:find (pull ?p [:db/id
{:invoice-payment/_payment [:invoice-payment/amount
:db/id
{:invoice-payment/invoice [:db/id :invoice/outstanding-balance]}]}]) ...]
{:invoice-payment/invoice [:db/id :invoice/outstanding-balance]}]}])
:in $ [?p ...]
:where
(not [_ :transaction/payment ?p])
@@ -529,7 +529,8 @@
[?p :payment/date ?d]
[(>= ?d ?lu)]
]
(d/db conn))
(dc/db conn))
(map first)
(mapcat (fn [{:keys [:db/id]
invoices :invoice-payment/_payment}]
(into

View File

@@ -7,7 +7,6 @@
[auto-ap.datomic.ledger :as l]
[auto-ap.time :as atime]
[auto-ap.ledger.reports :as l-reports]
[auto-ap.datomic.vendors :as d-vendors]
[auto-ap.graphql.utils
:refer [->graphql <-graphql assert-admin assert-can-see-client result->page]]
[auto-ap.parse.util :as parse]
@@ -17,11 +16,9 @@
[clj-time.core :as t]
[clojure.tools.logging :as log]
[clojure.data.csv :as csv]
[com.walmartlabs.lacinia.util :refer [attach-resolvers]]
[datomic.client.api :as dc]
[mount.core :as mount]
[com.brunobonacci.mulog :as mu]
[unilog.context :as lc]
[yang.scheduler :as scheduler]
[auto-ap.graphql.utils :refer [attach-tracing-resolvers]])
(:import [org.apache.commons.codec.binary Base64]))
@@ -297,12 +294,13 @@
(let [used-vendor-names (set (map :vendor_name (:entries args)))
all-vendors (mu/trace ::get-all-vendors
[]
(->> (d/q '[:find [?e ...]
(->> (dc/q '[:find ?e
:in $ [?name ...]
:where [?e :vendor/name ?name]]
(d/db conn)
(dc/db conn)
used-vendor-names)
(d/pull-many (d/db conn) [:db/id :vendor/name])
(map first)
(pull-many (dc/db conn) [:db/id :vendor/name])
(by :vendor/name)))
all-clients (mu/trace ::get-all-clients []
(by :client/code (d-clients/get-all )))
@@ -342,12 +340,13 @@
_ (mu/trace ::upsert-new-vendors
[]
(audit-transact-batch (vec (vals new-hidden-vendors)) (:id context)))
all-vendors (->> (d/q '[:find [?e ...]
all-vendors (->> (dc/q '[:find ?e
:in $ [?name ...]
:where [?e :vendor/name ?name]]
(d/db conn)
(dc/db conn)
used-vendor-names)
(d/pull-many (d/db conn) [:db/id :vendor/name])
(map first)
(pull-many (dc/db conn) [:db/id :vendor/name])
(by :vendor/name))
all-accounts (mu/trace ::get-all-accounts []
(transduce (map (comp str :account/numeric-code)) conj #{} (a/get-accounts)))
@@ -455,11 +454,12 @@
success)
ignore-retraction (->> ignored
(map :external_id )
(d/q '[:find [?je ...]
(dc/q '[:find ?je
:in $ [?ei ...]
:where [?je :journal-entry/external-id ?ei]]
(d/db conn)
(dc/db conn)
)
(map first)
(map (fn [je] [:db/retractEntity je])))]
(log/info "manual ledger import has " (count success) " new rows")
(log/info errors)
@@ -583,7 +583,7 @@
(for [client-id (:client_ids input)
:let [_ (assert-can-see-client (:id context) client-id)
account-lookup (build-account-lookup client-id)
c (d/pull (d/db conn) '[:client/locations] client-id)]
c (dc/pull (dc/db conn) '[:client/locations] client-id)]
location (:client/locations c)
category (:categories input)
:let [category (<-graphql category)
@@ -640,7 +640,7 @@
(for [client-id (:client_ids input)
:let [_ (assert-can-see-client (:id context) client-id)
account-lookup (build-account-lookup client-id)
c (d/pull (d/db conn) '[:client/locations] client-id)]
c (dc/pull (dc/db conn) '[:client/locations] client-id)]
location (:client/locations c)
line [{:client_id client-id
:location location

View File

@@ -192,16 +192,16 @@
))
(if-let [search-query (cleanse-query (:query args))]
(let [data (if (is-admin? (:id context))
(d/q '[:find ?n ?i ?s
(dc/q '[:find ?n ?i ?s
:in $ ?q
:where [(fulltext $ :vendor/search-terms ?q) [[?i ?n _ ?s]]]]
(d/db conn)
(dc/db conn)
search-query)
(d/q '[:find ?n ?i ?s
(dc/q '[:find ?n ?i ?s
:in $ ?q
:where [(fulltext $ :vendor/search-terms ?q) [[?i ?n _ ?s]]]
(not [?i :vendor/hidden true])]
(d/db conn)
(dc/db conn)
search-query))]
(->> data
(sort-by (comp - last))

View File

@@ -183,24 +183,19 @@
(defn touch-transaction [e]
(dc/transact conn {:tx-data [[:db/retractEntity [:journal-entry/original-entity e]]]})
(when-let [change (entity-change->ledger (d/db conn)
[:transaction e])]
(dc/transact conn {:tx-data [{:db/id "datomic.tx"
:db/doc "touching transaction to update ledger"}
(entity-change->ledger (dc/db conn)
[:transaction e])]}))
)
(when-let [change (entity-change->ledger (dc/db conn)
[:transaction e])]
(dc/transact conn {:tx-data [{:db/id "datomic.tx"
:db/doc "touching transaction to update ledger"}
change]})))
(defn touch-invoice [e]
(dc/transact conn [[:db/retractEntity [:journal-entry/original-entity e]]])
(when-let [change (entity-change->ledger (d/db conn)
[:invoice e])]
(dc/transact conn [{:db/id "datomic.tx"
:db/doc "touching invoice to update ledger"}
(entity-change->ledger (dc/db conn)
[:invoice e])]))
)
(when-let [change (entity-change->ledger (dc/db conn)
[:invoice e])]
(dc/transact conn [{:db/id "datomic.tx"
:db/doc "touching invoice to update ledger"}
change])))
(defn lazy-tx-range
([start end xf] (lazy-tx-range start end xf 0))
([start end xf o]

View File

@@ -231,7 +231,7 @@
(println args)
(let [data (<-graphql data)
args (<-graphql args)
clients (d/pull-many (d/db conn) '[:client/code :client/name :db/id] (:client-ids args))
clients (pull-many (dc/db conn) '[:client/code :client/name :db/id] (:client-ids args))
report (l-reports/journal-detail-report args data (by :db/id :client/code clients))
output-stream (ByteArrayOutputStream.)]
(log/info report)
@@ -266,7 +266,7 @@
max-date (atime/unparse-local
(->> args :date_range :end)
atime/iso-date)
names (str/replace (->> args :client_ids (d/pull-many (d/db conn) [:client/name]) (map :client/name) (str/join "-")) #" " "_" )]
names (str/replace (->> args :client_ids (pull-many (dc/db conn) [:client/name]) (map :client/name) (str/join "-")) #" " "_" )]
(format "Profit-and-loss-%s-to-%s-for-%s" min-date max-date names)))
(defn balance-sheet-args->name [args]
@@ -330,12 +330,13 @@
:input-stream (io/make-input-stream pdf-data {})
:metadata {:content-length (count pdf-data)
:content-type "application/pdf"})
@(d/transact conn
[{:report/name name
:report/client (:client_ids args)
:report/key key
:report/url url
:report/creator (:user user)
:report/created (java.util.Date.)}])
(dc/transact conn
{:tx-data
[{:report/name name
:report/client (:client_ids args)
:report/key key
:report/url url
:report/creator (:user user)
:report/created (java.util.Date.)}]})
{:report/name name
:report/url url }))

View File

@@ -1,6 +1,6 @@
(ns auto-ap.routes.exports
(:require
[auto-ap.datomic :refer [conn]]
[auto-ap.datomic :refer [conn pull-many]]
[auto-ap.datomic.accounts :as accounts]
[auto-ap.datomic.clients :as d-clients]
[auto-ap.datomic.transactions :as d-transactions]
@@ -20,8 +20,6 @@
[com.unbounce.dogstatsd.core :as statsd]
[config.core :refer [env]]
[datomic.api :as d]
[compojure.core :refer [context defroutes GET routes wrap-routes]]
[config.core :refer [env]]
[datomic.client.api :as dc]
[ring.middleware.json :refer [wrap-json-response]]
[venia.core :as venia]))
@@ -38,7 +36,7 @@
identity (jwt/unsign (get query-params "key") (:jwt-secret env) {:alg :hs512})]
(assert-can-see-client identity client-id)
(into (list)
(d/query {:query {:find '[?d4 (sum ?total) (sum ?tax) (sum ?tip) (sum ?service-charge)]
(dc/q {:query {:find '[?d4 (sum ?total) (sum ?tax) (sum ?tip) (sum ?service-charge)]
:in '[$ ?c]
:where '[[?s :sales-order/client ?c]
[?s :sales-order/date ?d]
@@ -49,7 +47,7 @@
[(clj-time.coerce/to-date-time ?d) ?d2]
[(auto-ap.time/localize ?d2) ?d3]
[(auto-ap.time/unparse ?d3 auto-ap.time/normal-date) ?d4]]}
:args [(d/db conn) client-id]}))))
:args [(dc/db conn) client-id]}))))
(defn client-tag [params]
(when-let [code (or (params "client-code")
@@ -90,28 +88,29 @@
{:body
(list (into (list)
(map datomic-map->graphql-map)
(d/q '[:find [(pull ?i [:db/id :invoice/total :invoice/outstanding-balance :invoice/invoice-number :invoice/date :invoice/original-id
{ :invoice/status [:db/ident]
:invoice/payments
[:invoice-payment/amount
{:invoice-payment/payment [:payment/check-number
:payment/memo
{:payment/bank_account [:bank-account/id :bank-account/name :bank-account/number :bank-account/bank-name :bank-account/bank-code :bank-account/code]}]}]
:invoice/vendor [:vendor/name
:db/id
{:vendor/primary-contact [:contact/name]
:vendor/address [:address/street1 :address/city :address/state :address/zip]}]
:invoice/expense-accounts [:db/id
:invoice-expense-account/amount
:invoice-expense-account/id
:invoice-expense-account/location
{:invoice-expense-account/account
[:db/id :account/numeric-code :account/name]}]
:invoice/client [:client/name :db/id :client/code :client/locations]}]) ...]
:in $ ?c
:where [?i :invoice/client ?c]]
(d/db conn)
[:client/code (query-params "client-code")])))}))
(map first (dc/q '[:find (pull ?i [:db/id :invoice/total :invoice/outstanding-balance :invoice/invoice-number :invoice/date :invoice/original-id
{ :invoice/status [:db/ident]
:invoice/payments
[:invoice-payment/amount
{:invoice-payment/payment [:payment/check-number
:payment/memo
{:payment/bank_account [:bank-account/id :bank-account/name :bank-account/number :bank-account/bank-name :bank-account/bank-code :bank-account/code]}]}]
:invoice/vendor [:vendor/name
:db/id
{:vendor/primary-contact [:contact/name]
:vendor/address [:address/street1 :address/city :address/state :address/zip]}]
:invoice/expense-accounts [:db/id
:invoice-expense-account/amount
:invoice-expense-account/id
:invoice-expense-account/location
{:invoice-expense-account/account
[:db/id :account/numeric-code :account/name]}]
:invoice/client [:client/name :db/id :client/code :client/locations]}])
:in $ ?c
:where [?i :invoice/client ?c]]
(dc/db conn)
[:client/code (query-params "client-code")]))))}))
(defn export-payments [{:keys [query-params identity]}]
(assert-admin identity)
@@ -222,18 +221,19 @@
(assert-admin identity)
(statsd/time! [(str "export.time") {:tags #{"export:vendors"}}]
{:body
(map <-graphql (->> (d/q '[:find [?e ...]
(map <-graphql (->> (dc/q '[:find ?e
:in $
:where [?e :vendor/name]]
(d/db conn))
(d/pull-many (d/db conn) vendor/default-read)))}))
(dc/db conn))
(map first)
(pull-many (dc/db conn) vendor/default-read)))}))
(defn export-company-vendors [{:keys [identity query-params]}]
(statsd/time! [(str "export.time") {:tags #{"export:company-vendors"}}]
(let [client (:db/id (d/pull (d/db conn) [:db/id] [:client/code (get query-params "client")]))
(let [client (:db/id (dc/pull (dc/db conn) [:db/id] [:client/code (get query-params "client")]))
_ (assert-can-see-client identity client)
data (->> (d/q '[:find (pull ?v [:vendor/name
data (->> (dc/q '[:find (pull ?v [:vendor/name
:vendor/terms
{:vendor/default-account [:account/name :account/numeric-code
{:account/client-overrides
@@ -253,7 +253,7 @@
[(>= ?vu 0)]
[?vu :vendor-usage/vendor ?v]
(not [?v :vendor/hidden true])]
(d/db conn)
(dc/db conn)
client)
(map (fn [[v]]
[(-> v :vendor/name)
@@ -279,7 +279,7 @@
(assert-admin identity)
(statsd/time! [(str "export.time") {:tags #{(client-tag query-params)
"export:ledger2"}}]
(let [results (->> (d/q '[:find (pull ?e [:db/id
(let [results (->> (dc/q '[:find (pull ?e [:db/id
:journal-entry/external-id
:journal-entry/cleared
:journal-entry/alternate-description
@@ -314,7 +314,7 @@
:where [?e :journal-entry/client ?c]
[?e :journal-entry/date ?date]
[(>= ?date ?start-date)]]
(d/db conn)
(dc/db conn)
[:client/code (query-params "client-code")]
(coerce/to-date start-date)))
tf-result (transduce (comp
@@ -368,15 +368,16 @@
(assert-admin identity)
(statsd/time! [(str "export.time") {:tags #{(client-tag query-params)
"export:transactions2"}}]
{:body (let [db (d/db conn)]
{:body (let [db (dc/db conn)]
(->>
(d/query {:query {:find ['?e]
(dc/q {:query {:find ['?e]
:in ['$ '?client-code]
:where ['[?e :transaction/client ?client-code]]}
:args [db [:client/code (query-params "client-code")]]})
(map first)
(map (fn [e]
(let [e (d/entity db e)
;; TODO
#_(map (fn [e]
(let [e (dc/entity db e)
client (:transaction/client e)
bank-account (:transaction/bank-account e)]
{:id (:db/id e)
@@ -416,7 +417,7 @@
(log/info "Executing raw query " (get query-params "query" ))
(statsd/time! [(str "export.time") {:tags #{"export:raw"}}]
{:body
(into (list) (apply d/q (read-string (get query-params "query" )) (into [(d/db conn)] (read-string (get query-params "args" "[]")))))}))
(into (list) (apply dc/q (read-string (get query-params "query" )) (into [(dc/db conn)] (read-string (get query-params "args" "[]")))))}))
(def routes2 {"api/" {"sales/" {"aggregated/" {#"export/?" {:get :aggregated-sales-export}}

View File

@@ -19,7 +19,7 @@
[clojure.string :as str]
[clojure.tools.logging :as log]
[config.core :refer [env]]
[datomic.api :as d]
[datomic.client.api :as dc]
[digest]
[ring.middleware.json :refer [wrap-json-response]]
[unilog.context :as lc])

View File

@@ -12,8 +12,7 @@
[config.core :refer [env]]
[datomic.client.api :as dc]
[datomic.api :as d]
[compojure.core
:refer [context defroutes GET POST PUT routes wrap-routes]]
[ring.middleware.json :refer [wrap-json-response]]
[ring.util.request :refer [body-string]]
[unilog.context :as lc])

View File

@@ -326,7 +326,7 @@
(defn daily-settlements
([client location]
(->> (for [settlement (settlements client location)
:let [best-sales-date (->> (d/q '[:find ?s4 (count ?s)
:let [best-sales-date (->> (dc/q '[:find ?s4 (count ?s)
:in $ ?settlement-id
:where
[?settlement :expected-deposit/external-id ?settlement-id]
@@ -336,7 +336,7 @@
[(clj-time.coerce/to-date-time ?sales-date) ?s2]
[(auto-ap.time/localize ?s2) ?s3]
[(clj-time.coerce/to-local-date ?s3) ?s4]]
(d/db conn)
(dc/db conn)
(str "square/settlement/" (:id settlement)))
(sort-by last)
last

View File

@@ -444,8 +444,8 @@
(mount.core/start (mount.core/only #{#'auto-ap.datomic/conn #'auto-ap.datomic/client})))
(defn restart-db []
(require 'datomic.dev-local)
(datomic.dev-local/release-db {:system "dev" :db-name "prod-migration"})
#_(require 'datomic.dev-local)
#_(datomic.dev-local/release-db {:system "dev" :db-name "prod-migration"})
(mount.core/stop (mount.core/only #{#'auto-ap.datomic/conn #'auto-ap.datomic/client}))
(start-db))