use crate::posts::abstractions::repo::PostRepo; use crate::tutors::abstractions::tutor_repo::TutorRepo; use crate::views::about::AboutView; use crate::views::brochure::BrochureTemplate; use crate::views::index::IndexTemplate; use crate::views::k12::K12Template; use crate::views::policies::PoliciesTemplate; use crate::views::post::PostView; use crate::views::posts::PostsView; use askama::Template; use axum::extract::{Path, State}; use axum::response::Html; use std::sync::Arc; pub async fn about_handler(State(repo): State>) -> Html { let view = AboutView::with_tutors(repo.load()); Html(view.render().unwrap()) } pub async fn brochure_handler() -> Html { Html(BrochureTemplate {}.render().unwrap()) } pub async fn index_handler() -> Html { Html(IndexTemplate {}.render().unwrap()) } pub async fn policies_handler() -> Html { Html(PoliciesTemplate {}.render().unwrap()) } pub async fn posts_handler(State(repo): State>) -> Html { let view = PostsView::with_posts(repo.load()); Html(view.render().unwrap()) } pub async fn post_handler( Path(post_id): Path, State(repo): State>, ) -> Html { let view = PostView::with_post(repo.by_id(&post_id)); Html(view.render().unwrap()) } pub async fn k12_handler() -> Html { Html(K12Template {}.render().unwrap()) }