Compare commits

...

5 Commits

Author SHA1 Message Date
Josha von Gizycki 8d45578e5f Merge branch 'master' into triology
4 years ago
Josha von Gizycki 73a8e5f2b9 change how links work
4 years ago
Josha von Gizycki 6f18bfe7f8 Merge branch 'master' of https://gitea.heevyis.ninja/josha/wanijo
4 years ago
Josha von Gizycki 913653780c ancient
4 years ago
Josha von Gizycki b69471fd98 fix migrations
4 years ago

@ -1,10 +1,9 @@
(ns wanijo.infrastructure.repl
(:require [buddy.hashers :as hashers]
[neo4j-clj.core :as db]
[wanijo.infrastructure.neo4j :as neo4j]
[wanijo.main :as main]))
(db/defquery create-user
(neo4j/defquery create-user
"CREATE (n:user)
SET n.ident = {ident}
SET n.pw = {pw}
@ -17,7 +16,7 @@
:pw (hashers/derive pw)
:uuid (neo4j/uuid)}))
(db/defquery merge-config
(neo4j/defquery merge-config
"MERGE (c:dbconfig)
ON CREATE SET
c.installed_at = {now},
@ -27,38 +26,38 @@
c.last_migration = {now},
c.db_version = {version}")
(db/defquery config
(neo4j/defquery config
"MATCH (c:dbconfig) RETURN c")
(db/defquery ver-0-schema-uuid
(neo4j/defquery ver-0-schema-uuid
"CREATE CONSTRAINT ON (n:schema)
ASSERT n.uuid IS UNIQUE")
(db/defquery ver-0-attribute-uuid
(neo4j/defquery ver-0-attribute-uuid
"CREATE CONSTRAINT ON (n:attribute)
ASSERT n.uuid IS UNIQUE")
(db/defquery ver-0-instance-uuid
(neo4j/defquery ver-0-instance-uuid
"CREATE CONSTRAINT ON (n:instance)
ASSERT n.uuid IS UNIQUE")
(db/defquery ver-0-property-uuid
(neo4j/defquery ver-0-property-uuid
"CREATE CONSTRAINT ON (n:property)
ASSERT n.uuid IS UNIQUE")
(db/defquery ver-0-user-uuid
(neo4j/defquery ver-0-user-uuid
"CREATE CONSTRAINT ON (n:user)
ASSERT n.uuid IS UNIQUE")
(db/defquery ver-0-link-uuid
(neo4j/defquery ver-0-link-uuid
"CREATE CONSTRAINT ON (n:link)
ASSERT n.uuid IS UNIQUE")
(db/defquery ver-1-tag-name
(neo4j/defquery ver-1-tag-name
"CREATE CONSTRAINT ON (n:tag)
ASSERT n.name IS UNIQUE")
(db/defquery ver-1-tag-uuid
(neo4j/defquery ver-1-tag-uuid
"CREATE CONSTRAINT ON (n:tag)
ASSERT n.uuid IS UNIQUE")
@ -74,9 +73,23 @@
(neo4j/exec-query! ver-1-tag-name {})
(neo4j/exec-query! ver-1-tag-uuid {}))
(neo4j/defquery migrate-links
"MATCH (i1:instance)-[:link_from]-(l:link)-[:link_to]-(i2:instance),
(l)-[cb:created_by]->(:user)
MERGE (i1)-[newl:link]->(i2)
ON CREATE SET
newl.name = l.name,
newl.created_at = l.created_at,
newl.uuid = l.uuid
DELETE cb, lf, lt, l")
(defn init-version-2 []
(neo4j/exec-query! migrate-links {}))
(def migrations
[init-version-0
init-version-1])
init-version-1
init-version-2])
(defn run-migrations! []
(neo4j/exec-query! merge-config {:now (neo4j/now-str)

@ -141,18 +141,12 @@
OPTIONAL MATCH
(p:property)-[pc:of]->(i),
(p)-[pac:of]->(a:attribute)
OPTIONAL MATCH
(i)<-[lt1:link_to]-(ltn:link)-[lt2:link_from]->(),
(ltn)-[ltcb:created_by]->()
OPTIONAL MATCH
(i)<-[lf1:link_from]-(lfn:link)-[lf2:link_to]->(),
(lfn)-[lfcb:created_by]->()
OPTIONAL MATCH
(i)-[tw:tagged_with]->()
OPTIONAL MATCH
(i)-[l:link]-()
DELETE pac, pc, cb, ic, p,
lt1, lt2, ltn, ltcb,
lf1, lf2, lfn, lfcb,
tw, i")
l, tw, i")
(defn delete! [uuid]
(neo4j/exec-query! delete {:uuid uuid}))
@ -171,8 +165,7 @@
(neo4j/defquery outgoing-links
"MATCH (inst:instance {uuid:{uuid}}),
(inst)<-[:link_from]-(link:link),
(link)-[:link_to]->(target:instance),
(inst)-[link:link]->(target:instance),
(target)-[:of]->(schema:schema)
OPTIONAL MATCH
(target)-[:tagged_with]->(tag:tag)
@ -183,8 +176,7 @@
(neo4j/defquery incoming-links
"MATCH (inst:instance {uuid:{uuid}}),
(inst)<-[:link_to]-(link:link),
(link)-[:link_from]->(source:instance),
(inst)<-[link:link]-(source:instance),
(source)-[:of]->(schema:schema)
OPTIONAL MATCH
(source)-[:tagged_with]->(tag:tag)

@ -10,30 +10,28 @@
(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]
CREATE (i)-[l:link]->(t)
SET l.created_at = {created_at},
l.name = {name},
l.created_by = {by},
l.uuid = {uuid}")
(defn create! [{:keys [from name to by]}]
(let [tuples (map (fn [target-uuid]
[create
{:from (:from link)
:by (:by link)
{:from from
:by by
:target target-uuid
:uuid (neo4j/uuid)
:created_at (neo4j/now-str)
:name (:name link)}])
(:to link))]
:name name}])
to)]
(apply neo4j/exec-queries! tuples)))
(neo4j/defquery delete
"MATCH (l:link {uuid:{uuid}}),
(l)-[r]-()
DELETE r, l")
"MATCH (:instance)-[l:link]-(:instance)
WHERE l.uuid = {uuid}
DELETE l")
(defn delete! [uuid]
(neo4j/exec-query! delete
{:uuid uuid}))

@ -36,11 +36,11 @@
"MATCH (coc:instance {uuid:{coc_uuid}}),
(rschema:schema {uuid:{roleschema_uuid}}),
(role:instance)-[:of]->(rschema),
(coc)--(:link)--(role)
(coc)-[:link]->(role)
OPTIONAL MATCH
(lschema:schema {uuid:{levelschema_uuid}}),
(level:instance)-[:of]->(lschema),
(role)--(:link)-->(level)
(role)-[:link]->(level)
RETURN role, level")
(defn roles-with-levels-of-coc! [coc-key]
(->> (neo4j/exec-query! roles-with-levels-of-coc
@ -102,11 +102,11 @@
"MATCH (level:instance {uuid:{level_uuid}}),
(mschema:schema {uuid:{moduleschema_uuid}}),
(module:instance)-[:of]->(mschema),
(level)--(:link)--(module)
(level)-[:link]->(module)
OPTIONAL MATCH
(cschema:schema {uuid:{compschema_uuid}}),
(comp:instance)-[:of]->(cschema),
(module)--(:link)--(comp)
(module)-[:link]-(comp)
RETURN module, comp")
(defn modules-with-comps! [level-uuid]
(->> (neo4j/exec-query! modules-with-comps
@ -132,10 +132,10 @@
"MATCH (role:instance {uuid:{role_uuid}}),
(lschema:schema {uuid:{levelschema_uuid}}),
(level:instance)-[:of]->(lschema),
(role)--(:link)--(level),
(role)-[:link]->(level),
(mschema:schema {uuid:{moduleschema_uuid}}),
(module:instance)-[:of]->(mschema),
(level)--(:link)--(module)
(level)-[:link]->(module)
RETURN module, level
ORDER BY CASE
WHEN level.name =~ \".*Foundation.*\" THEN
@ -165,7 +165,7 @@
"MATCH (module:instance {uuid:{uuid}}),
(cschema:schema {uuid:{compschema_uuid}}),
(comp:instance)-[:of]->(cschema),
(module)--(:link)--(comp)
(module)-[:link]->(comp)
RETURN comp
ORDER BY comp.name")
(defn module! [uuid]

@ -19,7 +19,7 @@
"MATCH
(source:instance)-[:of]->(schema:schema)
OPTIONAL MATCH
(source)<-[:link_from]-(link:link)-[:link_to]->(target:instance),
(source)-[link:link]->(target:instance),
(target)-[:of]->(target_schema:schema)
RETURN source, schema, link, target, target_schema")
(defn all-instance-connections! []

Loading…
Cancel
Save