Handle queries where no index applies using a store
This commit is contained in:
parent
8750b11812
commit
b188230284
@ -40,19 +40,20 @@
|
|||||||
index-value (or (get index index-key) [])]
|
index-value (or (get index index-key) [])]
|
||||||
(assoc index index-key (conj index-value rule))))))
|
(assoc index index-key (conj index-value rule))))))
|
||||||
|
|
||||||
(defrecord InMemoryDB [assertion-index rule-index assertion-store rule-store]
|
(defrecord InMemoryDB [assertion-index rule-index assertion-store]
|
||||||
FactDB
|
FactDB
|
||||||
(fetch-assertions [db query frame]
|
(fetch-assertions [db query frame]
|
||||||
(let [instantiated (instantiate query frame (fn [v f] v))]
|
(let [instantiated (instantiate query frame (fn [v f] v))]
|
||||||
(if (use-asserttion-index? query)
|
(if (use-assertion-index? query)
|
||||||
(get-indexed-assertions db query)
|
(get-indexed-assertions db query)
|
||||||
(get-all-assertions db))))
|
(get-all-assertions db))))
|
||||||
(add-assertion [db assertion]
|
(add-assertion [db assertion]
|
||||||
(index-assertion! db assertion))
|
(index-assertion! db assertion)
|
||||||
|
(store-assertion! db assertion))
|
||||||
(fetch-rules [db query frame]
|
(fetch-rules [db query frame]
|
||||||
(get-indexed-rules db query))
|
(get-indexed-rules db query))
|
||||||
(add-rule [db rule]
|
(add-rule [db rule]
|
||||||
(index-rule! db rule)))
|
(index-rule! db rule)))
|
||||||
|
|
||||||
(defn new-db []
|
(defn new-db []
|
||||||
(->InMemoryDB (atom {}) (atom {}) (atom []) (atom [])))
|
(->InMemoryDB (atom {}) (atom {}) (atom [])))
|
||||||
|
Loading…
Reference in New Issue
Block a user