diff --git a/src/wanijo/auth/routes.clj b/src/wanijo/auth.clj
similarity index 87%
rename from src/wanijo/auth/routes.clj
rename to src/wanijo/auth.clj
index 3d97f64..95c8def 100644
--- a/src/wanijo/auth/routes.clj
+++ b/src/wanijo/auth.clj
@@ -1,10 +1,10 @@
-(ns wanijo.auth.routes
+(ns wanijo.auth
(:require [compojure.core :refer [POST GET defroutes]]
[ring.util.response :refer [redirect]]
[ring.util.anti-forgery :refer [anti-forgery-field]]
[buddy.hashers :as hashers]
[hiccup.form :as hform]
- [wanijo.view :as view]
+ [wanijo.view.page :as page]
[wanijo.domain.user :as domain-user]))
(defn- login-check! [req]
@@ -14,12 +14,13 @@
(hashers/check pw hash))]
(if pwmatch
(-> (redirect "/")
- (assoc-in [:session :ident] uname))
+ (assoc-in [:session :ident] uname)
+ (assoc-in [:session :uuid] (:uuid unode)))
(-> (redirect "/login")
(assoc :flash :invalid-credentials)))))
(defn login [req]
- (view/layout!
+ (page/layout!
:content
[[:h1 "Kama ken"]
(hform/form-to
diff --git a/src/wanijo/domain/schema.clj b/src/wanijo/domain/schema.clj
index 15fc31e..ade07c0 100644
--- a/src/wanijo/domain/schema.clj
+++ b/src/wanijo/domain/schema.clj
@@ -1,11 +1,9 @@
(ns wanijo.domain.schema
- (:require [clojurewerkz.neocons.rest.cypher :as cypher]
- [clojure.spec.alpha :as spec]
- [wanijo.neo4j :as neo4j]
- [wanijo.devmode :as devmode]))
+ (:require [clojure.spec.alpha :as spec]
+ [wanijo.neo4j :as neo4j]))
(spec/def ::name
- (spec/and string? not-empty int?))
+ (spec/and string? not-empty))
(spec/def ::created-at
(spec/or :int (spec/and int?
@@ -13,13 +11,27 @@
:str (spec/and string?
#(re-matches #"\d{4}\d{2}\d{2}\d{2}\d{2}\d{2}" %))))
-(defn all-created-by! [ident]
+(defn all-created-by! [user-uuid]
(neo4j/query-rawdata!
:query
"MATCH (s:schema)-[:created_by]->(u:user)
- WHERE u.ident = {ident}
+ WHERE u.uuid = {uuid}
RETURN s
ORDER BY s.name"
- :params {:ident ident}
- :alias "s"
- ))
+ :params {:uuid user-uuid}
+ :alias "s"))
+
+(defn create-new! [name user-uid]
+ (:uuid
+ (neo4j/query-rawdata!
+ :query
+ "MATCH (u:user)
+ WHERE u.uuid = {u_uuid}
+ CREATE (s:schema)-[:created_by]->(u)
+ SET s.name = {name}
+ SET s.uuid = {s_uuid}
+ RETURN s"
+ :params {:u_uuid user-uid
+ :name name
+ :s_uuid (neo4j/uuid)}
+ :alias "s")))
diff --git a/src/wanijo/domain/user.clj b/src/wanijo/domain/user.clj
index f4fb27a..4b8bb6c 100644
--- a/src/wanijo/domain/user.clj
+++ b/src/wanijo/domain/user.clj
@@ -2,10 +2,11 @@
(:require [wanijo.neo4j :as neo4j]))
(defn find! [ident]
- (neo4j/query-rawdata!
- :query
- "MATCH (n:user)
- WHERE n.ident = {ident}
- RETURN n"
- :alias "n"
- :params {:ident ident}))
+ (first
+ (neo4j/query-rawdata!
+ :query
+ "MATCH (n:user)
+ WHERE n.ident = {ident}
+ RETURN n"
+ :alias "n"
+ :params {:ident ident})))
diff --git a/src/wanijo/handler.clj b/src/wanijo/handler.clj
index 5699e12..74fd809 100644
--- a/src/wanijo/handler.clj
+++ b/src/wanijo/handler.clj
@@ -6,7 +6,7 @@
:refer [wrap-defaults site-defaults]]
[ring.util.response :as rur]
[ring.middleware.session.cookie :as session-cookie]
- [wanijo.auth.routes :refer [auth-routes]]
+ [wanijo.auth :refer [auth-routes]]
[wanijo.home.routes :refer [home-routes]]
[wanijo.schema.routes :refer [schema-routes]]
[wanijo.devmode :as devmode]))
diff --git a/src/wanijo/neo4j.clj b/src/wanijo/neo4j.clj
index 4c2aedd..f1b2d7d 100644
--- a/src/wanijo/neo4j.clj
+++ b/src/wanijo/neo4j.clj
@@ -24,9 +24,10 @@
(defn query-rawdata!
[& {:keys [query alias params]
:or {params {}}}]
- (devmode/send-to-bar (str (butiful-query query)
- "
---Params---
"
- params))
+ (devmode/send-to-bar
+ (str (butiful-query query)
+ "
---Params---
"
+ params))
(->>
(cypher/tquery (conn!) query params)
(map #(get % alias))
diff --git a/src/wanijo/schema/routes.clj b/src/wanijo/schema/routes.clj
index ff96eec..76f1def 100644
--- a/src/wanijo/schema/routes.clj
+++ b/src/wanijo/schema/routes.clj
@@ -14,8 +14,9 @@
(defn- overview! [req]
(let [session (:session req)
- ident (:ident session)
- schemas (domain-schema/all-created-by! ident)]
+ uuid (:uuid session)
+ schemas (domain-schema/all-created-by! uuid)]
+ (println schemas)
(page/layout!
:session session
:content
@@ -39,7 +40,11 @@
(defn- new! [req]
(if (forms/valid? new-schema-form req)
- (resp/redirect "/schema")
+ (do
+ (domain-schema/create-new!
+ (get-in req [:params :schema-name])
+ (get-in req [:session :uuid]))
+ (resp/redirect "/schema"))
(overview! req)))
(defroutes schema-routes
diff --git a/src/wanijo/view/forms.clj b/src/wanijo/view/forms.clj
index 4040614..d83494b 100644
--- a/src/wanijo/view/forms.clj
+++ b/src/wanijo/view/forms.clj
@@ -32,13 +32,12 @@
field-value))))
(defn valid? [form-def req]
- (clojure.pprint/pprint req)
(reduce-kv
(fn [result field value]
- (if (spec/valid?
- (get-in form-def [:fields field :spec])
- value)
- true
- (reduced false)))
+ (if-let [field-spec (get-in form-def [:fields field :spec])]
+ (if (spec/valid? field-spec value)
+ true
+ (reduced false))
+ result))
true
(:params req)))