use async_trait::async_trait;
use uuid::Uuid;
use crate::task::TaskError;
#[async_trait]
pub trait ExecStatusManager: Send + Sync {
async fn is_completed(
&self,
data_id: &str,
pipeline_name: &str,
dataset_id: Option<Uuid>,
) -> Result<bool, TaskError>;
async fn mark_completed(
&self,
data_id: &str,
pipeline_name: &str,
dataset_id: Option<Uuid>,
) -> Result<(), TaskError>;
async fn mark_failed(
&self,
data_id: &str,
pipeline_name: &str,
dataset_id: Option<Uuid>,
error: &str,
) -> Result<(), TaskError>;
async fn stamp_provenance(
&self,
data_id: &str,
pipeline_name: &str,
task_name: &str,
user_id: Option<Uuid>,
node_set: Option<&str>,
) -> Result<(), TaskError>;
}
pub struct NoopExecStatusManager;
#[async_trait]
impl ExecStatusManager for NoopExecStatusManager {
async fn is_completed(
&self,
_data_id: &str,
_pipeline_name: &str,
_dataset_id: Option<Uuid>,
) -> Result<bool, TaskError> {
Ok(false)
}
async fn mark_completed(
&self,
_data_id: &str,
_pipeline_name: &str,
_dataset_id: Option<Uuid>,
) -> Result<(), TaskError> {
Ok(())
}
async fn mark_failed(
&self,
_data_id: &str,
_pipeline_name: &str,
_dataset_id: Option<Uuid>,
_error: &str,
) -> Result<(), TaskError> {
Ok(())
}
async fn stamp_provenance(
&self,
_data_id: &str,
_pipeline_name: &str,
_task_name: &str,
_user_id: Option<Uuid>,
_node_set: Option<&str>,
) -> Result<(), TaskError> {
Ok(())
}
}