diff --git a/web/dev/user.clj b/web/dev/user.clj index bbc0a82..65e8832 100644 --- a/web/dev/user.clj +++ b/web/dev/user.clj @@ -13,6 +13,7 @@ [com.darklimericks.util.identicon :as identicon] [com.darklimericks.server.limericks :as limericks] [com.darklimericks.db.albums :as db.albums] + [com.darklimericks.db.limericks :as db.limericks] [com.darklimericks.server.util :as util] [com.darklimericks.server.system] [reitit.core :as reitit])) @@ -62,8 +63,12 @@ (comment - ((-> state/system - :app/server)) + (require '[com.darklimericks.db.limericks :as db.limericks]) + (let [session + (java.util.UUID/fromString "4605f687-4e91-47de-abdf-458ef7d47b7e")] + (db.limericks/limericks-by-session + (-> state/system :com.darklimericks.db.core/connection) + session)) (init) (auto-reset) (let [db (-> state/system :database.sql/connection) diff --git a/web/src/com/darklimericks/db/limericks.clj b/web/src/com/darklimericks/db/limericks.clj index 7d7d3a2..ec3b96b 100644 --- a/web/src/com/darklimericks/db/limericks.clj +++ b/web/src/com/darklimericks/db/limericks.clj @@ -57,6 +57,15 @@ :select :* :from :limerick)))) +(defn limericks-by-session [db session] + (->> (honey.sql/build + :select :* + :from :limerick + :join [:session_limerick [:= :session_limerick.limerick_id :limerick.id]] + :where [:= :session_limerick.session_id session]) + honey.sql/format + (jdbc/execute! db))) + (defn album-limericks-sql [album-id] (honey.sql/format (honey.sql/build diff --git a/web/src/com/darklimericks/server/handlers.clj b/web/src/com/darklimericks/server/handlers.clj index 5a2c771..3a6c9e7 100644 --- a/web/src/com/darklimericks/server/handlers.clj +++ b/web/src/com/darklimericks/server/handlers.clj @@ -1,6 +1,9 @@ (ns com.darklimericks.server.handlers (:require [taoensso.timbre :as timbre] [hiccup.core :as hiccup] + [next.jdbc :as jdbc] + [honeysql.core] + [honeysql.helpers] [reitit.ring :as ring] [reitit.http :as http] [reitit.interceptor.sieppari :as sieppari] @@ -45,21 +48,32 @@ (defn limerick-generation-post-handler [db cache] (fn [{{:keys [scheme]} :params - {:keys [session-id]} :session + session-id :session/key :as request}] - (let [scheme (limericks/parse-scheme scheme) - mid (car/wcar db (car-mq/enqueue - "limericks" - {:scheme scheme - :session-id session-id}))] - {:status 301 + (if-let [session-id (-> session-id + (string/split #":") + (nth 2) + java.util.UUID/fromString)] + (let [scheme (limericks/parse-scheme scheme) + mid (car/wcar db (car-mq/enqueue + "limericks" + {:scheme scheme + :session-id session-id}))] + {:status 301 + :headers {"Content-Type" "text/html; charset=utf-8"} + :body (views/wrapper + db + request + {} + [:h1 "Creating your limerick..."] + [:div "Submission processing... " mid])}) + {:status 400 :headers {"Content-Type" "text/html; charset=utf-8"} :body (views/wrapper db request {} - [:h1 "Creating your limerick..."] - [:div "Submission processing... " mid])}))) + [:div "Enable cookies to submit limericks"])}))) (defn limericks-get-handler [db cache] (fn [request] @@ -213,14 +227,25 @@ (defn submit-limericks-get-handler [db] (fn [request] - {:status 200 - :headers {"Content-Type" "text/html; charset=uft-8"} - :session (if (empty? (:session request)) - {:session-id (java.util.UUID/randomUUID)} - (:session request)) - :body (views/wrapper - db - request - {} - (views/submit-limericks request))})) - + (if-let [session-key (:session/key request)] + (let [session-key (-> session-key + (string/split #":") + (nth 2) + java.util.UUID/fromString) + limericks (db.limericks/limericks-by-session db session-key)] + (println session-key) + (println limericks) + {:status 200 + :headers {"Content-Type" "text/html; charset=uft-8"} + :body (views/wrapper + db + request + {} + (views/submit-limericks request limericks))}) + {:status 200 + :headers {"Content-Type" "text/html; charset=uft-8"} + :body (views/wrapper + db + request + {} + [:div "Enable cookies to submit limericks."])}))) diff --git a/web/src/com/darklimericks/server/router.clj b/web/src/com/darklimericks/server/router.clj index c67e0e0..250953c 100644 --- a/web/src/com/darklimericks/server/router.clj +++ b/web/src/com/darklimericks/server/router.clj @@ -16,7 +16,7 @@ ["/limerick-generation-task" {:name ::limerick-generation-task :post {:handler (handlers/limerick-generation-post-handler db cache)} - :get {:handler (handlers/limerick-generation-get-handler db cache)}}] + :get {:handler (handlers/submit-limericks-get-handler db)}}] ["/submit" {:name ::submit :get {:handler (handlers/submit-limericks-get-handler db)}}] diff --git a/web/src/com/darklimericks/server/views.clj b/web/src/com/darklimericks/server/views.clj index 2933074..2cba7a1 100644 --- a/web/src/com/darklimericks/server/views.clj +++ b/web/src/com/darklimericks/server/views.clj @@ -157,7 +157,7 @@ [:div line])])) (defn submit-limericks - [{{:keys [session-id]} :session :as request}] + [request limericks] [:div [:h1 "Submit Limericks"] (form/form-to @@ -166,6 +166,9 @@ :com.darklimericks.server.router/limerick-generation-task)] (form/text-field "scheme") (form/submit-button "Generate dark limerick")) - [:div - "Currently processing " - session-id]]) + [:div "Session " (:session/key request)] + (for [limerick limericks] + [:div + [:h3 (:limerick/name limerick)] + (for [line (string/split (:limerick/text limerick) #"\n")] + [:div line])])])