aretherecookies-server/src/aretherecookies/search/search.clj

32 lines
867 B
Clojure
Raw Normal View History

(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))))))