aboutsummaryrefslogtreecommitdiffstats
path: root/crates/pseudonyms/src/state.rs
diff options
context:
space:
mode:
authorrtkay123 <dev@kanjala.com>2025-08-10 13:45:11 +0200
committerrtkay123 <dev@kanjala.com>2025-08-10 13:45:11 +0200
commitdbff6fa4e5684d8636fd46ecadfe5874a253bd49 (patch)
tree1039d96c2d02fbc6df1b7b218446c3a8acf1c6b5 /crates/pseudonyms/src/state.rs
parent8cda165f9d3f108c80a4c9ee10c68a28299cb2d1 (diff)
downloadwarden-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.rs56
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,
+ })
+ }
+}