|
|
|
@ -32,7 +32,8 @@
|
|
|
|
|
CREATE (p:property {uuid:{prop_uuid}})-[:of]->(i),
|
|
|
|
|
(p)-[:of]->(a)
|
|
|
|
|
SET p.value = {value},
|
|
|
|
|
p.created_at = {created_at}")
|
|
|
|
|
p.created_at = {created_at},
|
|
|
|
|
p.updated_at = {updated_at}")
|
|
|
|
|
|
|
|
|
|
(defn create! [schema-uuid instance]
|
|
|
|
|
(let [instance-uuid (neo4j/uuid)
|
|
|
|
@ -82,8 +83,29 @@
|
|
|
|
|
SET i.name = {name},
|
|
|
|
|
i.updated_at = {updated_at}")
|
|
|
|
|
|
|
|
|
|
(neo4j/defquery edit-property
|
|
|
|
|
"MATCH (i:instance {uuid:{instance_uuid}}),
|
|
|
|
|
(a:attribute {uuid:{attribute_uuid}})
|
|
|
|
|
MERGE (p:property {uuid:{uuid}})-[:of]->(i)
|
|
|
|
|
MERGE (p)-[:of]->(a)
|
|
|
|
|
ON CREATE SET p.created_at = {now},
|
|
|
|
|
p.updated_at = {now},
|
|
|
|
|
p.value = {value}
|
|
|
|
|
ON MATCH SET p.updated_at = {now},
|
|
|
|
|
p.value = {value}")
|
|
|
|
|
|
|
|
|
|
(defn edit! [instance]
|
|
|
|
|
(neo4j/exec-query! edit-instance
|
|
|
|
|
{:uuid (:uuid instance)
|
|
|
|
|
:name (:name instance)
|
|
|
|
|
:updated_at (neo4j/now-str)}))
|
|
|
|
|
(clojure.pprint/pprint instance)
|
|
|
|
|
(let [prop-tuples (map #(vector edit-property
|
|
|
|
|
{:uuid (:uuid % (neo4j/uuid))
|
|
|
|
|
:now (neo4j/now-str)
|
|
|
|
|
:value (:value %)
|
|
|
|
|
:instance_uuid (:uuid instance)
|
|
|
|
|
:attribute_uuid (-> % :attribute :uuid)})
|
|
|
|
|
(:properties instance))]
|
|
|
|
|
(apply neo4j/exec-queries!
|
|
|
|
|
(concat [[edit-instance
|
|
|
|
|
{:uuid (:uuid instance)
|
|
|
|
|
:name (:name instance)
|
|
|
|
|
:updated_at (neo4j/now-str)}]]
|
|
|
|
|
prop-tuples))))
|
|
|
|
|