diff options
author | rtkay123 <dev@kanjala.com> | 2025-08-10 13:45:11 +0200 |
---|---|---|
committer | rtkay123 <dev@kanjala.com> | 2025-08-10 13:45:11 +0200 |
commit | dbff6fa4e5684d8636fd46ecadfe5874a253bd49 (patch) | |
tree | 1039d96c2d02fbc6df1b7b218446c3a8acf1c6b5 /crates/pseudonyms/src/state.rs | |
parent | 8cda165f9d3f108c80a4c9ee10c68a28299cb2d1 (diff) | |
download | warden-dbff6fa4e5684d8636fd46ecadfe5874a253bd49.tar.bz2 warden-dbff6fa4e5684d8636fd46ecadfe5874a253bd49.zip |
feat(pseudonyms): serve api
Diffstat (limited to 'crates/pseudonyms/src/state.rs')
-rw-r--r-- | crates/pseudonyms/src/state.rs | 56 |
1 files changed, 56 insertions, 0 deletions
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<AppState>); + +impl Deref for AppHandle { + type Target = Arc<AppState>; + + 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<SdkTracerProvider>, +} + +impl AppState { + pub fn new( + services: Services, + config: Configuration, + tracer_provider: Option<SdkTracerProvider>, + ) -> anyhow::Result<Self> { + 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, + }) + } +} |