1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::task::Task;
use crate::TaskContext;
use std::sync::Arc;
use wakflo_common::TaskResult;

// #[async_trait::async_trait]
// pub trait RunOutput: Sync + Send + Debug + 'static {
//     fn json_output(&self) -> serde_json::Value;
// }

#[async_trait::async_trait]
pub trait RunnableTask: Sync + Send {
    async fn run(&self, context: Arc<TaskContext>) -> TaskResult;

    fn register(&mut self, task: Task);

    fn get_task_info(&self) -> &Task;
}