precept.util
add-to-unique-index!
(add-to-unique-index! fact ks)Prepreds :unique to keyseq path in second argument. Overwrites existing value and returns it if found.
any-Tuple?
(any-Tuple? x)check-unique-conflict
(check-unique-conflict fact ks)clara-tups->maps
(clara-tups->maps tups)Takes seq of ms with keys :?e :?a :?v, joins on :?e and returns vec of ms (one m for each entity)
conflicting-logical-fact-error
(conflicting-logical-fact-error facts to-insert to-retract)conform-insertions-and-retractions!
(conform-insertions-and-retractions! facts)dissoc-in
(dissoc-in m [k & ks :as keys])Dissociates an entry from a nested associative structure returning a new nested structure. keys is a sequence of keys. Any empty maps that result will not be present in the new structure.
entity-map->Tuples
(entity-map->Tuples m)Transforms entity map to Tuple record {a1 v1 a2 v2 :db/id eid} -> [(Tuple eid a1 v1 t)…]
entity-Tuples->entity-maps
(entity-Tuples->entity-maps coll)fact-index-path
(fact-index-path fact)Returns path to store and access a fact in fact-index according to the fact’s cardinality, uniqueness
fact-index-paths
(fact-index-paths fact)Returns all index paths for a given fact as [[]…]
find-sub-by-name
(find-sub-by-name name)gen-Tuples-from-map
(gen-Tuples-from-map m)get-index-of
(get-index-of coll x not-found-idx)guid
(guid)insert
(insert session facts)Inserts facts from outside rule context. Accepts [e a v], [[e a v]...], {}, [{}...], where {} is a Datomic-style entity map
insert!
(insert! facts)Insert facts logically within rule context
insert-unconditional!
(insert-unconditional! facts)Insert facts unconditionally within rule context
insertable
(insertable x)Arguments can be any mixture of vectors and records Ensures [], [[]…], Tuple, ’(Tuple …) conform to Tuple record instances.
key-by
(key-by f coll)make-activation-group-fn
(make-activation-group-fn default-group)Reads from optional third argument to rule. :super - boolean :group - keyword :salience - number Rules marked :super are given the highest priority.
make-activation-group-sort-fn
(make-activation-group-sort-fn groups default-group)make-ancestors-fn
(make-ancestors-fn)(make-ancestors-fn hierarchy)(make-ancestors-fn hierarchy root-fact-type)Returns a set. To be used when defining a session. Stored in atom for auto truth maintenance and schema enforcement.
map->tuples
(map->tuples m)Transforms entity map to vector of tuples {a1 v1 a2 v2 :db/id eid} -> [[eid a1 v1]…]
map-of-refs?
(map-of-refs? schemas x)Returns true if every k is db.type/ref according to a schema
next-fact-id!
(next-fact-id!)record->map
(record->map x)record->vec
(record->vec r)remove-fact-from-index!
(remove-fact-from-index! fact)(remove-fact-from-index! fact paths)Removes fact from all indexed locations according to schema if the indexed value is identical to the fact argument. Returns [bool...] indicating successful removal from each indexed location.
remove-from-fact-index!
(remove-from-fact-index! fact ks)Removes fact from single path in index, returning a retract instruction if an exact match was found
remove-rulegen-facts
(remove-rulegen-facts xs)reset-fact-id!
(reset-fact-id!)retract
(retract session facts)Retract from outside rule context.
retract!
(retract! facts)Wrapper around Clara’s retract!. Use within RHS of rule only. Requires a fact that includes a fact-id produced by matching on a whole fact. e.g. ?fact in [?fact <- [?e :attr ?v]
rulegen-fact-nses
rulegen-fact?
(rulegen-fact? a)rules-in-ns
(rules-in-ns ns-sym)schema-enforcement-dto
(schema-enforcement-dto inserted retracted index-path)split-head-body
(split-head-body rule)Takes macro body of a define and returns map of :head, :body
third
(third xs)trace
(trace & args)tuple-entity->hash-map-entity
(tuple-entity->hash-map-entity tuples)Takes list of tuples for a single entity and returns single map
Tuples->maps
(Tuples->maps xs)(Tuples->maps xs ancestry)tuplize-into-vec
(tuplize-into-vec x)Returns [[]…]. Arg may be {} [{}…] [] [[]…]
unknown-ancestry-error
(unknown-ancestry-error fact ancestry)update-index!
(update-index! fact)(update-index! fact ks)Primary function that updates fact-index. Requires fact to index. Generates key-seq to path in index.
update-unique-index!
(update-unique-index! fact ks)upsert-fact-index!
(upsert-fact-index! fact ks)Writes value to path in ks. Returns existing fact to retract if overwriting.
upsert-unique-index!
(upsert-unique-index! fact ks)vec->record
(vec->record vec)