Newer
Older
(ns document-storage.query)
(defn query-fits? [data query]
(reduce (fn [a b]
(and (true? a) (= a b)))
(map
(fn [[key [compare-fn val]]]
(compare-fn (key data) val))
query)))
(defn update-queries [queries id new-document]
(into {} (mapv
(fn [[query docs]]
(if (query-fits? new-document query)
[query (assoc docs id new-document)]
[query (dissoc docs id)]))
queries)))