Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (ns guestbook.routes.home
- (:require [guestbook.layout :as layout]
- [ring.util.http-response :as response]
- [clojure.java.io :as io]
- [guestbook.db.core :as db]
- [ring.util.response :refer [redirect]]
- [compojure.core :refer [defroutes GET POST]]
- [struct.core :as st]))
- (defn home-page [{:keys [name message errors]}]
- (layout/render
- "home.html"
- (merge {:message (db/get-messages)}
- {:message message
- :name name
- :errors errors})))
- (def message-schema
- [[:name
- st/required
- st/string]
- [:message
- st/required
- st/string
- {:message "must contain at least 10 characters"
- :validate #(> (count %) 9)}]])
- (defn validate-message [params]
- (first (st/validate params message-schema)))
- (defn save-message! [{:keys [params]}]
- (if-let [errors (validate-message params)]
- (-> (response/found "/")
- (assoc :flash (assoc params :errors errors)))
- (do
- (db/save-message!
- (assoc params :timestamp (java.util.Date.)))
- (response/found "/")
- (layout/render "home.html"))))
- (defroutes home-routes
- (GET "/" request (home-page request))
- (POST "/" request (save-message! request)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement