add routes for basic list CRUD operations
This commit is contained in:
parent
962a3624b7
commit
a71d4f541b
|
@ -21,6 +21,7 @@
|
||||||
[mtgcoll.routes.main-page :refer [main-page-routes]]
|
[mtgcoll.routes.main-page :refer [main-page-routes]]
|
||||||
[mtgcoll.routes.images :refer [image-routes]]
|
[mtgcoll.routes.images :refer [image-routes]]
|
||||||
[mtgcoll.routes.collection :refer [collection-routes]]
|
[mtgcoll.routes.collection :refer [collection-routes]]
|
||||||
|
[mtgcoll.routes.lists :refer [list-routes]]
|
||||||
[mtgcoll.routes.auth :refer [auth-routes]]))
|
[mtgcoll.routes.auth :refer [auth-routes]]))
|
||||||
|
|
||||||
(defn init
|
(defn init
|
||||||
|
@ -50,6 +51,7 @@
|
||||||
(-> (routes
|
(-> (routes
|
||||||
auth-routes
|
auth-routes
|
||||||
collection-routes
|
collection-routes
|
||||||
|
list-routes
|
||||||
image-routes
|
image-routes
|
||||||
main-page-routes
|
main-page-routes
|
||||||
(route/resources "/")
|
(route/resources "/")
|
||||||
|
|
45
src/mtgcoll/models/lists.clj
Normal file
45
src/mtgcoll/models/lists.clj
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
(ns mtgcoll.models.lists
|
||||||
|
(:require
|
||||||
|
[views.sql.core :refer [vexec! with-view-transaction]]
|
||||||
|
[mtgcoll.db :refer [db]]
|
||||||
|
[mtgcoll.views.core :refer [view-system]]))
|
||||||
|
|
||||||
|
(defn add-list!
|
||||||
|
[name public? requires-qualities?]
|
||||||
|
(vexec! view-system db
|
||||||
|
["insert into lists
|
||||||
|
(name, is_public, require_qualities)
|
||||||
|
values
|
||||||
|
(?, ?, ?)"
|
||||||
|
(str name) (boolean public?) (boolean requires-qualities?)]))
|
||||||
|
|
||||||
|
(defn remove-list!
|
||||||
|
[list-id]
|
||||||
|
(vexec! view-system db
|
||||||
|
["delete from lists
|
||||||
|
where id = ?"
|
||||||
|
(int list-id)]))
|
||||||
|
|
||||||
|
(defn update-list-name!
|
||||||
|
[list-id name]
|
||||||
|
(vexec! view-system db
|
||||||
|
["update lists
|
||||||
|
set name = ?
|
||||||
|
where id = ?"
|
||||||
|
(str name) (int list-id)]))
|
||||||
|
|
||||||
|
(defn update-list-note!
|
||||||
|
[list-id note]
|
||||||
|
(vexec! view-system db
|
||||||
|
["update lists
|
||||||
|
set notes = ?
|
||||||
|
where id = ?"
|
||||||
|
(str note) (int list-id)]))
|
||||||
|
|
||||||
|
(defn update-list-visibility!
|
||||||
|
[list-id public?]
|
||||||
|
(vexec! view-system db
|
||||||
|
["update lists
|
||||||
|
set is_public = ?
|
||||||
|
where id = ?"
|
||||||
|
(boolean public?) (int list-id)]))
|
32
src/mtgcoll/routes/lists.clj
Normal file
32
src/mtgcoll/routes/lists.clj
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
(ns mtgcoll.routes.lists
|
||||||
|
(:require
|
||||||
|
[compojure.core :refer [routes GET POST]]
|
||||||
|
[webtools.response :as response]
|
||||||
|
[webtools.routes.core :refer [wrap-middleware]]
|
||||||
|
[mtgcoll.middleware :refer [wrap-authenticated]]
|
||||||
|
[mtgcoll.models.lists :as lists]))
|
||||||
|
|
||||||
|
(def list-routes
|
||||||
|
(wrap-middleware
|
||||||
|
(routes
|
||||||
|
(POST "/lists/add" [name public? requires-qualities? :as request]
|
||||||
|
(lists/add-list! name public? requires-qualities?)
|
||||||
|
(response/json {:status "ok"}))
|
||||||
|
|
||||||
|
(POST "/lists/remove" [list-id :as request]
|
||||||
|
(lists/remove-list! list-id)
|
||||||
|
(response/json {:status "ok"}))
|
||||||
|
|
||||||
|
(POST "/lists/update-name" [list-id name :as request]
|
||||||
|
(lists/update-list-name! list-id name)
|
||||||
|
(response/json {:status "ok"}))
|
||||||
|
|
||||||
|
(POST "/lists/update-note" [list-id note :as request]
|
||||||
|
(lists/update-list-note! list-id note)
|
||||||
|
(response/json {:status "ok"}))
|
||||||
|
|
||||||
|
(POST "/lists/update-visibility" [list-id public? :as request]
|
||||||
|
(lists/update-list-visibility! list-id public?)
|
||||||
|
(response/json {:status "ok"})))
|
||||||
|
|
||||||
|
(wrap-authenticated)))
|
Loading…
Reference in a new issue