Меня интересуют сущности и их временные метки. По сути, я хочу отсортированный по времени список сущностей.
С этой целью я создал следующие функции:
(defn return-posts
"grabs all posts from Datomic"
[]
(d/q '[:find ?title ?body ?slug
:where
[?e :post/title ?title]
[?e :post/slug ?slug]
[?e :post/body ?body]] (d/db connection)))
(defn get-postid-from-slug
[slug]
(d/q '[:find ?e
:in $ ?slug
:where [?e :post/slug ?slug]] (d/db connection) slug))
(defn get-post-timestamp
"given an entid, returns the most recent timestamp"
[entid]
(->
(d/q '[:find ?ts
:in $ ?e
:where
[?e _ _ _]
[?e :db/txInstant ?ts]] (d/db connection) entid)
(sort)
(reverse)
(first)))
Я считаю, что это хак, основанный на невежестве.
Будет ли кто-нибудь более хорошо разбираться в идиоматическом использовании Datomic, и обновить мои парадигмы?