A library for storing graph data in a Clojure map that automatically normalizes nested data and allows querying via EQL.
Create a new db with db. db values are normal maps with a tabular structure.
Add new ones using add.
Entities are identified by the first key with the name "id", e.g.
:person/id. Adding data about the same entity will merge them together in
order of addition. To replace an entity, dissoc it first.
NOTE: Collections like vectors, sets and lists should not mix entities and non-entities. Collections are recursively walked to find entities.
Query them w/ EQL using pull.
To get meta-information about what entities were added or queried, use the
add-report and pull-report functions.
A library for storing graph data in a Clojure map that automatically normalizes nested data and allows querying via EQL. Create a new db with `db`. db values are normal maps with a tabular structure. Add new ones using `add`. Entities are identified by the first key with the name "id", e.g. :person/id. Adding data about the same entity will merge them together in order of addition. To replace an entity, `dissoc` it first. NOTE: Collections like vectors, sets and lists should not mix entities and non-entities. Collections are recursively walked to find entities. Query them w/ EQL using `pull`. To get meta-information about what entities were added or queried, use the `add-report` and `pull-report` functions.
(add db data)(add db data & more)Takes a normalized map db, and some new data.
Returns a new map with the data normalized and merged into db.
Takes a normalized map `db`, and some new `data`. Returns a new map with the data normalized and merged into `db`.
(add-report db data)Takes a normalized map db, and some new data.
Returns a map containing keys:
:db - the data normalized and merged into db.
:entities - a set of entities found in data
Takes a normalized map `db`, and some new `data`. Returns a map containing keys: :db - the data normalized and merged into `db`. :entities - a set of entities found in `data`
(db)(db entities)Takes an optional collection of entities.
Returns a new map with the entities normalized.
Takes an optional collection of `entities`. Returns a new map with the `entities` normalized.
(delete db lookup-ref)Deletes an entity from the db, removing all references to it. A lookup-ref is a vector of [keyword id], e.g. [:person/id "a123"]
Deletes an entity from the db, removing all references to it. A lookup-ref is a vector of [keyword id], e.g. [:person/id "a123"]
(pull db query)Executes an EQL query against a normalized map db and returns the result.
Executes an EQL query against a normalized map `db` and returns the result.
(pull-report db query)Executes an EQL query against a normalized map db. Returns a map with the
following keys:
:data - the result of the query
:entities - a set of lookup refs that were visited during the query
Executes an EQL query against a normalized map `db`. Returns a map with the following keys: :data - the result of the query :entities - a set of lookup refs that were visited during the query
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |