making it AP complaint
Some checks failed
CI / Check / Test (push) Has been cancelled

This commit is contained in:
2026-06-30 02:25:42 +02:00
parent 943a0abe54
commit 5ae38c834a
66 changed files with 3635 additions and 2369 deletions

View File

@@ -1,11 +1,13 @@
mod enrichment_staleness;
mod import_cleanup;
mod movie_dedup;
mod refresh_session_cleanup;
mod watch_event_cleanup;
mod wrapup;
pub use enrichment_staleness::EnrichmentStalenessJob;
pub use import_cleanup::ImportSessionCleanupJob;
pub use movie_dedup::MovieDeduplicationJob;
pub use refresh_session_cleanup::RefreshSessionCleanupJob;
pub use watch_event_cleanup::WatchEventCleanupJob;
pub use wrapup::{WrapUpAutoGenerateJob, WrapUpCleanupJob};

View File

@@ -0,0 +1,49 @@
use std::sync::Arc;
use std::time::Duration;
use async_trait::async_trait;
use domain::{
errors::DomainError,
ports::{MovieDeduplicator, MovieRepository, ObjectStorage, PeriodicJob},
};
use crate::movies::merge_duplicates::{MergeDuplicatesDeps, execute};
pub struct MovieDeduplicationJob {
deps: MergeDuplicatesDeps,
}
impl MovieDeduplicationJob {
pub fn new(
movie: Arc<dyn MovieRepository>,
deduplicator: Arc<dyn MovieDeduplicator>,
object_storage: Arc<dyn ObjectStorage>,
) -> Self {
Self {
deps: MergeDuplicatesDeps {
movie,
deduplicator,
object_storage,
},
}
}
}
#[async_trait]
impl PeriodicJob for MovieDeduplicationJob {
fn interval(&self) -> Duration {
Duration::from_secs(86_400) // once per day
}
async fn run(&self) -> Result<(), DomainError> {
let report = execute(&self.deps).await?;
if report.pairs_found > 0 {
tracing::info!(
pairs_found = report.pairs_found,
rows_repointed = report.rows_repointed,
"movie dedup: merged duplicate records"
);
}
Ok(())
}
}