Trying to create a new attribute where the value is the result of a transformation on a different attribute for the same entity. So, say I have a database where every entity has attribute :content
. I want to have an additional attribute for every entity called :transformed
whose value is the result of applying function f
to :content
. How would I go about this idiomatically and efficiently? Currently trying to do this by performing a transaction and assigning the value of the new attribute to the value of the function applied to a query for the value of the original attribute for that entity.
If it's not obvious, I'm fairly new to Datalog and 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)]])))
This was resolved over here (tl;dr I was calling one of my own functions with the parameters reversed) https://stackoverflow.com/questions/62032169/in-datascript-how-can-i-create-a-new-attribute-from-the-value-of-another/62049029