refactor: fix HIGH+MEDIUM architectural violations from code review
HIGH: fix watch_medium data-loss bug, standardize error handling on ApiError, fix dep direction (rss/template-askama no longer dep on application), extract ImageFetcher port (remove reqwest from app layer), move event construction from save_review to use case, extract infra-wiring crate (DbPool/EventBusBackend dedup), deduplicate presentation helpers (encode_error, export streaming, multipart parsing) MEDIUM: split LocalApContentQuery god-trait 10→3 methods, dedup movie resolution orchestration, add RemoteActorDto/PersonDto mappers, move AppConfig to infra-wiring, fix SocialQueryPort Uuid→UserId, replace stringly-typed api-types with domain enums, move count_reviews_in_year to StatsRepository, dedup event publisher cfg blocks, extract should_enrich, move group_by_month to application, dedup count_local_posts, add FederationFlags Default, TUI input helper + ShowError rename + typed auth errors, api-types cleanup (UserSettingsDto/UserProfileBase/PreviewRowData) 102 files changed, -681 lines net
This commit is contained in:
@@ -1,13 +1,10 @@
|
||||
use chrono::Utc;
|
||||
use domain::{
|
||||
errors::DomainError,
|
||||
events::DomainEvent,
|
||||
models::{Person, PersonId},
|
||||
};
|
||||
|
||||
use super::deps::GetPersonDeps;
|
||||
|
||||
const ENRICHMENT_TTL_DAYS: i64 = 90;
|
||||
use super::{deps::GetPersonDeps, should_enrich};
|
||||
|
||||
pub async fn execute(deps: &GetPersonDeps, id: PersonId) -> Result<Option<Person>, DomainError> {
|
||||
let person = deps.person_query.get_by_id(&id).await?;
|
||||
@@ -25,13 +22,6 @@ pub async fn execute(deps: &GetPersonDeps, id: PersonId) -> Result<Option<Person
|
||||
Ok(person)
|
||||
}
|
||||
|
||||
fn should_enrich(p: &Person) -> bool {
|
||||
match p.enriched_at() {
|
||||
None => true,
|
||||
Some(at) => (Utc::now() - at).num_days() >= ENRICHMENT_TTL_DAYS,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "tests/get.rs"]
|
||||
mod tests;
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
use chrono::Utc;
|
||||
use domain::{
|
||||
errors::DomainError,
|
||||
events::DomainEvent,
|
||||
models::{Person, PersonCredits, PersonId},
|
||||
models::{PersonCredits, PersonId},
|
||||
};
|
||||
|
||||
use super::deps::GetPersonDeps;
|
||||
|
||||
const ENRICHMENT_TTL_DAYS: i64 = 90;
|
||||
use super::{deps::GetPersonDeps, should_enrich};
|
||||
|
||||
pub async fn execute(deps: &GetPersonDeps, id: PersonId) -> Result<PersonCredits, DomainError> {
|
||||
let credits = deps.person_query.get_credits(&id).await?;
|
||||
@@ -23,13 +20,6 @@ pub async fn execute(deps: &GetPersonDeps, id: PersonId) -> Result<PersonCredits
|
||||
Ok(credits)
|
||||
}
|
||||
|
||||
fn should_enrich(p: &Person) -> bool {
|
||||
match p.enriched_at() {
|
||||
None => true,
|
||||
Some(at) => (Utc::now() - at).num_days() >= ENRICHMENT_TTL_DAYS,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "tests/get_credits.rs"]
|
||||
mod tests;
|
||||
|
||||
@@ -5,3 +5,15 @@ pub mod get;
|
||||
pub mod get_credits;
|
||||
|
||||
pub use event_handler::PersonEnrichmentHandler;
|
||||
|
||||
use chrono::Utc;
|
||||
use domain::models::Person;
|
||||
|
||||
pub(crate) const ENRICHMENT_TTL_DAYS: i64 = 90;
|
||||
|
||||
pub(crate) fn should_enrich(p: &Person) -> bool {
|
||||
match p.enriched_at() {
|
||||
None => true,
|
||||
Some(at) => (Utc::now() - at).num_days() >= ENRICHMENT_TTL_DAYS,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user