refactor: remaining MEDIUM — CQRS splits, DI Deps, profile dedup, event Value, response enum

M1: MovieRepository→MovieCommand/MovieQuery, WatchEventRepository→
WatchEventCommand/WatchEventQuery
M2: goals/ and import/ use Deps structs
M7: extract upload_image helper in update_profile
M8: FederationDeliveryRequested activity_json String→serde_json::Value
M11: UserProfileResponse uses ProfileViewData enum
This commit is contained in:
2026-07-10 03:50:43 +02:00
parent 12da356a40
commit dee013c7eb
99 changed files with 1262 additions and 896 deletions

View File

@@ -17,7 +17,7 @@ use domain::{
collections::{PageParams, Paginated},
},
ports::{
AuthService, DiaryRepository, EventPublisher, MetadataClient, MovieRepository,
AuthService, DiaryRepository, EventPublisher, MetadataClient, MovieCommand, MovieQuery,
ObjectStorage, PasswordHasher, PersonCommand, PersonQuery, PosterFetcherClient,
ReviewRepository, SearchCommand, SearchPort, StatsRepository, UserRepository,
WatchlistRepository,
@@ -35,7 +35,16 @@ use tower::ServiceExt;
pub struct Panic;
#[async_trait::async_trait]
impl MovieRepository for Panic {
impl MovieCommand for Panic {
async fn upsert_movie(&self, _: &Movie) -> Result<(), DomainError> {
panic!()
}
async fn delete_movie(&self, _: &MovieId) -> Result<(), DomainError> {
panic!()
}
}
#[async_trait::async_trait]
impl MovieQuery for Panic {
async fn get_movie_by_external_id(
&self,
_: &ExternalMetadataId,
@@ -52,12 +61,6 @@ impl MovieRepository for Panic {
) -> Result<Vec<Movie>, DomainError> {
panic!()
}
async fn upsert_movie(&self, _: &Movie) -> Result<(), DomainError> {
panic!()
}
async fn delete_movie(&self, _: &MovieId) -> Result<(), DomainError> {
panic!()
}
async fn existing_external_ids(
&self,
_: &[ExternalMetadataId],
@@ -530,7 +533,7 @@ impl domain::ports::RemoteWatchlistRepository for Panic {
}
#[async_trait::async_trait]
impl domain::ports::WatchEventRepository for Panic {
impl domain::ports::WatchEventCommand for Panic {
async fn save(&self, _: &domain::models::WatchEvent) -> Result<(), DomainError> {
panic!()
}
@@ -541,6 +544,22 @@ impl domain::ports::WatchEventRepository for Panic {
) -> Result<(), DomainError> {
panic!()
}
async fn update_status_batch(
&self,
_: &[domain::value_objects::WatchEventId],
_: domain::models::WatchEventStatus,
) -> Result<u64, DomainError> {
panic!()
}
async fn delete_non_pending_older_than(
&self,
_: chrono::NaiveDateTime,
) -> Result<u64, DomainError> {
panic!()
}
}
#[async_trait::async_trait]
impl domain::ports::WatchEventQuery for Panic {
async fn list_pending(
&self,
_: &domain::value_objects::UserId,
@@ -559,13 +578,6 @@ impl domain::ports::WatchEventRepository for Panic {
) -> Result<Vec<domain::models::WatchEvent>, DomainError> {
panic!()
}
async fn update_status_batch(
&self,
_: &[domain::value_objects::WatchEventId],
_: domain::models::WatchEventStatus,
) -> Result<u64, DomainError> {
panic!()
}
async fn find_duplicate(
&self,
_: &domain::value_objects::UserId,
@@ -574,12 +586,6 @@ impl domain::ports::WatchEventRepository for Panic {
) -> Result<bool, DomainError> {
panic!()
}
async fn delete_non_pending_older_than(
&self,
_: chrono::NaiveDateTime,
) -> Result<u64, DomainError> {
panic!()
}
}
#[async_trait::async_trait]
impl domain::ports::WebhookTokenRepository for Panic {
@@ -782,7 +788,8 @@ pub fn make_test_state(auth_service: Arc<dyn AuthService>) -> crate::state::AppS
crate::state::AppState {
app_ctx: AppContext {
repos: Repositories {
movie: Arc::clone(&repo) as _,
movie_command: Arc::clone(&repo) as _,
movie_query: Arc::clone(&repo) as _,
review: Arc::clone(&repo) as _,
diary: Arc::clone(&repo) as _,
stats: Arc::clone(&repo) as _,
@@ -791,7 +798,8 @@ pub fn make_test_state(auth_service: Arc<dyn AuthService>) -> crate::state::AppS
import_profile: Arc::clone(&repo) as _,
movie_profile: Arc::clone(&repo) as _,
watchlist: Arc::clone(&repo) as _,
watch_event: Arc::clone(&repo) as _,
watch_event_command: Arc::clone(&repo) as _,
watch_event_query: Arc::clone(&repo) as _,
webhook_token: Arc::clone(&repo) as _,
profile_fields: Arc::clone(&repo) as _,
person_command: Arc::clone(&repo) as _,