33 lines
1.1 KiB
Clojure
33 lines
1.1 KiB
Clojure
(ns auto-ap.jobs.vendor-usages
|
|
(:require
|
|
[auto-ap.datomic :refer [conn]]
|
|
[auto-ap.jobs.core :refer [execute]]
|
|
[datomic.api :as dc]))
|
|
|
|
(defn refresh-vendor-usages []
|
|
@(dc/transact-async
|
|
conn
|
|
(->> (dc/q '[:find ?v ?c (count ?e)
|
|
:in $
|
|
:where
|
|
[?v :vendor/name]
|
|
(or-join [?v ?c ?e]
|
|
(and
|
|
[?e :invoice/vendor ?v]
|
|
[?e :invoice/client ?c])
|
|
(and
|
|
[?e :transaction/vendor ?v]
|
|
[?e :transaction/client ?c])
|
|
(and
|
|
[?e :journal-entry/vendor ?v]
|
|
[?e :journal-entry/client ?c]))]
|
|
(dc/db conn))
|
|
(map (fn [[v c cnt]]
|
|
#:vendor-usage {:vendor v
|
|
:client c
|
|
:key (str v "-" c)
|
|
:count cnt})))))
|
|
|
|
(defn -main [& _]
|
|
(execute "vendor-usages" refresh-vendor-usages))
|