This commit is contained in:
@@ -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};
|
||||
|
||||
49
crates/application/src/jobs/movie_dedup.rs
Normal file
49
crates/application/src/jobs/movie_dedup.rs
Normal 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(())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user