#[macro_use] extern crate rocket; use rocket::fs::{FileServer, relative}; use rocket::response::Redirect; use rocket_dyn_templates::Template; use rocket_db_pools::{sqlx, sqlx::Row, Connection}; mod auth; mod truth; mod vote; mod week; mod database; mod database_records; use database::Db; #[get("/")] async fn index(mut db: Connection) -> Redirect { let current_week: u8 = match sqlx::query("SELECT number FROM Weeks WHERE is_last_week == 1;") .fetch_one(&mut **db).await { Ok(v) => v.try_get(0).ok().unwrap_or_else(|| 1), // If error, go back to 1 Err(error) => { error!("Error while getting current week : {error:?}"); 1 } }; Redirect::to(uri!(week::week(week_number = if current_week == 0 {1} else {current_week}))) } #[launch] fn rocket() -> _ { rocket::build() .mount("/", FileServer::from(relative!("static_files"))) .mount("/", routes![index, vote::fetch_vote_data, vote::vote, truth::create_truth, truth::edit_truth, week::week, week::update_week, week::set_last_week, week::create_week, auth::login, auth::logout]) .attach(database::stage()) .attach(Template::fairing()) } // TODO: Random Row ID