parent
bd1fa8a7d7
commit
00ef765485
@ -0,0 +1,39 @@
|
|||||||
|
(ns wanijo.link.domain
|
||||||
|
(:require [clojure.spec.alpha :as spec]
|
||||||
|
[wanijo.specs :as specs]
|
||||||
|
[wanijo.framework.neo4j :as neo4j]))
|
||||||
|
|
||||||
|
(spec/def ::link
|
||||||
|
(spec/keys :req-un [::neo4j/uuid
|
||||||
|
::specs/created_at
|
||||||
|
::name]))
|
||||||
|
|
||||||
|
(neo4j/defquery create
|
||||||
|
"MATCH (i:instance {uuid:{from}}),
|
||||||
|
(u:user {uuid:{by}}),
|
||||||
|
(t:instance {uuid:{target}})
|
||||||
|
CREATE
|
||||||
|
(l:link {uuid:{uuid}})-[:created_by]->(u)
|
||||||
|
SET l.created_at = {created_at},
|
||||||
|
l.name = {name}
|
||||||
|
CREATE
|
||||||
|
(i)<-[:link_from]-(l)-[:link_to]->(t)")
|
||||||
|
(defn create! [link]
|
||||||
|
(let [tuples (map (fn [target-uuid]
|
||||||
|
[create
|
||||||
|
{:from (:from link)
|
||||||
|
:by (:by link)
|
||||||
|
:target target-uuid
|
||||||
|
:uuid (neo4j/uuid)
|
||||||
|
:created_at (neo4j/now-str)
|
||||||
|
:name (:name link)}])
|
||||||
|
(:to link))]
|
||||||
|
(apply neo4j/exec-queries! tuples)))
|
||||||
|
|
||||||
|
(neo4j/defquery delete
|
||||||
|
"MATCH (l:link {uuid:{uuid}}),
|
||||||
|
(l)-[r]-()
|
||||||
|
DELETE r, l")
|
||||||
|
(defn delete! [uuid]
|
||||||
|
(neo4j/exec-query! delete
|
||||||
|
{:uuid uuid}))
|
Loading…
Reference in new issue