Interesują mnie encje i ich sygnatury czasowe. Zasadniczo chcę uporządkować listę podmiotów na podstawie czasu.Pobierz najnowszą jednostkę z Datomic
W tym celu mam składa następujące funkcje:
(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)))
Który czuję musi być hack zakorzenione w nieświadomości.
Czy ktoś bardziej zorientowany w idiomatycznym geniuszu Datomic i uaktualni moje paradygmaty?
Warto zauważyć, że AFAIK, to daje natychmiastowy moment, w którym aktualna wartość: post/title została potwierdzona dla podmiotu, a nie kiedy podmiot był ostatnim przedmiotem transakcji. – spieden