You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.4 KiB
39 lines
1.4 KiB
(ns wanijo.tag.routes
|
|
(:require [compojure.core :refer [defroutes POST DELETE]]
|
|
[ring.util.response :as resp]
|
|
[formulare.core :as form]
|
|
[wanijo.infra.routing :refer [register! path]]
|
|
[wanijo.schema.db :as domain-schema]
|
|
[wanijo.instance.db :as db-instance]
|
|
[wanijo.instance.view.show :refer [show]]
|
|
[wanijo.tag
|
|
[db :as domain]
|
|
[forms :as forms]]))
|
|
|
|
(defn create-tag! [instance-uuid req]
|
|
(let [{new-names :newnames} (form/form-data forms/new-tag req)
|
|
user-uuid (-> req :session :uuid)]
|
|
(if (form/valid? forms/new-tag req)
|
|
(do
|
|
(domain/merge-tags! new-names
|
|
instance-uuid
|
|
user-uuid)
|
|
(resp/redirect (path :instance-show
|
|
{:uuid instance-uuid})))
|
|
(show
|
|
(db-instance/full-instance-by-uuid! instance-uuid)
|
|
(domain-schema/accessible-schemas! user-uuid)
|
|
req))))
|
|
|
|
(defn remove-tag! [uuid instance-uuid]
|
|
(domain/remove-tag! uuid instance-uuid)
|
|
(resp/redirect (path :instance-edit-form {:uuid instance-uuid})))
|
|
|
|
(defroutes routes
|
|
(POST (register! :tag-create "/tag/:instance-uuid")
|
|
[instance-uuid :as req]
|
|
(create-tag! instance-uuid req))
|
|
(DELETE (register! :tag-remove "/tag/:uuid/:instance-uuid")
|
|
[uuid instance-uuid]
|
|
(remove-tag! uuid instance-uuid)))
|