forked from Roflin/gamenight
57 lines
1.5 KiB
Rust
57 lines
1.5 KiB
Rust
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::<schema::GameNight>,
|
|
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<FlashMessage<'_>>) -> 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)
|
|
} |