Skip to content

Instantly share code, notes, and snippets.

@kordano
Created May 25, 2021 07:46
Show Gist options
  • Save kordano/2d6e9951b2bd14730951c4018b7ff9ac to your computer and use it in GitHub Desktop.
Save kordano/2d6e9951b2bd14730951c4018b7ff9ac to your computer and use it in GitHub Desktop.
Common tx in Datahike
(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 :sibling
: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 "sandbox"}
:keep-history? true
:schema-flexibility :write
:index :datahike.index/hitchhiker-tree
:initial-tx schema})
(def cfg2 {:store {:backend :mem
:id "sandbox2"}
:keep-history? true
:schema-flexibility :write
:index :datahike.index/hitchhiker-tree
:initial-tx schema})
(d/create-database cfg)
(d/create-database cfg2)
(def conn (d/connect cfg))
(def conn2 (d/connect cfg2))
(d/transact conn [{:name "Alice"
:age 25}
{:name "Bob"
:age 35}
{:name "Charlie"
:age 45
:sibling [[:name "Alice"] [:name "Bob"]]}])
(d/transact conn [{:name "Daisy"
:age 21}])
(d/transact conn2 [{:name "Alice"
:age 25}
{:name "Bob"
:age 35}
{:name "Charlie"
:age 45
:sibling [[:name "Alice"] [:name "Bob"]]}])
(d/transact conn2 [{:name "Donald"
:age 38}])
(d/q '[:find ?t
:in $ $2
:where
[$ ?e ?a ?v ?t]
[$2 ?e ?a ?v ?t]] @conn @conn2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment