use actix_web::web; use actix_web::{Responder, get}; use askama_actix::Template; use askama_actix::TemplateToResponse; use crate::commons::AppData; use crate::db; use crate::db::Page; #[derive(Template)] #[template(path = "domain.html")] pub struct DomainTemplate { pub app_name: String, pub base_url: String, pub domain: String, pub pages: Vec, } #[get("/{domaine}")] async fn domain(path: web::Path, data: web::Data) -> impl Responder { let app_name = data.app_name.to_owned(); let base_url = data.base_url.to_owned(); let domain = path.to_string(); let pages = db::get_pages_by_domain(&data.db_pool, domain.to_owned()).await.unwrap(); DomainTemplate { app_name, base_url, domain: domain.to_owned(), pages }.to_response() }