diff options
Diffstat (limited to 'src/controllers/room.rs')
-rw-r--r-- | src/controllers/room.rs | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/src/controllers/room.rs b/src/controllers/room.rs index 9a4f4c2..08ce56d 100644 --- a/src/controllers/room.rs +++ b/src/controllers/room.rs @@ -23,15 +23,13 @@ use crate::{ use std::result::Result; use rocket::{get, post}; -use rocket::request::{Form, FromForm}; +use rocket::form::{Form, FromForm}; +use rocket::http::Status; use rocket::response::Redirect; -use rocket_contrib::{ - json::Json, - templates::Template, -}; +use rocket::serde::json::Json; +use rocket_dyn_templates::Template; use serde::Serialize; use std::collections::HashMap; -use std::error::Error; #[derive(Serialize)] struct Context { @@ -39,20 +37,20 @@ struct Context { } #[get("/", format = "application/json", rank = 1)] -pub fn get_rooms_json(db: db::Connection) -> Json<Vec<models::Room>> { - Json(db.get_rooms().unwrap()) +pub async fn get_rooms_json(db: db::Connection) -> Json<Vec<models::Room>> { + Json(db.get_rooms().await.unwrap()) } #[get("/", rank = 2)] -pub fn list_rooms(db: db::Connection) -> Result<Template, Box<dyn Error>> { - let ctx = Context { rooms: db.get_rooms()? }; +pub async fn list_rooms(db: db::Connection) -> Result<Template, Status> { + let ctx = Context { rooms: db.get_rooms().await.map_err(|_| Status::InternalServerError)? }; Ok(Template::render("room/list", &ctx)) } #[get("/new")] -pub fn new_room() -> Result<Template, Box<dyn Error>> { +pub fn new_room() -> Template { let ctx: HashMap<String, String> = HashMap::new(); - Ok(Template::render("room/new", &ctx)) + Template::render("room/new", &ctx) } #[derive(FromForm)] @@ -61,7 +59,7 @@ pub struct NewRoomForm { } #[post("/", format = "application/x-www-form-urlencoded", data = "<room>")] -pub fn create_room(db: db::Connection, room: Form<NewRoomForm>) -> Result<Redirect, Box<dyn Error>> { - db.create_room(&room.name)?; +pub async fn create_room(db: db::Connection, room: Form<NewRoomForm>) -> Result<Redirect, Status> { + db.create_room(room.name.to_owned()).await.map_err(|_| Status::InternalServerError)?; Ok(Redirect::to("rooms")) } |