diff --git a/README.md b/README.md index 3dec113..db6bba6 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ - [x] Route_station - [x] Team - [ ] Rating view + - [ ] auth for stations -> cookie? - [ ] Highscore list ## Fancy features diff --git a/src/admin/route/web.rs b/src/admin/route/web.rs index 79293a0..596c40e 100644 --- a/src/admin/route/web.rs +++ b/src/admin/route/web.rs @@ -17,7 +17,7 @@ async fn index(State(db): State>, session: Session) -> Markup { let content = html! { h1 { - a href="/admin/" { "↩️" } + a href="/admin" { "↩️" } "Routen" } article { diff --git a/src/admin/station/web.rs b/src/admin/station/web.rs index 42fa00a..bf57b29 100644 --- a/src/admin/station/web.rs +++ b/src/admin/station/web.rs @@ -415,7 +415,7 @@ async fn index(State(db): State>, session: Session) -> Markup { let content = html! { h1 { - a href="/admin/" { "↩️" } + a href="/admin" { "↩️" } (t!("stations")) } article { diff --git a/src/admin/team/web.rs b/src/admin/team/web.rs index 4c9c335..8360a57 100644 --- a/src/admin/team/web.rs +++ b/src/admin/team/web.rs @@ -454,7 +454,7 @@ async fn index(State(db): State>, session: Session) -> Markup { let content = html! { h1 { - a href="/admin/" { "↩️" } + a href="/admin" { "↩️" } "Teams" } article { diff --git a/src/lib.rs b/src/lib.rs index 77c214c..1a3ac1a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,7 @@ extern crate rust_i18n; i18n!("locales", fallback = "de-AT"); +use admin::station::Station; use axum::{body::Body, response::Response, routing::get, Router}; use partials::page; use sqlx::SqlitePool; @@ -12,6 +13,7 @@ use tower_sessions::{MemoryStore, SessionManagerLayer}; pub(crate) mod admin; mod partials; +pub(crate) mod station; pub(crate) fn pl(amount: usize, single: &str, append: &str) -> String { if amount == 1 { @@ -106,6 +108,7 @@ pub async fn start(listener: TcpListener, db: SqlitePool) { let session_layer = SessionManagerLayer::new(session_store); let app = Router::new() + .nest("/s", station::routes()) // TODO: maybe switch to "/" .nest("/admin", admin::routes()) .route("/pico.css", get(serve_pico_css)) .route("/style.css", get(serve_my_css)) diff --git a/src/station.rs b/src/station.rs new file mode 100644 index 0000000..5980ae6 --- /dev/null +++ b/src/station.rs @@ -0,0 +1,39 @@ +use crate::{partials, Station}; +use axum::{extract::State, response::IntoResponse, routing::get, Router}; +use maud::{html, Markup}; +use sqlx::SqlitePool; +use std::sync::Arc; +use tower_sessions::Session; + +async fn station_picker(State(db): State>, session: Session) -> Markup { + let stations = Station::all(&db).await; + let content = html! { + h1 { "Wähle deine Station" } + select onchange="window.location.href='/s/' + this.value;" { + option selected value="" { + "Deine Station..." + } + @for station in stations { + option value=(station.id) { (station.name) }; + } + } + + }; + partials::page(content, session, false).await +} + +async fn view( + State(db): State>, + session: Session, + axum::extract::Path(id): axum::extract::Path, +) -> Markup { + //let Some(route) = Route::find_by_id(&db, id).await else { + //} + todo!() +} + +pub(super) fn routes() -> Router> { + Router::new() + .route("/", get(station_picker)) + .route("/{id}", get(view)) +}