domain: add RefreshSession model + repository port

This commit is contained in:
2026-06-11 14:29:43 +02:00
parent db285b513b
commit ef9ecbae06
12 changed files with 101 additions and 14 deletions

View File

@@ -3,7 +3,8 @@ use std::sync::Arc;
use anyhow::Context;
use domain::ports::{
AuthService, LocalApContentQuery, MetadataClient, ObjectStorage, PasswordHasher,
PosterFetcherClient, UserProfileFieldsRepository, WatchEventRepository, WebhookTokenRepository,
PosterFetcherClient, RefreshSessionRepository, UserProfileFieldsRepository,
WatchEventRepository, WebhookTokenRepository,
};
pub enum DbPool {
@@ -36,6 +37,7 @@ pub struct DatabaseOutput {
pub goal: Arc<dyn domain::ports::GoalRepository>,
pub user_settings: Arc<dyn domain::ports::UserSettingsRepository>,
pub remote_goal: Arc<dyn domain::ports::RemoteGoalRepository>,
pub refresh_session: Arc<dyn RefreshSessionRepository>,
pub db_pool: DbPool,
}
@@ -77,6 +79,7 @@ pub async fn build_database_adapters(backend: &str, url: &str) -> anyhow::Result
goal: w.goal,
user_settings: w.user_settings,
remote_goal: w.remote_goal,
refresh_session: Arc::new(domain::testing::PanicRefreshSessionRepository) as _,
db_pool: DbPool::Postgres(w.pool),
})
}
@@ -115,6 +118,7 @@ pub async fn build_database_adapters(backend: &str, url: &str) -> anyhow::Result
goal: w.goal,
user_settings: w.user_settings,
remote_goal: w.remote_goal,
refresh_session: Arc::new(domain::testing::PanicRefreshSessionRepository) as _,
db_pool: DbPool::Sqlite(w.pool),
})
}

View File

@@ -207,6 +207,7 @@ async fn wire_dependencies() -> anyhow::Result<(AppState, axum::Router)> {
goal: db.goal,
user_settings: db.user_settings,
remote_goal: db.remote_goal,
refresh_session: db.refresh_session,
},
services: Services {
auth: auth_service,

View File

@@ -729,6 +729,31 @@ impl domain::ports::RemoteGoalRepository for Panic {
}
}
#[async_trait::async_trait]
impl domain::ports::RefreshSessionRepository for Panic {
async fn create(&self, _: &domain::models::RefreshSession) -> Result<(), DomainError> {
panic!()
}
async fn get_by_token(
&self,
_: &str,
) -> Result<Option<domain::models::RefreshSession>, DomainError> {
panic!()
}
async fn revoke(&self, _: &str) -> Result<(), DomainError> {
panic!()
}
async fn revoke_all_for_user(
&self,
_: &domain::value_objects::UserId,
) -> Result<(), DomainError> {
panic!()
}
async fn delete_expired(&self) -> Result<u64, DomainError> {
panic!()
}
}
#[async_trait::async_trait]
impl application::ports::ReviewLogger for Panic {
async fn log_review(
@@ -769,6 +794,7 @@ pub fn make_test_state(auth_service: Arc<dyn AuthService>) -> crate::state::AppS
goal: Arc::clone(&repo) as _,
user_settings: Arc::clone(&repo) as _,
remote_goal: Arc::clone(&repo) as _,
refresh_session: Arc::clone(&repo) as _,
},
services: Services {
auth: auth_service,

View File

@@ -458,6 +458,7 @@ async fn test_app() -> Router {
goal: Arc::new(domain::testing::NoopGoalRepository),
user_settings: Arc::new(domain::testing::NoopUserSettingsRepository),
remote_goal: Arc::new(domain::testing::NoopRemoteGoalRepository),
refresh_session: Arc::new(domain::testing::PanicRefreshSessionRepository),
},
services: Services {
auth: Arc::new(PanicAuth),