From d054b3340c3b34e18ec2a7d0d8e39957017a072a Mon Sep 17 00:00:00 2001 From: Philipp Hofer Date: Mon, 7 Apr 2025 20:12:14 +0200 Subject: [PATCH] create index page --- src/lib.rs | 17 +++++++++++++++-- src/station/routes.rs | 9 ++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 2aad419..323c627 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,8 +1,10 @@ -use axum::{Router, body::Body, response::Response, routing::get}; +use axum::{body::Body, response::Response, routing::get, Router}; +use maud::{html, Markup}; +use partials::page; use sqlx::SqlitePool; use std::sync::Arc; use tokio::net::TcpListener; -use tower_sessions::{MemoryStore, SessionManagerLayer}; +use tower_sessions::{MemoryStore, Session, SessionManagerLayer}; mod partials; mod station; @@ -73,12 +75,23 @@ async fn serve_marker_png() -> Response { .unwrap() } +async fn index(session: Session) -> Markup { + let content = html! { + h1 { "Stationslauf-App" } + a role="button" href="/station" { + "Stationen" + } + }; + page(content, session, false).await +} + /// Starts the main application. pub async fn start(listener: TcpListener, db: SqlitePool) { let session_store = MemoryStore::default(); let session_layer = SessionManagerLayer::new(session_store); let app = Router::new() + .route("/", get(index)) .nest("/station", station::routes()) .route("/pico.css", get(serve_pico_css)) .route("/style.css", get(serve_my_css)) diff --git a/src/station/routes.rs b/src/station/routes.rs index 0f8423e..9d637b3 100644 --- a/src/station/routes.rs +++ b/src/station/routes.rs @@ -1,11 +1,11 @@ use crate::{err, partials::page, station::Station, succ}; use axum::{ - Form, Router, extract::State, response::{IntoResponse, Redirect}, routing::{get, post}, + Form, Router, }; -use maud::{Markup, html}; +use maud::{html, Markup}; use serde::Deserialize; use sqlx::SqlitePool; use std::sync::Arc; @@ -371,7 +371,10 @@ async fn index(State(db): State>, session: Session) -> Markup { let stations = Station::all(&db).await; let content = html! { - h1 { "Stationen" } + h1 { + a href="/" { "↩️" } + "Stationen" + } ol { @for station in &stations { li {