email wip

This commit is contained in:
Per Stark
2024-12-22 19:55:47 +01:00
parent 3d941d948d
commit 9f23005210
23 changed files with 674 additions and 189 deletions

View File

@@ -11,7 +11,7 @@ use crate::{
storage::types::user::User,
};
page_data!(IndexData, {
page_data!(IndexData, "index.html", {
queue_length: u32,
});
@@ -25,7 +25,9 @@ pub async fn index_handler(
let queue_length = state.rabbitmq_consumer.get_queue_length().await?;
let output = render_template("index.html", IndexData { queue_length }, state.templates)?;
let data = IndexData { queue_length };
let output = render_template(IndexData::template_name(), data, state.templates)?;
Ok(output)
}

View File

@@ -7,6 +7,10 @@ pub mod auth;
pub mod index;
pub mod search_result;
pub trait PageData {
fn template_name() -> &'static str;
}
pub fn render_template<T>(
template_name: &str,
context: T,
@@ -44,12 +48,19 @@ where
#[macro_export]
macro_rules! page_data {
($name:ident, {$($(#[$attr:meta])* $field:ident: $ty:ty),*$(,)?}) => {
($name:ident, $template_name:expr, {$($(#[$attr:meta])* $field:ident: $ty:ty),*$(,)?}) => {
use serde::{Serialize, Deserialize};
use $crate::server::routes::html::PageData;
#[derive(Debug, Deserialize, Serialize)]
pub struct $name {
$($(#[$attr])* pub $field: $ty),*
}
impl PageData for $name {
fn template_name() -> &'static str {
$template_name
}
}
};
}