use serde::{Serialize, Deserialize}; use rocket_dyn_templates::Template; use rocket::response::{Redirect}; use rocket::request::{FlashMessage}; use crate::schema; #[derive(Serialize, Deserialize, Debug)] struct FlashData { has_data: bool, kind: String, message: String } #[derive(Serialize, Deserialize, Debug)] struct GameNightsData { gamenights: Vec::, flash: FlashData } #[get("/gamenights")] pub async fn gamenights(conn: schema::DbConn) -> Template { let gamenights = schema::get_all_gamenights(conn).await; let data = GameNightsData { gamenights: gamenights, flash: FlashData { has_data: false, message: "".to_string(), kind: "".to_string() } }; Template::render("gamenights", &data) } #[get("/")] pub async fn index() -> Redirect { Redirect::to(uri!(gamenights)) } #[derive(Serialize, Deserialize, Debug)] struct GameNightAddData { post_url: String, flash : FlashData } #[get("/gamenight/add")] pub async fn add_game_night(flash: Option>) -> Template { let flash_data = match flash { None => FlashData { has_data: false, message: "".to_string(), kind: "".to_string() }, Some(flash) => FlashData { has_data: true, message: flash.message().to_string(), kind: flash.kind().to_string() } }; let data = GameNightAddData { post_url: "/api/gamenight".to_string(), flash: flash_data }; Template::render("gamenight_add", &data) }