Skip to content

Instantly share code, notes, and snippets.

@jamesnvc
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamesnvc/9686776 to your computer and use it in GitHub Desktop.
Save jamesnvc/9686776 to your computer and use it in GitHub Desktop.
(require '[datomic.api :as d])
(d/create-database "datomic:mem://example")
(def conn (d/connect "datomic:mem://example"))
(d/transact conn
[{:db/id #db/id [:db.part/db -1]
:db/ident :foo
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}
{:db/id #db/id [:db.part/db -2]
:db/ident :baz
:db/valueType :db.type/long
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}
{:db/id #db/id [:db.part/db -3]
:db/ident :bloop
:db/valueType :db.type/long
:db/cardinality :db.cardinality/many
:db.install/_attribute :db.part/db}
{:db/id #db/id [:db.part/db -4]
:db/ident :quux
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db.install/_attribute :db.part/db}
])
(d/transact conn
[{:db/id #db/id [:db.part/user -1] :foo "bar" :baz 5 :bloop #{1 2 3}}
{:db/id #db/id [:db.part/user -2] :foo "bar" :baz 6 :bloop #{2 3}}
{:db/id #db/id [:db.part/user -3] :foo "foo" :baz 6 :bloop #{2 1}}
{:db/id #db/id [:db.part/user -4] :quux "bar" :baz 5}])
(assert (= 1
(count
(d/q '[:find ?e
:in $ % ?attr-vals
:where
(has-values ?e ?attr-vals)]
(d/db conn)
'[[(has-values _ ?attr-vals)
[(empty? ?attr-vals)]]
[(has-values ?e ?attr-vals)
[(conj ?t ?h) ?attr-vals]
[(vector ?qf ?qv) ?h]
[?e ?qf ?qv]
(has-values ?e ?t)]]
[[:bloop 1]
[:baz 5]])))
"This should only have one result")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment