lyrs/src/router.rs

32 lines
921 B
Rust
Raw Normal View History

2024-05-14 14:30:03 -05:00
use crate::{prelude::*, state::State as AppState, static_files};
use axum::{extract::State, response::Html, routing::get, Router};
use minijinja::context;
use tower_livereload::LiveReloadLayer;
pub async fn router() -> Result<Router> {
let state = AppState::try_new().await?;
let lr = LiveReloadLayer::new();
let _template_file_watcher = state
.clone()
.templates
.start_watcher(Some(lr.reloader()))
.await?;
let (static_file_service, _static_file_watcher) = static_files::router(Some(lr.reloader()))?;
Ok(Router::new()
.route("/", get(index))
.nest_service("/static", static_file_service)
.layer(lr)
.with_state(state))
}
async fn index(State(state): State<AppState>) -> Result<Html<String>> {
Ok(Html(
state
.templates
.render("pages/index.html.jinja", context!())
.await?,
))
}