diff options
| author | rtkay123 <dev@kanjala.com> | 2026-02-09 17:54:46 +0200 |
|---|---|---|
| committer | rtkay123 <dev@kanjala.com> | 2026-02-09 17:54:46 +0200 |
| commit | a9630ecdc459068ca51ee2d7be3837d609840842 (patch) | |
| tree | 3bf6d1da4aefbaa351a36a0c63228bcdcf6b4917 /lib/auth-service/src/service | |
| parent | d2339ca8869af12c0fd8cf6fc87986f06b487de9 (diff) | |
| download | sellershut-a9630ecdc459068ca51ee2d7be3837d609840842.tar.bz2 sellershut-a9630ecdc459068ca51ee2d7be3837d609840842.zip | |
feat: connect to database
Diffstat (limited to 'lib/auth-service/src/service')
| -rw-r--r-- | lib/auth-service/src/service/mod.rs | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/lib/auth-service/src/service/mod.rs b/lib/auth-service/src/service/mod.rs index 3d45523..5150221 100644 --- a/lib/auth-service/src/service/mod.rs +++ b/lib/auth-service/src/service/mod.rs @@ -1,17 +1,20 @@ use async_session::{Result, Session, SessionStore}; use async_trait::async_trait; -use shared_svc::cache::RedisManager; -use tracing::instrument; +use shared_svc::cache::{CacheKey, RedisManager, redis::AsyncCommands}; +use sqlx::PgPool; +use tracing::{debug, instrument}; #[derive(Debug, Clone)] pub struct AuthService { cache: RedisManager, + database: PgPool, } impl AuthService { - pub fn new(cache: &RedisManager) -> Self { + pub fn new(cache: &RedisManager, database: &PgPool) -> Self { Self { cache: cache.clone(), + database: database.clone(), } } } @@ -32,20 +35,32 @@ impl SessionStore for AuthService { #[doc = ""] #[doc = " The return value is the value of the cookie to store for the"] #[doc = " user that represents this session"] - #[instrument(skip(self))] + #[instrument(err(Debug), skip(self, session), fields(id = session.id()))] async fn store_session(&self, session: Session) -> Result<Option<String>> { - todo!() + debug!("storing session"); + let mut client = self.cache.get().await?; + let bytes = serde_json::to_vec(&session)?; + client + .set_ex::<_, _, ()>(CacheKey::Session(session.id()), bytes, 3600) + .await?; + Ok(session.into_cookie_value()) } #[doc = " Remove a session from the session store"] - #[instrument(skip(self))] + #[instrument(err(Debug), skip(self, session), fields(id = session.id()))] async fn destroy_session(&self, session: Session) -> Result { - todo!() + debug!("destroying session"); + let mut client = self.cache.get().await?; + client.del::<_, ()>(CacheKey::Session(session.id())).await?; + Ok(()) } #[doc = " Empties the entire store, destroying all sessions"] #[instrument(skip(self))] async fn clear_store(&self) -> Result { - todo!() + debug!("clearing store"); + let mut client = self.cache.get().await?; + client.del::<_, ()>(CacheKey::Session("").key()).await?; + Ok(()) } } |
