mod backfill; mod config; mod handler; pub use backfill::ConversionBackfillJob; pub use config::{ConversionConfig, Format}; pub use handler::ImageConversionHandler; use domain::ports::{ EventHandler, EventPublisher, ImageRefCommand, ImageRefQuery, ObjectStorage, PeriodicJob, }; use std::sync::Arc; type ConversionPair = (Arc, Arc); pub fn build( object_storage: Arc, image_ref_command: Arc, image_ref_query: Arc, event_publisher: Arc, ) -> anyhow::Result> { let config = match ConversionConfig::from_env()? { Some(c) => c, None => return Ok(None), }; let format = config.format; let handler = Arc::new(ImageConversionHandler::new( Arc::clone(&object_storage), image_ref_command, format, )) as Arc; let job = Arc::new(ConversionBackfillJob::new( image_ref_query, Arc::clone(&event_publisher), )) as Arc; Ok(Some((handler, job))) }