use common::storage::db::SurrealDbClient; use common::utils::template_engine::{ProvidesTemplateEngine, TemplateEngine}; use common::{create_template_engine, storage::db::ProvidesDb, utils::config::AppConfig}; use std::sync::Arc; use tracing::debug; use crate::{OpenAIClientType, SessionStoreType}; #[derive(Clone)] pub struct HtmlState { pub db: Arc, pub openai_client: Arc, pub templates: Arc, pub session_store: Arc, pub config: AppConfig, } impl HtmlState { pub fn new_with_resources( db: Arc, openai_client: Arc, session_store: Arc, config: AppConfig, ) -> Result> { let template_engine = create_template_engine!("templates"); debug!("Template engine created for html_router."); Ok(Self { db, openai_client, session_store, templates: Arc::new(template_engine), config, }) } } impl ProvidesDb for HtmlState { fn db(&self) -> &Arc { &self.db } } impl ProvidesTemplateEngine for HtmlState { fn template_engine(&self) -> &Arc { &self.templates } }