refactor: split bootstrap factory into per-context service builders

This commit is contained in:
2026-05-31 18:28:57 +02:00
parent c16c9d4581
commit 5a4eb1e4f8
11 changed files with 345 additions and 248 deletions

View File

@@ -0,0 +1,48 @@
use std::sync::Arc;
use adapters_postgres::{
PgPool, PostgresJobBatchRepository, PostgresJobRepository, PostgresPipelineRepository,
PostgresPluginRepository,
};
use application::processing::{
CompleteJobHandler, ConfigurePipelineHandler, EnqueueJobHandler, FailJobHandler,
ManagePluginHandler, ReportBatchProgressHandler, StartJobHandler,
};
use domain::ports::EventPublisher;
use presentation::state::ProcessingHandlers;
pub fn build(pool: &PgPool, event_publisher: Arc<dyn EventPublisher>) -> ProcessingHandlers {
let job_repo = Arc::new(PostgresJobRepository::new(pool.clone()));
let batch_repo = Arc::new(PostgresJobBatchRepository::new(pool.clone()));
let plugin_repo = Arc::new(PostgresPluginRepository::new(pool.clone()));
let pipeline_repo = Arc::new(PostgresPipelineRepository::new(pool.clone()));
let enqueue_job = Arc::new(EnqueueJobHandler::new(
job_repo.clone(),
event_publisher.clone(),
));
let start_job = Arc::new(StartJobHandler::new(job_repo.clone()));
let complete_job = Arc::new(CompleteJobHandler::new(
job_repo.clone(),
batch_repo.clone(),
event_publisher.clone(),
));
let fail_job = Arc::new(FailJobHandler::new(
job_repo.clone(),
batch_repo.clone(),
event_publisher,
));
let batch_progress = Arc::new(ReportBatchProgressHandler::new(batch_repo, job_repo));
let manage_plugin = Arc::new(ManagePluginHandler::new(plugin_repo.clone()));
let configure_pipeline = Arc::new(ConfigurePipelineHandler::new(pipeline_repo, plugin_repo));
ProcessingHandlers {
enqueue_job,
start_job,
complete_job,
fail_job,
batch_progress,
manage_plugin,
configure_pipeline,
}
}