aboutsummaryrefslogtreecommitdiffstats
path: root/src/controllers/film.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/controllers/film.rs')
-rw-r--r--src/controllers/film.rs26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/controllers/film.rs b/src/controllers/film.rs
index f407a4b..4a3dfa1 100644
--- a/src/controllers/film.rs
+++ b/src/controllers/film.rs
@@ -22,37 +22,35 @@ use crate::{
};
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;
use std::result::Result;
#[get("/", format = "application/json", rank = 1)]
-pub fn get_films_json(db: db::Connection) -> Json<Vec<models::Film>> {
- Json(db.get_films().unwrap())
+pub async fn get_films_json(db: db::Connection) -> Json<Vec<models::Film>> {
+ Json(db.get_films().await.unwrap())
}
#[get("/", rank = 2)]
-pub fn list_films(db: db::Connection) -> Result<Template, Box<dyn Error>> {
+pub async fn list_films(db: db::Connection) -> Result<Template, Status> {
#[derive(Serialize)]
struct Context {
films: Vec<models::Film>,
}
- let ctx = Context { films: db.get_films()? };
+ let ctx = Context { films: db.get_films().await.map_err(|_| Status::InternalServerError)? };
Ok(Template::render("film/list", &ctx))
}
#[get("/new")]
-pub fn new_film() -> Result<Template, Box<dyn Error>> {
+pub fn new_film() -> Template {
let ctx: HashMap<String, String> = HashMap::new();
- Ok(Template::render("film/new", &ctx))
+ Template::render("film/new", &ctx)
}
#[derive(FromForm)]
@@ -62,7 +60,7 @@ pub struct NewFilmForm {
}
#[post("/", format = "application/x-www-form-urlencoded", data = "<film>")]
-pub fn create_film(db: db::Connection, film: Form<NewFilmForm>) -> Result<Redirect, Box<dyn Error>> {
- db.create_film(&film.title, &film.url)?;
+pub async fn create_film(db: db::Connection, film: Form<NewFilmForm>) -> Result<Redirect, Status> {
+ db.create_film(film.title.to_owned(), film.url.to_owned()).await.map_err(|_| Status::InternalServerError)?;
Ok(Redirect::to("films"))
}