Skip to content

Instantly share code, notes, and snippets.

@kordano
Last active March 29, 2022 11:43
Show Gist options
  • Save kordano/219cfc9d4a54ecd16c19bd0f1002fc9d to your computer and use it in GitHub Desktop.
Save kordano/219cfc9d4a54ecd16c19bd0f1002fc9d to your computer and use it in GitHub Desktop.
Small Datahike example
(require '[datahike.api :as d])
(def schema [{:db/ident :name
:db/cardinality :db.cardinality/one
:db/index true
:db/unique :db.unique/identity
:db/valueType :db.type/string}
{:db/ident :parents
:db/cardinality :db.cardinality/many
:db/valueType :db.type/ref}
{:db/ident :age
:db/cardinality :db.cardinality/one
:db/valueType :db.type/long}])
(def cfg {:store {:backend :mem
:id "dev-2"}
:keep-history? true
:schema-flexibility :write})
(do
(d/delete-database cfg)
(d/create-database cfg))
(def conn (d/connect cfg))
(d/transact conn schema)
(d/transact conn [{:name "Alice"
:age 25}
{:name "Bob"
:age 35}])
(d/transact conn [{:name "Charlie"
:age 5
:parents [[:name "Alice"] [:name "Bob"]]}])
(d/transact conn [{:name "Daisy" :age 20}])
(d/transact conn [{:name "Erhard" :age 20}])
(d/transact conn [[:db/retractEntity [:name "Erhard"]]])
(->> (d/q '[:find ?e ?n ?a
:where
[?e :name ?n]
[?e :age ?a]] @conn))
(d/q '[:find ?e ?n
:where
[?e :name ?n]] @conn)
(d/datoms @conn :eavt)
(d/transact conn {:tx-data [[:db/retractEntity [:name "Erhard"]]]})
(d/datoms @conn :eavt)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment