mirror of
https://gitlab.com/wheres-the-tp/server.git
synced 2026-01-25 07:54:57 -06:00
32 lines
867 B
Clojure
32 lines
867 B
Clojure
|
|
(ns aretherecookies.search.search
|
||
|
|
(:require [clojure.core.async :as async :refer [chan, sliding-buffer, go, >!, <!]]
|
||
|
|
[aretherecookies.db :refer [get-search-term, add-products, update-search-term]]
|
||
|
|
[aretherecookies.search.heb :refer [search-heb]]))
|
||
|
|
|
||
|
|
|
||
|
|
(def searches-chan (chan (sliding-buffer 500)))
|
||
|
|
|
||
|
|
|
||
|
|
(defn queue-search
|
||
|
|
""
|
||
|
|
[term]
|
||
|
|
;; TODO change empty check to a datetime check against some staleness threshold
|
||
|
|
(go (if (empty? (:last_queried (first (get-search-term term)))) (>! searches-chan term) nil)))
|
||
|
|
|
||
|
|
|
||
|
|
(defn search-all-sources
|
||
|
|
""
|
||
|
|
[term]
|
||
|
|
(let [heb-result (go (search-heb term))]
|
||
|
|
(update-search-term term)
|
||
|
|
(async/map #(add-products term %) [heb-result])))
|
||
|
|
|
||
|
|
|
||
|
|
(defn init-search
|
||
|
|
""
|
||
|
|
[]
|
||
|
|
(go (while true
|
||
|
|
(try (search-all-sources (<! searches-chan))
|
||
|
|
(catch Exception e (println "CAUGHT:" e))))))
|
||
|
|
|