domain: add Processing entities and ports (Job, JobBatch, Plugin, Pipeline)

This commit is contained in:
2026-05-31 03:35:41 +02:00
parent ee79be0351
commit b67e595280
14 changed files with 454 additions and 18 deletions

View File

@@ -0,0 +1,35 @@
use crate::value_objects::{StructuredData, SystemId};
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct PipelineStep {
pub plugin_id: SystemId,
pub step_order: u32,
pub configuration: StructuredData,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct ProcessingPipeline {
pub pipeline_id: SystemId,
pub trigger_event: String,
pub steps: Vec<PipelineStep>,
}
impl ProcessingPipeline {
pub fn new(trigger_event: impl Into<String>) -> Self {
Self {
pipeline_id: SystemId::new(),
trigger_event: trigger_event.into(),
steps: Vec::new(),
}
}
pub fn add_step(&mut self, plugin_id: SystemId, config: StructuredData) {
let next_order = self.steps.iter().map(|s| s.step_order).max().unwrap_or(0)
+ if self.steps.is_empty() { 0 } else { 1 };
self.steps.push(PipelineStep {
plugin_id,
step_order: next_order,
configuration: config,
});
}
}