diff options
Diffstat (limited to 'src/controllers/event.rs')
-rw-r--r-- | src/controllers/event.rs | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/controllers/event.rs b/src/controllers/event.rs index c585933..eca8c21 100644 --- a/src/controllers/event.rs +++ b/src/controllers/event.rs @@ -34,13 +34,13 @@ use rocket_dyn_templates::Template; pub async fn index(db: db::Connection) -> Result<Template, Redirect> { #[derive(Serialize)] struct Context { - event: models::Event, + events: Vec<models::Event>, } - let db_res = models::Event::get(&db).await; + let db_res = models::Event::get_all_events(&db).await; match db_res { - Ok(event) => { - let ctx = Context { event }; + Ok(events) => { + let ctx = Context { events }; Ok(Template::render("event/index", &ctx)) }, Err(_) => { @@ -72,9 +72,23 @@ pub struct NewEventForm { #[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()) + let event = models::Event::create(&db, form.name.to_owned(), form.description.to_owned()) + .await + .map_err(|_| Status::InternalServerError)?; + + Ok(Redirect::to(format!("/{}/edit", event.id))) +} + +#[get("/<eventid>/edit")] +pub async fn edit(db: db::Connection, eventid: i32) -> Result<Template, Status> { + #[derive(Serialize)] + struct Context { + event: models::Event, + } + + let event = models::Event::get_event(&db, eventid) .await .map_err(|_| Status::InternalServerError)?; - Ok(Redirect::to("")) + Ok(Template::render("event/edit", Context { event })) } |