diff --git a/config/dev.edn b/config/dev.edn index ac0f828c..9a3c54dd 100644 --- a/config/dev.edn +++ b/config/dev.edn @@ -1,6 +1,7 @@ {:db {:server "localhost"} :scheme "http" :solr-uri "http://localhost:8983" + :solr-impl :solr :client-config {:server-type :dev-local :system "dev"} :db-name "prod-migration2" diff --git a/config/prod-cloud.edn b/config/prod-cloud.edn index f1748f6b..44b742d7 100644 --- a/config/prod-cloud.edn +++ b/config/prod-cloud.edn @@ -1,6 +1,7 @@ {:scheme "https" :db-name "prod-mirror2" :solr-uri "http://solr-prod-cloud.local:8983" + :solr-impl :solr :datomic-url "datomic:ddb://us-east-1/iol-dev/dev" :dd-env "prod-cloud" :dd-service "integreat-app-cloud" diff --git a/config/prod.edn b/config/prod.edn index 00054e80..ed829225 100644 --- a/config/prod.edn +++ b/config/prod.edn @@ -1,6 +1,7 @@ {:db {:server "database"} :datomic-url "datomic:ddb://us-east-1/integreat/integreat-prod" :solr-uri "http://solr-prod.local:8983" + :solr-impl :solr :scheme "https" :dd-env "prod" :dd-service "integreat-app" diff --git a/src/clj/auto_ap/solr.clj b/src/clj/auto_ap/solr.clj index fdfcec51..eb7652dc 100644 --- a/src/clj/auto_ap/solr.clj +++ b/src/clj/auto_ap/solr.clj @@ -117,43 +117,61 @@ "type" "payment"})) +(defprotocol SolrClient + (index-documents [this xs]) + (query [this q]) + (delete [this])) -(defn index-documents [xs] - (client/post - (str solr-uri "/solr/invoices/update?commitWithin=15000") - {:headers {"Content-Type" "application/json"} - :socket-timeout 30000 - :connection-timeout 30000 - :method "POST" - :body (json/write-str (filter identity (map datomic->solr xs)))})) +(defrecord RealSolrClient [solr-uri] -(defn query [q] - (-> (client/post (str solr-uri "/solr/invoices/query") - {:body (json/write-str {"query" q - "fields" "id, date, amount, type, description, number, client_code, client_id, vendor_name"}) - :socket-timeout 30000 - :connection-timeout 30000 - :headers {"Content-Type" "application/json"} - :as :json} - ) - :body - :response - :docs)) + SolrClient + (index-documents [this xs] + (client/post + (str solr-uri "/solr/invoices/update?commitWithin=15000") + {:headers {"Content-Type" "application/json"} + :socket-timeout 30000 + :connection-timeout 30000 + :method "POST" + :body (json/write-str (filter identity (map datomic->solr xs)))})) -(defn solr-delete [] - (client/post - (str solr-uri "/solr/invoices/update?commitWithin=1000") - {:headers {"Content-Type" "application/json"} - :method "POST" - :body (json/write-str {"delete" {"query" "*:*"}})}) - ) + (query [this q] + (-> (client/post (str solr-uri "/solr/invoices/query") + {:body (json/write-str {"query" q + "fields" "id, date, amount, type, description, number, client_code, client_id, vendor_name"}) + :socket-timeout 30000 + :connection-timeout 30000 + :headers {"Content-Type" "application/json"} + :as :json} + ) + :body + :response + :docs)) + (delete [this] + (client/post + (str solr-uri "/solr/invoices/update?commitWithin=1000") + {:headers {"Content-Type" "application/json"} + :method "POST" + :body (json/write-str {"delete" {"query" "*:*"}})}))) +(defrecord MockSolrClient [] + SolrClient + (index-documents [this xs] + nil) + + (query [this q] + nil) + (delete [this] + nil)) + +(def impl (if (= :solr (:solr-impl env)) + (->RealSolrClient (:solr-uri env)) + (->MockSolrClient ))) (defn touch-with-ledger [i] - (index-documents [i + (index-documents impl [i (pull-id (dc/db conn) [:journal-entry/original-entity i])])) (defn touch [i] - (index-documents [i])) + (index-documents impl [i])) diff --git a/src/clj/auto_ap/ssr/search.clj b/src/clj/auto_ap/ssr/search.clj index 87741d65..40cc40d3 100644 --- a/src/clj/auto_ap/ssr/search.clj +++ b/src/clj/auto_ap/ssr/search.clj @@ -1,12 +1,10 @@ (ns auto-ap.ssr.search (:require [auto-ap.graphql.utils :refer [can-see-client?]] + [auto-ap.solr :as solr] [auto-ap.ssr.utils :refer [html-response]] [auto-ap.time :as atime] - [clj-http.client :as client] - [clojure.data.json :as json] [clojure.string :as str] - [auto-ap.solr :as solr] [com.brunobonacci.mulog :as mu])) (defn try-cleanse-date [d] @@ -55,7 +53,7 @@ (into [] (filter (fn [d] (can-see-client? id (first (:client_id d))))) - (solr/query (q->solr-q q)))) + (solr/query solr/impl (q->solr-q q)))) (defn search-results* [q id] diff --git a/src/clj/user.clj b/src/clj/user.clj index 5a4633ed..bb06ea25 100644 --- a/src/clj/user.clj +++ b/src/clj/user.clj @@ -573,7 +573,7 @@ (partition-all 1000))] (print ".") (flush) - (solr/index-documents batch)) + (solr/index-documents solr/impl batch)) (doseq [batch (->> (dc/qseq {:query '[:find ?i :in $ @@ -584,7 +584,7 @@ (partition-all 1000))] (print ".") (flush) - (solr/index-documents batch)) + (solr/index-documents solr/impl batch)) (doseq [batch (->> (dc/qseq {:query '[:find ?i :in $ @@ -595,7 +595,7 @@ (partition-all 1000))] (print ".") (flush) - (solr/index-documents batch)) + (solr/index-documents solr/impl batch)) (doseq [batch (->> (dc/qseq {:query '[:find ?i :in $ :where [?i :journal-entry/date]] @@ -604,7 +604,7 @@ (partition-all 1000))] (print ".") (flush) - (solr/index-documents batch))) + (solr/index-documents solr/impl 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)]})