diff --git a/crates/application/src/movies/deps.rs b/crates/application/src/movies/deps.rs index 46b96b0..3c7334f 100644 --- a/crates/application/src/movies/deps.rs +++ b/crates/application/src/movies/deps.rs @@ -5,14 +5,6 @@ use domain::ports::{ PersonCommand, PersonQuery, PosterFetcherClient, SearchCommand, }; -pub struct GetMoviesDeps { - pub movie: Arc, -} - -pub struct GetMovieProfileDeps { - pub movie_profile: Arc, -} - pub struct SyncPosterDeps { pub movie: Arc, pub movie_profile: Arc, diff --git a/crates/application/src/movies/get_movie_profile.rs b/crates/application/src/movies/get_movie_profile.rs index 03335e6..705513b 100644 --- a/crates/application/src/movies/get_movie_profile.rs +++ b/crates/application/src/movies/get_movie_profile.rs @@ -1,12 +1,13 @@ +use std::sync::Arc; + use domain::{ errors::DomainError, models::{CastMember, CrewMember, ExternalPersonId, MovieProfile, PersonId}, + ports::MovieProfileRepository, value_objects::MovieId, }; use uuid::Uuid; -use crate::movies::deps::GetMovieProfileDeps; - pub struct GetMovieProfileQuery { pub movie_id: Uuid, } @@ -60,11 +61,11 @@ fn resolve_crew(member: &CrewMember) -> CrewMemberWithId { } pub async fn execute( - deps: &GetMovieProfileDeps, + movie_profile: Arc, query: GetMovieProfileQuery, ) -> Result, DomainError> { let movie_id = MovieId::from_uuid(query.movie_id); - let profile = deps.movie_profile.get_by_movie_id(&movie_id).await?; + let profile = movie_profile.get_by_movie_id(&movie_id).await?; Ok(profile.map(|p| { let cast = p.cast.iter().map(resolve_cast).collect(); diff --git a/crates/application/src/movies/get_movies.rs b/crates/application/src/movies/get_movies.rs index b5f6963..0ec7fe0 100644 --- a/crates/application/src/movies/get_movies.rs +++ b/crates/application/src/movies/get_movies.rs @@ -1,13 +1,16 @@ +use std::sync::Arc; + use domain::{ errors::DomainError, models::collections::{PageParams, Paginated}, models::{MovieFilter, MovieSummary}, + ports::MovieRepository, }; -use crate::movies::{deps::GetMoviesDeps, queries::GetMoviesQuery}; +use crate::movies::queries::GetMoviesQuery; pub async fn execute( - deps: &GetMoviesDeps, + movie: Arc, query: GetMoviesQuery, ) -> Result, DomainError> { let page = PageParams::new(query.limit, query.offset)?; @@ -16,7 +19,7 @@ pub async fn execute( genre: query.genre, language: query.language, }; - deps.movie.list_movies(&page, &filter).await + movie.list_movies(&page, &filter).await } #[cfg(test)] diff --git a/crates/application/src/movies/tests/get_movie_profile.rs b/crates/application/src/movies/tests/get_movie_profile.rs index 92aba40..23785ed 100644 --- a/crates/application/src/movies/tests/get_movie_profile.rs +++ b/crates/application/src/movies/tests/get_movie_profile.rs @@ -1,5 +1,3 @@ -use std::sync::Arc; - use chrono::Utc; use uuid::Uuid; @@ -10,19 +8,14 @@ use domain::{ value_objects::MovieId, }; -use crate::movies::{ - deps::GetMovieProfileDeps, - get_movie_profile::{self, GetMovieProfileQuery}, -}; +use crate::movies::get_movie_profile::{self, GetMovieProfileQuery}; #[tokio::test] async fn returns_none_when_no_profile() { - let deps = GetMovieProfileDeps { - movie_profile: InMemoryMovieProfileRepository::new(), - }; + let movie_profile = InMemoryMovieProfileRepository::new(); let result = get_movie_profile::execute( - &deps, + movie_profile, GetMovieProfileQuery { movie_id: Uuid::new_v4(), }, @@ -71,12 +64,8 @@ async fn returns_profile_with_cast_and_crew() { }; profile_repo.upsert(&profile).await.unwrap(); - let deps = GetMovieProfileDeps { - movie_profile: Arc::clone(&profile_repo) as _, - }; - let result = get_movie_profile::execute( - &deps, + profile_repo.clone(), GetMovieProfileQuery { movie_id: movie_id.value(), }, diff --git a/crates/application/src/movies/tests/get_movies.rs b/crates/application/src/movies/tests/get_movies.rs index 1e7573d..b61d573 100644 --- a/crates/application/src/movies/tests/get_movies.rs +++ b/crates/application/src/movies/tests/get_movies.rs @@ -1,15 +1,13 @@ use domain::testing::InMemoryMovieRepository; -use crate::movies::{deps::GetMoviesDeps, get_movies, queries::GetMoviesQuery}; +use crate::movies::{get_movies, queries::GetMoviesQuery}; #[tokio::test] async fn returns_empty_when_no_movies() { - let deps = GetMoviesDeps { - movie: InMemoryMovieRepository::new(), - }; + let movie = InMemoryMovieRepository::new(); let result = get_movies::execute( - &deps, + movie, GetMoviesQuery { limit: None, offset: None, diff --git a/crates/presentation/src/handlers/movies.rs b/crates/presentation/src/handlers/movies.rs index 6c37293..6c9b44c 100644 --- a/crates/presentation/src/handlers/movies.rs +++ b/crates/presentation/src/handlers/movies.rs @@ -13,7 +13,7 @@ use application::{ queries::{GetMovieSocialPageQuery, GetReviewHistoryQuery}, }, movies::{ - deps::{GetMovieProfileDeps, GetMoviesDeps, SyncPosterDeps}, + deps::SyncPosterDeps, get_movies, queries::GetMoviesQuery, sync_poster, @@ -52,9 +52,7 @@ pub async fn list_movies( Query(params): Query, ) -> Result, ApiError> { let page = get_movies::execute( - &GetMoviesDeps { - movie: state.app_ctx.repos.movie.clone(), - }, + state.app_ctx.repos.movie.clone(), GetMoviesQuery { limit: params.limit, offset: params.offset, @@ -208,9 +206,7 @@ pub async fn get_movie_profile( use application::movies::get_movie_profile; let query = get_movie_profile::GetMovieProfileQuery { movie_id }; match get_movie_profile::execute( - &GetMovieProfileDeps { - movie_profile: state.app_ctx.repos.movie_profile.clone(), - }, + state.app_ctx.repos.movie_profile.clone(), query, ) .await