dagcuter/
lib.rs

1pub mod task;
2pub mod retry;
3pub mod cycle_check;
4pub mod executor;
5
6pub use task::Task;
7pub use retry::{RetryPolicy, RetryExecutor};
8pub use executor::Dagcuter;
9pub use cycle_check::has_cycle;
10
11use std::collections::HashMap;
12use thiserror::Error;
13use std::sync::Arc;
14
15pub type TaskResult = HashMap<String, serde_json::Value>;
16pub type TaskInput = HashMap<String, serde_json::Value>;
17pub type BoxTask = Arc<dyn Task>;
18
19#[derive(Error, Debug)]
20pub enum DagcuterError {
21    #[error("Circular dependency detected")]
22    CircularDependency,
23    #[error("Task execution failed: {0}")]
24    TaskExecution(String),
25    #[error("Context cancelled: {0}")]
26    ContextCancelled(String),
27    #[error("Retry failed: {0}")]
28    RetryFailed(String),
29}
30