mod task_repository;
use std::sync::Arc;
use crate::{
api::error::Result,
pipeline::{Pipeline, PipelineVersion},
stream_engine::autonomous_executor::{
pipeline_derivatives::task_repository::TaskRepository,
task::Task,
task_graph::{TaskGraph, TaskId},
},
};
#[derive(Debug)]
pub struct PipelineDerivatives {
pipeline: Pipeline,
task_graph: TaskGraph,
task_repo: TaskRepository,
}
impl PipelineDerivatives {
pub fn new(pipeline: Pipeline) -> Self {
let task_graph = TaskGraph::from(&pipeline);
let task_repo = TaskRepository::from(pipeline.as_graph());
Self {
pipeline,
task_graph,
task_repo,
}
}
pub fn pipeline(&self) -> &Pipeline {
&self.pipeline
}
pub fn pipeline_version(&self) -> PipelineVersion {
self.pipeline.version()
}
pub fn task_graph(&self) -> &TaskGraph {
&self.task_graph
}
pub fn task_repo(&self) -> &TaskRepository {
&self.task_repo
}
pub fn get_task(&self, task_id: &TaskId) -> Result<Arc<Task>> {
self.task_repo.get(task_id)
}
}