clojure - in datomic, how is it possible to find out what keys are available for reverse lookup? -
the following uses simplified datomic setup:
:account/user -> string :account/email -> ref :email/name -> string :email/type -> keyword
if have entity containing account information, easy know has email information
(keys <account entity>) ;; => [:account/user :account/email] (:account/email <account entity>) ;; => <email entity>
but on flipside, if @ keys of email entity, not know has linked account information.
(keys <email entity>) ;; => [:email/name :email/type] (:account/_email <email entity>) ;; => <account entity>
how 1 find out :account/_email
valid key without trial , error?
to check if key valid can use:
(.containskey <email entity> :account/_email) ;; => true
in order valid entity keys including reverse ones:
(.touch <email entity>) (keys (.cache <email entity>))
note (keys)
called directly on entity returns forward keys.
tested on similar schema.
side note: apart
(:account/_email <email entity>)
you can query accounts have linked specified email:
(q '[:find ?a :in $ ?e :where [?a :account/email ?e] ] (db conn) (:db/id <email entity>))
Comments
Post a Comment