makes cloud search possible.

This commit is contained in:
2023-05-04 17:07:08 -07:00
parent 2bb1da1636
commit b200728c6a
30 changed files with 1308 additions and 451 deletions

View File

@@ -4,6 +4,7 @@
[auto-ap.datomic :refer [conn pull-attr random-tempid]]
[auto-ap.ledger :as l ]
[clj-http.core :as http]
[clj-http.client :as client]
[auto-ap.server]
[auto-ap.square.core :as square]
[auto-ap.square.core2 :as square2]
@@ -24,12 +25,17 @@
[unilog.context :as lc]
[com.brunobonacci.mulog :as mu]
[com.brunobonacci.mulog.buffer :as rb]
[datomic.api :as d])
[datomic.api :as d]
[clojure.data.json :as json]
[auto-ap.solr :as solr])
(:import
(org.apache.commons.io.input BOMInputStream)))
(defn println-event [item]
(printf "%s - %s: %s\n" (:mulog/namespace item) (:mulog/event-name item)
(printf "%s - %s:%s %s\n" (:mulog/namespace item) (:mulog/event-name item)
(if (:mulog/duration item)
(str " " (int (/ (:mulog/duration item) 1000000)) "ms")
"")
(pr-str (reduce
(fn [acc [k v]]
(assoc acc k v))
@@ -554,14 +560,96 @@
:separator \tab))))
(defn fmt-amount [a]
(with-precision 2
(some-> a
bigdec
(.setScale 2 java.math.RoundingMode/HALF_UP)
(double))))
(defn index-solr
[]
)
(doseq [batch (->> (dc/qseq {:query '[:find (pull ?i [:db/id :invoice/invoice-number
:invoice/total
{:invoice/client [:client/code :db/id]
:invoice/vendor [:vendor/name :db/id]}
:invoice/date])
:in $
:where [?i :invoice/invoice-number]
(not [?i :invoice/status :invoice-status/voided])]
:args [
(dc/db conn)]})
(map (fn [[i]]
{"id" (-> i :db/id)
"client_id" (-> i :invoice/client :db/id)
"client_code" (-> i :invoice/client :client/code)
"date" (some-> i :invoice/date c/to-date-time (atime/unparse atime/iso-date) (str "T00:00:00Z"))
"amount" (-> i :invoice/total fmt-amount)
"number" (-> i :invoice/invoice-number)
"vendor_name" (-> i :invoice/vendor :vendor/name)
"vendor_id" (-> i :invoice/vendor :db/id)
"type" "invoice"
}))
(partition-all 1000))]
(print ".")
(flush)
(solr/index-documents batch))
(doseq [batch (->> (dc/qseq {:query '[:find (pull ?i [:db/id :payment/check-number
:payment/amount
{:payment/client [:client/code :db/id]
:payment/vendor [:vendor/name :db/id]}
:payment/date])
:in $
:where [?i :payment/date]
(not [?i :payment/status :payment-status/voided])]
:args [(dc/db conn)]})
(map (fn [[i]]
{"id" (-> i :db/id)
"client_id" (-> i :payment/client :db/id)
"client_code" (-> i :payment/client :client/code)
"date" (some-> i :payment/date c/to-date-time (atime/unparse atime/iso-date) (str "T00:00:00Z"))
"amount" (-> i :payment/amount fmt-amount)
"description" (-> i :payment/check-number)
"vendor_name" (-> i :payment/vendor :vendor/name)
"vendor_id" (-> i :payment/vendor :db/id)
"type" "payment"}))
(partition-all 1000))]
(print ".")
(flush)
(solr/index-documents batch))
(doseq [batch (->> (dc/qseq {:query '[:find (pull ?i [:db/id :transaction/description-original
:transaction/amount
{:transaction/client [:client/code :db/id]
:transaction/vendor [:vendor/name :db/id]}
:transaction/date])
:in $
:where [?i :transaction/description-original]
(not [?i :transaction/approval-status :transaction-approval-status/suppressed])]
:args [(dc/db conn)]})
(map (fn [[i]]
{"id" (-> i :db/id)
"client_id" (-> i :transaction/client :db/id)
"client_code" (-> i :transaction/client :client/code)
"date" (some-> i :transaction/date c/to-date-time (atime/unparse atime/iso-date) (str "T00:00:00Z"))
"amount" (-> i :transaction/amount fmt-amount)
"description" (-> i :transaction/description-original)
"vendor_name" (-> i :transaction/vendor :vendor/name)
"vendor_id" (-> i :transaction/vendor :db/id)
"type" "transaction"}))
(partition-all 1000))]
(print ".")
(flush)
(solr/index-documents batch)
))
(defn setup-sales-orders []
(doseq [n (->> (dc/qseq {:query '[:find ?s ?c :where [?s :sales-order/client ?c]] :args [(dc/db auto-ap.datomic/conn)]})
(map (fn [[s c]]
{:db/id s :sales-order/client c}))
(partition-all 1000)
(take 10))]
(partition-all 1000))]
(print ".")
@(dc/transact auto-ap.datomic/conn n)))