mabel/src/routes/posts.rs

26 lines
669 B
Rust

use axum::{
extract::{Path, State},
routing::get,
Router,
};
use std::sync::Arc;
use crate::{content::Page, error::AppError, state::AppState};
async fn get_page(
State(state): State<Arc<AppState>>,
Path((site, slug)): Path<(String, String)>,
) -> Result<String, AppError<'static>> {
let page_query = sqlx::query_as(
"SELECT p.* FROM pages p JOIN sites s ON p.site = s.id WHERE p.slug = $1 AND s.name = $2",
)
.bind(slug)
.bind(site);
let page: Page = page_query.fetch_one(&state.database).await?;
Ok(page.title)
}
pub fn router() -> Router<Arc<AppState>> {
Router::new().route("/:site/:slug", get(get_page))
}