refactor: LOW+MEDIUM cleanups — CQRS DiaryQuery/GoalCommand+GoalQuery,
test-helpers out of production, decompose get_user_profile_html, dedup secure_flag, remove vestigial social_query, drop PersistedImportSession, LoginCommand rename, DeleteAccountDeps, PersonId macro, ReviewSortBy rename, TUI Command for fs::read, generic PaginatedResponse<T>, noop ports for production fallbacks
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use domain::ports::{
|
||||
DiaryRepository, EventPublisher, MovieCommand, MovieProfileRepository, MovieQuery,
|
||||
DiaryQuery, EventPublisher, MovieCommand, MovieProfileRepository, MovieQuery,
|
||||
ReviewRepository, SocialQueryPort,
|
||||
};
|
||||
|
||||
@@ -9,7 +9,7 @@ use crate::config::AppConfig;
|
||||
|
||||
pub struct DeleteReviewDeps {
|
||||
pub review: Arc<dyn ReviewRepository>,
|
||||
pub diary: Arc<dyn DiaryRepository>,
|
||||
pub diary: Arc<dyn DiaryQuery>,
|
||||
pub movie_command: Arc<dyn MovieCommand>,
|
||||
pub event_publisher: Arc<dyn EventPublisher>,
|
||||
}
|
||||
@@ -21,12 +21,12 @@ pub struct EditReviewDeps {
|
||||
|
||||
pub struct GetMovieSocialPageDeps {
|
||||
pub movie_query: Arc<dyn MovieQuery>,
|
||||
pub diary: Arc<dyn DiaryRepository>,
|
||||
pub diary: Arc<dyn DiaryQuery>,
|
||||
pub movie_profile: Arc<dyn MovieProfileRepository>,
|
||||
}
|
||||
|
||||
pub struct GetActivityFeedDeps {
|
||||
pub diary: Arc<dyn DiaryRepository>,
|
||||
pub diary: Arc<dyn DiaryQuery>,
|
||||
pub social_query: Arc<dyn SocialQueryPort>,
|
||||
pub config: AppConfig,
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ use std::sync::Arc;
|
||||
use bytes::Bytes;
|
||||
use domain::{
|
||||
errors::DomainError,
|
||||
ports::{DiaryExporter, DiaryRepository},
|
||||
ports::{DiaryExporter, DiaryQuery},
|
||||
value_objects::UserId,
|
||||
};
|
||||
use futures::stream::BoxStream;
|
||||
@@ -11,7 +11,7 @@ use futures::stream::BoxStream;
|
||||
use crate::diary::queries::ExportQuery;
|
||||
|
||||
pub fn execute(
|
||||
diary: &Arc<dyn DiaryRepository>,
|
||||
diary: &Arc<dyn DiaryQuery>,
|
||||
diary_exporter: &Arc<dyn DiaryExporter>,
|
||||
query: ExportQuery,
|
||||
) -> BoxStream<'static, Result<Bytes, DomainError>> {
|
||||
|
||||
@@ -6,14 +6,14 @@ use domain::{
|
||||
DiaryEntry, DiaryFilter, ReviewSortBy,
|
||||
collections::{PageParams, Paginated},
|
||||
},
|
||||
ports::DiaryRepository,
|
||||
ports::DiaryQuery,
|
||||
value_objects::{MovieId, UserId},
|
||||
};
|
||||
|
||||
use crate::diary::queries::GetDiaryQuery;
|
||||
|
||||
pub async fn execute(
|
||||
diary: &Arc<dyn DiaryRepository>,
|
||||
diary: &Arc<dyn DiaryQuery>,
|
||||
query: GetDiaryQuery,
|
||||
) -> Result<Paginated<DiaryEntry>, DomainError> {
|
||||
let page = PageParams::new(query.limit, query.offset)?;
|
||||
|
||||
@@ -3,7 +3,7 @@ use std::sync::Arc;
|
||||
use domain::{
|
||||
errors::DomainError,
|
||||
models::ReviewHistory,
|
||||
ports::DiaryRepository,
|
||||
ports::DiaryQuery,
|
||||
services::review_history::{ReviewHistoryAnalyzer, Trend},
|
||||
value_objects::MovieId,
|
||||
};
|
||||
@@ -11,7 +11,7 @@ use domain::{
|
||||
use crate::diary::queries::GetReviewHistoryQuery;
|
||||
|
||||
pub async fn execute(
|
||||
diary: &Arc<dyn DiaryRepository>,
|
||||
diary: &Arc<dyn DiaryQuery>,
|
||||
query: GetReviewHistoryQuery,
|
||||
) -> Result<(ReviewHistory, Trend), DomainError> {
|
||||
let movie_id = MovieId::from_uuid(query.movie_id);
|
||||
|
||||
@@ -6,7 +6,7 @@ use domain::{
|
||||
models::{Movie, Review},
|
||||
ports::{MovieCommand, MovieQuery, ReviewRepository},
|
||||
testing::{
|
||||
FakeDiaryRepository, InMemoryMovieRepository, InMemoryReviewRepository, NoopEventPublisher,
|
||||
FakeDiaryQuery, InMemoryMovieRepository, InMemoryReviewRepository, NoopEventPublisher,
|
||||
},
|
||||
value_objects::{MovieId, MovieTitle, Rating, ReleaseYear, UserId},
|
||||
};
|
||||
@@ -41,7 +41,7 @@ fn make_review(movie_id: MovieId, user_id: UserId) -> Review {
|
||||
async fn test_delete_review_removes_it() {
|
||||
let movies = InMemoryMovieRepository::new();
|
||||
let reviews = InMemoryReviewRepository::new();
|
||||
let diary = FakeDiaryRepository::new();
|
||||
let diary = FakeDiaryQuery::new();
|
||||
let events = NoopEventPublisher::new();
|
||||
|
||||
let movie = make_movie();
|
||||
@@ -79,7 +79,7 @@ async fn test_delete_review_removes_it() {
|
||||
#[tokio::test]
|
||||
async fn test_delete_review_wrong_user_is_unauthorized() {
|
||||
let reviews = InMemoryReviewRepository::new();
|
||||
let diary = FakeDiaryRepository::new();
|
||||
let diary = FakeDiaryQuery::new();
|
||||
let movies = InMemoryMovieRepository::new();
|
||||
let events = NoopEventPublisher::new();
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
||||
|
||||
use async_trait::async_trait;
|
||||
use domain::errors::DomainError;
|
||||
use domain::testing::{FakeDiaryRepository, NoopSocialQueryPort};
|
||||
use domain::testing::{FakeDiaryQuery, NoopSocialQueryPort};
|
||||
|
||||
use crate::{
|
||||
config::AppConfig, diary::deps::GetActivityFeedDeps, diary::get_activity_feed,
|
||||
@@ -11,7 +11,7 @@ use crate::{
|
||||
|
||||
fn default_deps() -> GetActivityFeedDeps {
|
||||
GetActivityFeedDeps {
|
||||
diary: FakeDiaryRepository::new() as _,
|
||||
diary: FakeDiaryQuery::new() as _,
|
||||
social_query: Arc::new(NoopSocialQueryPort),
|
||||
config: TestContextBuilder::new().config,
|
||||
}
|
||||
@@ -112,7 +112,7 @@ async fn following_filter_parses_local_and_remote_urls() {
|
||||
let social = Arc::new(FakeSocialWithFollowing(following_urls));
|
||||
|
||||
let deps = GetActivityFeedDeps {
|
||||
diary: FakeDiaryRepository::new() as _,
|
||||
diary: FakeDiaryQuery::new() as _,
|
||||
social_query: social as _,
|
||||
config: AppConfig {
|
||||
allow_registration: true,
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
use domain::testing::FakeDiaryRepository;
|
||||
use domain::testing::FakeDiaryQuery;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::{diary::get_diary, diary::queries::GetDiaryQuery};
|
||||
|
||||
#[tokio::test]
|
||||
async fn returns_empty_page() {
|
||||
let diary = FakeDiaryRepository::new() as Arc<dyn domain::ports::DiaryRepository>;
|
||||
let diary = FakeDiaryQuery::new() as Arc<dyn domain::ports::DiaryQuery>;
|
||||
|
||||
let result = get_diary::execute(
|
||||
&diary,
|
||||
|
||||
@@ -5,7 +5,7 @@ use uuid::Uuid;
|
||||
use domain::{
|
||||
models::Movie,
|
||||
ports::MovieCommand,
|
||||
testing::{FakeDiaryRepository, InMemoryMovieProfileRepository, InMemoryMovieRepository},
|
||||
testing::{FakeDiaryQuery, InMemoryMovieProfileRepository, InMemoryMovieRepository},
|
||||
value_objects::{MovieTitle, ReleaseYear},
|
||||
};
|
||||
|
||||
@@ -18,7 +18,7 @@ use crate::{
|
||||
async fn fails_when_movie_not_found() {
|
||||
let deps = GetMovieSocialPageDeps {
|
||||
movie_query: InMemoryMovieRepository::new(),
|
||||
diary: FakeDiaryRepository::new() as _,
|
||||
diary: FakeDiaryQuery::new() as _,
|
||||
movie_profile: InMemoryMovieProfileRepository::new(),
|
||||
};
|
||||
|
||||
@@ -51,7 +51,7 @@ async fn returns_movie_social_page() {
|
||||
|
||||
let deps = GetMovieSocialPageDeps {
|
||||
movie_query: Arc::clone(&movies) as _,
|
||||
diary: FakeDiaryRepository::new() as _,
|
||||
diary: FakeDiaryQuery::new() as _,
|
||||
movie_profile: InMemoryMovieProfileRepository::new(),
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
||||
|
||||
use domain::{
|
||||
models::Movie,
|
||||
ports::DiaryRepository,
|
||||
ports::DiaryQuery,
|
||||
services::review_history::Trend,
|
||||
value_objects::{MovieTitle, ReleaseYear},
|
||||
};
|
||||
@@ -20,9 +20,9 @@ async fn returns_empty_history() {
|
||||
);
|
||||
let movie_id = movie.id().value();
|
||||
|
||||
let diary = domain::testing::FakeDiaryRepository::new();
|
||||
let diary = domain::testing::FakeDiaryQuery::new();
|
||||
diary.seed_history(movie, vec![]);
|
||||
let diary: Arc<dyn DiaryRepository> = diary;
|
||||
let diary: Arc<dyn DiaryQuery> = diary;
|
||||
|
||||
let (history, trend) = get_review_history::execute(&diary, GetReviewHistoryQuery { movie_id })
|
||||
.await
|
||||
|
||||
Reference in New Issue
Block a user