chord_core/
task.rs

1use std::fmt::Display;
2
3use chrono::{DateTime, Utc};
4
5pub type Error = Box<dyn std::error::Error + Sync + Send>;
6
7pub trait TaskId: Sync + Send + Display {
8    fn task(&self) -> &str;
9
10    fn exec_id(&self) -> &str;
11}
12
13pub enum TaskState {
14    Ok,
15    Fail(String),
16    Err(Error),
17}
18
19impl TaskState {
20    #[allow(dead_code)]
21    pub fn is_ok(&self) -> bool {
22        match self {
23            TaskState::Ok => true,
24            _ => false,
25        }
26    }
27}
28
29pub trait TaskAsset: Sync + Send {
30    fn id(&self) -> &dyn TaskId;
31
32    fn start(&self) -> DateTime<Utc>;
33
34    fn end(&self) -> DateTime<Utc>;
35
36    fn state(&self) -> &TaskState;
37}
38
39pub enum StageState {
40    Ok,
41    Fail(String),
42    Err(Error),
43}
44
45impl StageState {
46    #[allow(dead_code)]
47    pub fn is_ok(&self) -> bool {
48        match self {
49            StageState::Ok => true,
50            _ => false,
51        }
52    }
53}
54
55pub trait StageAsset: Sync + Send {
56    fn id(&self) -> &str;
57
58    fn start(&self) -> DateTime<Utc>;
59
60    fn end(&self) -> DateTime<Utc>;
61
62    fn state(&self) -> &StageState;
63}