add routes for basic list CRUD operations

This commit is contained in:
Gered 2016-07-30 17:24:20 -04:00
parent 962a3624b7
commit a71d4f541b
3 changed files with 79 additions and 0 deletions

View file

@ -21,6 +21,7 @@
[mtgcoll.routes.main-page :refer [main-page-routes]]
[mtgcoll.routes.images :refer [image-routes]]
[mtgcoll.routes.collection :refer [collection-routes]]
[mtgcoll.routes.lists :refer [list-routes]]
[mtgcoll.routes.auth :refer [auth-routes]]))
(defn init
@ -50,6 +51,7 @@
(-> (routes
auth-routes
collection-routes
list-routes
image-routes
main-page-routes
(route/resources "/")

View 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)]))

View 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)))