Skip to content
Snippets Groups Projects
query.clj 500 B
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)))