mirror of
https://gitlab.com/wheres-the-tp/server.git
synced 2026-01-25 04:34:55 -06:00
34 lines
1,014 B
Clojure
34 lines
1,014 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]])
|
|
(:import [java.util Calendar]))
|
|
|
|
|
|
(def searches-chan (chan (sliding-buffer 500)))
|
|
|
|
|
|
(defn queue-search
|
|
""
|
|
[term]
|
|
(let [cutoff (doto (Calendar/getInstance) (.add Calendar/DATE -1))
|
|
last-queried (:last_queried (first (get-search-term term)))
|
|
is-outdated (or (nil? last-queried) (>= (.getTimeInMillis cutoff) (.getTime last-queried)))]
|
|
(if is-outdated (>!! 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))))))
|
|
|