summaryrefslogtreecommitdiffstats
path: root/crates/auth/src/state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/auth/src/state.rs')
-rw-r--r--crates/auth/src/state.rs85
1 files changed, 0 insertions, 85 deletions
diff --git a/crates/auth/src/state.rs b/crates/auth/src/state.rs
deleted file mode 100644
index 5905948..0000000
--- a/crates/auth/src/state.rs
+++ /dev/null
@@ -1,85 +0,0 @@
-use std::{ops::Deref, sync::Arc};
-
-use sellershut_core::profile::profile_client::ProfileClient;
-use sqlx::PgPool;
-use stack_up::Configuration;
-use tokio::task::JoinHandle;
-use tonic::transport::Endpoint;
-use tower_sessions::{CachingSessionStore, ExpiredDeletion, session_store};
-use tower_sessions_moka_store::MokaStore;
-use tower_sessions_sqlx_store::PostgresStore;
-use tracing::error;
-
-use crate::{
- client::{OauthClient, discord::discord_client},
- cnfg::LocalConfig,
- error::AppError,
- server::grpc::interceptor::{Intercepted, MyInterceptor},
-};
-
-#[derive(Clone)]
-pub struct AppHandle(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 struct AppState {
- pub services: Services,
- pub local_config: LocalConfig,
- pub discord_client: OauthClient,
- pub http_client: reqwest::Client,
- pub session_store: CachingSessionStore<MokaStore, PostgresStore>,
- pub profile_client: ProfileClient<Intercepted>,
-}
-
-impl AppState {
- pub async fn create(
- services: Services,
- configuration: &Configuration,
- ) -> Result<(AppHandle, JoinHandle<Result<(), session_store::Error>>), AppError> {
- let local_config: LocalConfig = serde_json::from_value(configuration.misc.clone())?;
-
- let session_store_db =
- tower_sessions_sqlx_store::PostgresStore::new(services.postgres.clone());
- session_store_db.migrate().await?;
- let deletion_task = tokio::task::spawn(
- session_store_db
- .clone()
- .continuously_delete_expired(tokio::time::Duration::from_secs(60)),
- );
- let session_store_mem = MokaStore::new(Some(100));
-
- let store = CachingSessionStore::new(session_store_mem, session_store_db);
-
- let discord_client = discord_client(&local_config.oauth.discord)?;
-
- let channel = Endpoint::new(local_config.profile_endpoint.to_string())?
- .connect()
- .await
- .inspect_err(|e| error!("could not connect to profile service: {e}"))?;
-
- let profile_client = ProfileClient::with_interceptor(channel, MyInterceptor);
-
- Ok((
- AppHandle(Arc::new(Self {
- services,
- local_config,
- discord_client,
- http_client: reqwest::Client::new(),
- session_store: store,
- profile_client,
- })),
- deletion_task,
- ))
- }
-}