diff options
Diffstat (limited to 'src/controllers/event.rs')
-rw-r--r-- | src/controllers/event.rs | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/controllers/event.rs b/src/controllers/event.rs index 4de8740..c585933 100644 --- a/src/controllers/event.rs +++ b/src/controllers/event.rs @@ -23,21 +23,21 @@ use crate::{ use serde::Serialize; use serde_json::json; -use std::error::Error; use std::result::Result; use rocket::{get, post}; +use rocket::http::Status; use rocket::response::Redirect; -use rocket::request::{Form, FromForm}; -use rocket_contrib::templates::Template; +use rocket::form::{Form, FromForm}; +use rocket_dyn_templates::Template; #[get("/")] -pub fn index(db: db::Connection) -> Result<Template, Redirect> { +pub async fn index(db: db::Connection) -> Result<Template, Redirect> { #[derive(Serialize)] struct Context { event: models::Event, } - let db_res = models::Event::get(&db); + let db_res = models::Event::get(&db).await; match db_res { Ok(event) => { let ctx = Context { event }; @@ -61,8 +61,20 @@ pub struct NewEventForm { pub description: String, } -#[post("/", format = "application/x-www-form-urlencoded", data = "<form>")] -pub fn create(db: db::Connection, form: Form<NewEventForm>) -> Result<Redirect, Box<dyn Error>> { - models::Event::create(&db, &form.name, &form.description)?; +// fn full_uri(path: &str) -> String { +// let config = rocket::rocket.config(); +// if Some(base_uri) = config.extras.get("base_uri") { +// String::from(base_uri.as_str().unwrap()) + path +// } else { +// String::from(path) +// } +// } + +#[post("/create", format = "application/x-www-form-urlencoded", data = "<form>")] +pub async fn create(db: db::Connection, form: Form<NewEventForm>) -> Result<Redirect, Status> { + models::Event::create(&db, form.name.to_owned(), form.description.to_owned()) + .await + .map_err(|_| Status::InternalServerError)?; + Ok(Redirect::to("")) } |