agency.cljs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. (ns frontend.search.agency
  2. "Agent entry for search engine impls"
  3. (:require [frontend.search.protocol :as protocol]
  4. [frontend.search.browser :as search-browser]
  5. [frontend.search.node :as search-node]
  6. [frontend.search.plugin :as search-plugin]
  7. [frontend.search.semantic :as search-semantic]
  8. [frontend.state :as state]
  9. [frontend.util :as util]))
  10. (defn get-registered-engines
  11. [repo]
  12. [(if (util/electron?)
  13. (search-node/->Node repo)
  14. (search-browser/->Browser repo))
  15. (when state/lsp-enabled?
  16. (for [s (state/get-all-plugin-services-with-type :search)]
  17. (search-plugin/->Plugin s repo)))
  18. (when state/semsearch-enabled?
  19. (search-semantic/->Semantic repo))])
  20. (defn- get-flatten-registered-engines
  21. [repo]
  22. (->> (flatten (get-registered-engines repo))
  23. (remove nil?)))
  24. (deftype Agency [repo]
  25. protocol/Engine
  26. (query [_this q opts]
  27. (println "D:Search > Query blocks:" repo q opts)
  28. (let [[e1 e2] (get-registered-engines repo)]
  29. (doseq [e e2]
  30. (protocol/query e q opts))
  31. (protocol/query e1 q opts)))
  32. (query-page [_this q opts]
  33. (println "D:Search > Query-page contents:" repo q opts)
  34. (let [[e1 e2] (get-registered-engines repo)]
  35. (doseq [e e2]
  36. (protocol/query-page e q opts))
  37. (protocol/query-page e1 q opts)))
  38. (rebuild-blocks-indice! [_this]
  39. (println "D:Search > Initial blocks indice!:" repo)
  40. (let [[e1 e2] (get-registered-engines repo)]
  41. (doseq [e e2]
  42. (protocol/rebuild-blocks-indice! e))
  43. (protocol/rebuild-blocks-indice! e1)))
  44. (transact-blocks! [_this data]
  45. (doseq [e (get-flatten-registered-engines repo)]
  46. (protocol/transact-blocks! e data)))
  47. (transact-pages! [_this data]
  48. (doseq [e (get-flatten-registered-engines repo)]
  49. (protocol/transact-pages! e data)))
  50. (truncate-blocks! [_this]
  51. (println "D:Search > Truncate blocks!" repo)
  52. (doseq [e (get-flatten-registered-engines repo)]
  53. (protocol/truncate-blocks! e)))
  54. (remove-db! [_this]
  55. (println "D:Search > Remove Db!" repo)
  56. (doseq [e (get-flatten-registered-engines repo)]
  57. (protocol/remove-db! e))))