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}