refactor: remove watchlist repository references and add get_remote_watchlist use case
This commit is contained in:
@@ -3,7 +3,7 @@ use domain::ports::EventHandler;
|
|||||||
use domain::{
|
use domain::{
|
||||||
errors::DomainError,
|
errors::DomainError,
|
||||||
events::DomainEvent,
|
events::DomainEvent,
|
||||||
ports::{MovieRepository, ReviewRepository, WatchlistRepository},
|
ports::{MovieRepository, ReviewRepository},
|
||||||
value_objects::{ReviewId, UserId},
|
value_objects::{ReviewId, UserId},
|
||||||
};
|
};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@@ -17,7 +17,6 @@ pub struct ActivityPubEventHandler {
|
|||||||
ap_service: Arc<ActivityPubService>,
|
ap_service: Arc<ActivityPubService>,
|
||||||
movie_repository: Arc<dyn MovieRepository>,
|
movie_repository: Arc<dyn MovieRepository>,
|
||||||
review_repository: Arc<dyn ReviewRepository>,
|
review_repository: Arc<dyn ReviewRepository>,
|
||||||
watchlist_repository: Arc<dyn WatchlistRepository>,
|
|
||||||
base_url: String,
|
base_url: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,14 +25,12 @@ impl ActivityPubEventHandler {
|
|||||||
ap_service: Arc<ActivityPubService>,
|
ap_service: Arc<ActivityPubService>,
|
||||||
movie_repository: Arc<dyn MovieRepository>,
|
movie_repository: Arc<dyn MovieRepository>,
|
||||||
review_repository: Arc<dyn ReviewRepository>,
|
review_repository: Arc<dyn ReviewRepository>,
|
||||||
watchlist_repository: Arc<dyn WatchlistRepository>,
|
|
||||||
base_url: String,
|
base_url: String,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
ap_service,
|
ap_service,
|
||||||
movie_repository,
|
movie_repository,
|
||||||
review_repository,
|
review_repository,
|
||||||
watchlist_repository,
|
|
||||||
base_url,
|
base_url,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ pub async fn wire(
|
|||||||
federation_repo: std::sync::Arc<dyn FederationRepository>,
|
federation_repo: std::sync::Arc<dyn FederationRepository>,
|
||||||
review_store: std::sync::Arc<dyn RemoteReviewRepository>,
|
review_store: std::sync::Arc<dyn RemoteReviewRepository>,
|
||||||
remote_watchlist_repo: std::sync::Arc<dyn domain::ports::RemoteWatchlistRepository>,
|
remote_watchlist_repo: std::sync::Arc<dyn domain::ports::RemoteWatchlistRepository>,
|
||||||
watchlist_repo: std::sync::Arc<dyn domain::ports::WatchlistRepository>,
|
|
||||||
user_repo: std::sync::Arc<dyn domain::ports::UserRepository>,
|
user_repo: std::sync::Arc<dyn domain::ports::UserRepository>,
|
||||||
movie_repo: std::sync::Arc<dyn domain::ports::MovieRepository>,
|
movie_repo: std::sync::Arc<dyn domain::ports::MovieRepository>,
|
||||||
review_repo: std::sync::Arc<dyn domain::ports::ReviewRepository>,
|
review_repo: std::sync::Arc<dyn domain::ports::ReviewRepository>,
|
||||||
@@ -70,7 +69,6 @@ pub async fn wire(
|
|||||||
std::sync::Arc::clone(&concrete),
|
std::sync::Arc::clone(&concrete),
|
||||||
movie_repo,
|
movie_repo,
|
||||||
review_repo,
|
review_repo,
|
||||||
watchlist_repo,
|
|
||||||
base_url,
|
base_url,
|
||||||
)) as std::sync::Arc<dyn domain::ports::EventHandler>;
|
)) as std::sync::Arc<dyn domain::ports::EventHandler>;
|
||||||
|
|
||||||
|
|||||||
7
crates/application/src/use_cases/get_remote_watchlist.rs
Normal file
7
crates/application/src/use_cases/get_remote_watchlist.rs
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
use domain::{errors::DomainError, models::RemoteWatchlistEntry};
|
||||||
|
|
||||||
|
use crate::context::AppContext;
|
||||||
|
|
||||||
|
pub async fn execute(ctx: &AppContext, uuid: uuid::Uuid) -> Result<Vec<RemoteWatchlistEntry>, DomainError> {
|
||||||
|
ctx.remote_watchlist_repository.get_by_derived_uuid(uuid).await
|
||||||
|
}
|
||||||
@@ -28,3 +28,5 @@ pub mod add_to_watchlist;
|
|||||||
pub mod remove_from_watchlist;
|
pub mod remove_from_watchlist;
|
||||||
pub mod get_watchlist;
|
pub mod get_watchlist;
|
||||||
pub mod is_on_watchlist;
|
pub mod is_on_watchlist;
|
||||||
|
#[cfg(feature = "federation")]
|
||||||
|
pub mod get_remote_watchlist;
|
||||||
|
|||||||
@@ -10,13 +10,16 @@ use chrono::Utc;
|
|||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
#[cfg(feature = "federation")]
|
#[cfg(feature = "federation")]
|
||||||
use application::ports::{
|
use application::{
|
||||||
|
ports::{
|
||||||
BlockedActorEntry, BlockedActorsPageData, BlockedDomainEntry, BlockedDomainsPageData,
|
BlockedActorEntry, BlockedActorsPageData, BlockedDomainEntry, BlockedDomainsPageData,
|
||||||
FollowersPageData, FollowingPageData,
|
FollowersPageData, FollowingPageData,
|
||||||
|
},
|
||||||
|
use_cases::get_remote_watchlist,
|
||||||
};
|
};
|
||||||
use application::{
|
use application::{
|
||||||
commands::{AddToWatchlistCommand, DeleteReviewCommand, MovieInput, RegisterCommand, RemoveFromWatchlistCommand},
|
commands::{AddToWatchlistCommand, DeleteReviewCommand, MovieInput, RegisterCommand, RemoveFromWatchlistCommand},
|
||||||
queries::{ExportQuery, GetMovieSocialPageQuery, GetWatchlistQuery, LoginQuery},
|
queries::{ExportQuery, GetMovieSocialPageQuery, GetWatchlistQuery, IsOnWatchlistQuery, LoginQuery},
|
||||||
ports::{
|
ports::{
|
||||||
HtmlPageContext, LoginPageData, MovieDetailPageData, NewReviewPageData,
|
HtmlPageContext, LoginPageData, MovieDetailPageData, NewReviewPageData,
|
||||||
ProfileSettingsPageData, RegisterPageData, RemoteActorView, WatchlistDisplayEntry,
|
ProfileSettingsPageData, RegisterPageData, RemoteActorView, WatchlistDisplayEntry,
|
||||||
@@ -24,7 +27,7 @@ use application::{
|
|||||||
},
|
},
|
||||||
use_cases::{
|
use_cases::{
|
||||||
add_to_watchlist, delete_review, export_diary as export_diary_uc, get_movie_social_page,
|
add_to_watchlist, delete_review, export_diary as export_diary_uc, get_movie_social_page,
|
||||||
get_watchlist, log_review, login as login_uc, register as register_uc,
|
get_watchlist, is_on_watchlist, log_review, login as login_uc, register as register_uc,
|
||||||
remove_from_watchlist, update_profile,
|
remove_from_watchlist, update_profile,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -975,8 +978,10 @@ pub async fn get_movie_detail(
|
|||||||
let has_more = result.reviews.offset + result.reviews.limit
|
let has_more = result.reviews.offset + result.reviews.limit
|
||||||
< result.reviews.total_count as u32;
|
< result.reviews.total_count as u32;
|
||||||
let on_watchlist = match &user_id {
|
let on_watchlist = match &user_id {
|
||||||
Some(uid) => state.app_ctx.watchlist_repository
|
Some(uid) => is_on_watchlist::execute(
|
||||||
.contains(uid, &domain::value_objects::MovieId::from_uuid(movie_id))
|
&state.app_ctx,
|
||||||
|
IsOnWatchlistQuery { user_id: uid.value(), movie_id },
|
||||||
|
)
|
||||||
.await
|
.await
|
||||||
.unwrap_or(false),
|
.unwrap_or(false),
|
||||||
None => false,
|
None => false,
|
||||||
@@ -1056,8 +1061,7 @@ pub async fn get_watchlist_page(
|
|||||||
} else {
|
} else {
|
||||||
#[cfg(feature = "federation")]
|
#[cfg(feature = "federation")]
|
||||||
{
|
{
|
||||||
let remote_entries = state.app_ctx.remote_watchlist_repository
|
let remote_entries = get_remote_watchlist::execute(&state.app_ctx, owner_id)
|
||||||
.get_by_derived_uuid(owner_id)
|
|
||||||
.await
|
.await
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let display: Vec<WatchlistDisplayEntry> = remote_entries.into_iter().map(|e| {
|
let display: Vec<WatchlistDisplayEntry> = remote_entries.into_iter().map(|e| {
|
||||||
|
|||||||
@@ -90,7 +90,6 @@ async fn wire_dependencies() -> anyhow::Result<(AppState, axum::Router)> {
|
|||||||
federation_repo,
|
federation_repo,
|
||||||
review_store,
|
review_store,
|
||||||
remote_watchlist_repo.clone(),
|
remote_watchlist_repo.clone(),
|
||||||
Arc::clone(&watchlist_repository),
|
|
||||||
Arc::clone(&user_repository),
|
Arc::clone(&user_repository),
|
||||||
Arc::clone(&movie_repository),
|
Arc::clone(&movie_repository),
|
||||||
Arc::clone(&review_repository),
|
Arc::clone(&review_repository),
|
||||||
|
|||||||
@@ -170,7 +170,6 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
fed_federation_repo,
|
fed_federation_repo,
|
||||||
fed_review_store,
|
fed_review_store,
|
||||||
fed_remote_watchlist_repo,
|
fed_remote_watchlist_repo,
|
||||||
Arc::clone(&ctx.watchlist_repository),
|
|
||||||
fed_user_repo,
|
fed_user_repo,
|
||||||
fed_movie_repo,
|
fed_movie_repo,
|
||||||
fed_review_repo,
|
fed_review_repo,
|
||||||
|
|||||||
Reference in New Issue
Block a user