From 84763c8dc47b591bb0a9281a0a26448c84a21950 Mon Sep 17 00:00:00 2001 From: Josha von Gizycki Date: Sat, 23 Feb 2019 20:44:49 +0100 Subject: [PATCH] migrations support --- src/wanijo/framework/auth.clj | 2 +- src/wanijo/framework/repl.clj | 57 +++++++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/src/wanijo/framework/auth.clj b/src/wanijo/framework/auth.clj index a0030a4..23aadb0 100644 --- a/src/wanijo/framework/auth.clj +++ b/src/wanijo/framework/auth.clj @@ -29,7 +29,7 @@ (when (:flash req) [:section.flash (:flash req)]) ;; (hform/label "uname" "Name") - (hform/text-field {:required "required"} "uname") + (hform/text-field {:required "required" :autofocus true} "uname") ;; (hform/label "pw" "Password") (hform/password-field {:required "required"} "pw") diff --git a/src/wanijo/framework/repl.clj b/src/wanijo/framework/repl.clj index b9cd276..fbb64ae 100644 --- a/src/wanijo/framework/repl.clj +++ b/src/wanijo/framework/repl.clj @@ -3,8 +3,7 @@ [neo4j-clj.core :as db] [wanijo.framework.neo4j :as neo4j])) -(db/defquery - create-user +(db/defquery create-user "CREATE (n:user) SET n.ident = {ident} SET n.pw = {pw} @@ -16,3 +15,57 @@ {:ident ident :pw (hashers/derive pw) :uuid (neo4j/uuid)})) + +(db/defquery init-config + "MERGE (c:dbconfig) + ON CREATE SET + c.installed_at = {now}, + c.db_version = 0") + +(db/defquery config + "MATCH (c:dbconfig) RETURN c") + +(db/defquery ver-0-schema-uuid + "CREATE CONSTRAINT ON (n:schema) + ASSERT n.uuid IS UNIQUE") + +(db/defquery ver-0-attribute-uuid + "CREATE CONSTRAINT ON (n:attribute) + ASSERT n.uuid IS UNIQUE") + +(db/defquery ver-0-instance-uuid + "CREATE CONSTRAINT ON (n:instance) + ASSERT n.uuid IS UNIQUE") + +(db/defquery ver-0-property-uuid + "CREATE CONSTRAINT ON (n:property) + ASSERT n.uuid IS UNIQUE") + +(db/defquery ver-0-user-uuid + "CREATE CONSTRAINT ON (n:user) + ASSERT n.uuid IS UNIQUE") + +(db/defquery ver-0-link-uuid + "CREATE CONSTRAINT ON (n:link) + ASSERT n.uuid IS UNIQUE") + +(defn init-version-0 [] + (neo4j/exec-query! ver-0-schema-uuid {}) + (neo4j/exec-query! ver-0-attribute-uuid {}) + (neo4j/exec-query! ver-0-instance-uuid {}) + (neo4j/exec-query! ver-0-property-uuid {}) + (neo4j/exec-query! ver-0-user-uuid {}) + (neo4j/exec-query! ver-0-link-uuid {})) + +(def migrations + [init-version-0]) + +(defn run-migrations! [] + (neo4j/exec-query! init-config {:now (neo4j/now-str)}) + (let [version (-> (neo4j/exec-query! config {}) + first + :c + :db_version)] + (if-let [to-run (nthrest migrations version)] + (doseq [mig to-run] + (mig)))))