Попытка создать новый атрибут, значение которого является результатом преобразования другого атрибута для той же сущности. Итак, скажем, у меня есть база данных, в которой каждый объект имеет атрибут :content
. Я хочу иметь дополнительный атрибут для каждого объекта с именем :transformed
, значение которого является результатом применения функции f
к :content
. Как бы я сделал это идиоматически и эффективно? В настоящее время пытаются сделать это, выполнив транзакцию и присвоив значение нового атрибута значению функции, примененной к запросу значения исходного атрибута для этой сущности.
Если это не очевидно, я новичок в Datalog и Datascript.
(doseq [included-block-ds-id (vec (ds/q '[:find ?id
:where
[?id :block/included true]]
@conn))]
(let [content (first (first (vec (ds/q '[:find ?content
:where
[?included-block-ds-id :block/content ?content]]
@conn))))]
(ds/transact! conn [[:db/add (first included-block-ds-id)
:block/hiccup (block-content->hiccup
conn
content)]])))