use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::fmt::Debug;
pub mod execution;
pub trait Task: Send + Sync + Debug + 'static {
fn execute(&self) -> TaskResultData;
}
#[derive(Serialize, Deserialize, Debug)]
pub struct TaskResultData {
pub result_status: TaskStatus,
pub result_data: Option<Value>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub enum TaskStatus {
Initialized,
Error,
Cancelled,
ReadyForDispatch,
Dispatched,
Running,
Passed,
Failed,
Killed,
Incomplete,
Blocked,
}
#[derive(Debug)]
pub struct TaskExecutionData {
pub request_id: String,
pub execution_id: String,
pub task: Box<dyn Task>,
}