From dbff6fa4e5684d8636fd46ecadfe5874a253bd49 Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Sun, 10 Aug 2025 13:45:11 +0200 Subject: feat(pseudonyms): serve api --- crates/pseudonyms/src/state.rs | 56 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 crates/pseudonyms/src/state.rs (limited to 'crates/pseudonyms/src/state.rs') diff --git a/crates/pseudonyms/src/state.rs b/crates/pseudonyms/src/state.rs new file mode 100644 index 0000000..349c324 --- /dev/null +++ b/crates/pseudonyms/src/state.rs @@ -0,0 +1,56 @@ +mod mutate; + +use std::{ + net::{Ipv6Addr, SocketAddr}, ops::Deref, sync::Arc +}; + +use sqlx::PgPool; +use warden_stack::{cache::RedisManager, tracing::SdkTracerProvider, Configuration}; + +use crate::AppConfig; + +#[derive(Clone)] +pub struct AppHandle(pub Arc); + +impl Deref for AppHandle { + type Target = Arc; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +#[derive(Clone)] +pub struct Services { + pub postgres: PgPool, + pub cache: RedisManager, +} + +#[derive(Clone)] +pub struct AppState { + pub addr: SocketAddr, + pub services: Services, + pub config: Configuration, + pub app_config: AppConfig, + pub tracer_provider: Option, +} + +impl AppState { + pub fn new( + services: Services, + config: Configuration, + tracer_provider: Option, + ) -> anyhow::Result { + let listen_address = SocketAddr::from((Ipv6Addr::UNSPECIFIED, config.application.port)); + + let app_config: AppConfig = serde_json::from_value(config.misc.clone())?; + + Ok(Self { + addr: listen_address, + services, + config, + tracer_provider, + app_config, + }) + } +} -- cgit v1.2.3