- Migration seeds metadata_extractor, sidecar_sync, no_op plugins - Pipelines: extract_metadata → metadata_extractor, sync_sidecar → sidecar_sync - Worker reacts to AssetIngested → enqueues ExtractMetadata job - Worker reacts to SidecarSyncRequested → enqueues SyncSidecar job - Closes the ingest-to-processing loop end-to-end
30 lines
825 B
Rust
30 lines
825 B
Rust
use application::processing::{EnqueueJobHandler, ExecutePipelineHandler, ProcessNextJobHandler};
|
|
use domain::ports::{EventPublisher, PluginRegistry};
|
|
use std::sync::Arc;
|
|
|
|
use super::Repos;
|
|
|
|
pub fn build_process_next_handler(
|
|
repos: &Repos,
|
|
registry: Arc<dyn PluginRegistry>,
|
|
event_pub: Arc<dyn EventPublisher>,
|
|
) -> ProcessNextJobHandler {
|
|
let execute_pipeline = Arc::new(ExecutePipelineHandler::new(
|
|
repos.job.clone(),
|
|
repos.batch.clone(),
|
|
repos.pipeline.clone(),
|
|
repos.plugin.clone(),
|
|
registry,
|
|
event_pub,
|
|
));
|
|
|
|
ProcessNextJobHandler::new(repos.job.clone(), execute_pipeline)
|
|
}
|
|
|
|
pub fn build_enqueue_handler(
|
|
repos: &Repos,
|
|
event_pub: Arc<dyn EventPublisher>,
|
|
) -> EnqueueJobHandler {
|
|
EnqueueJobHandler::new(repos.job.clone(), event_pub)
|
|
}
|