1mod condition;
2mod context;
3mod envs;
4mod error;
5mod id;
6mod results;
7mod trigger_event;
8mod workflow_state;
9mod workflow_state_event;
10
11pub use condition::*;
12pub use context::*;
13pub use envs::*;
14pub use error::*;
15pub use id::*;
16pub use results::*;
17pub use trigger_event::*;
18pub use workflow_state::*;
19pub use workflow_state_event::*;
20
21use serde::{Deserialize, Serialize};
22
23#[derive(Clone)]
24pub enum GithubAuthorization {
25 PersonalAccessToken(String),
26 GithubApp { app_id: u64, private_key: String },
27}
28
29impl GithubAuthorization {
30 pub fn is_personal_access_token(&self) -> bool {
31 matches!(self, GithubAuthorization::PersonalAccessToken(_))
32 }
33}
34
35#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
36#[serde(rename_all = "snake_case")]
37pub enum WorkflowLogType {
38 Error,
39 Log,
40}
41
42impl std::fmt::Display for WorkflowLogType {
43 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
44 match self {
45 WorkflowLogType::Error => write!(f, "error"),
46 WorkflowLogType::Log => write!(f, "log"),
47 }
48 }
49}
50
51impl From<String> for WorkflowLogType {
52 fn from(s: String) -> Self {
53 match s.as_str() {
54 "error" => WorkflowLogType::Error,
55 "log" => WorkflowLogType::Log,
56 _ => WorkflowLogType::Log,
57 }
58 }
59}
60
61#[derive(Serialize, Deserialize, Debug, Clone)]
62pub struct WorkflowLog {
63 pub step_id: StepId,
64 pub log_type: WorkflowLogType,
65 pub message: String,
66 pub time: chrono::DateTime<chrono::Utc>,
67}
68
69impl Default for WorkflowLog {
70 fn default() -> Self {
71 WorkflowLog {
72 step_id: StepId::default(),
73 log_type: WorkflowLogType::Log,
74 message: "".to_string(),
75 time: chrono::Utc::now(),
76 }
77 }
78}
79
80impl WorkflowLog {
81 pub fn is_error(&self) -> bool {
82 self.log_type == WorkflowLogType::Error
83 }
84}
85
86#[cfg(test)]
87mod tests {
88 use super::*;
89
90 #[test]
91 fn test_workflow_log_type() {
92 assert_eq!(
93 WorkflowLogType::Error,
94 WorkflowLogType::from("error".to_string())
95 );
96 assert_eq!(
97 WorkflowLogType::Log,
98 WorkflowLogType::from("log".to_string())
99 );
100 assert_eq!(
101 WorkflowLogType::Log,
102 WorkflowLogType::from("unknown".to_string())
103 );
104 }
105
106 #[test]
107 fn test_workflow_log_type_to_string() {
108 assert_eq!("error", WorkflowLogType::Error.to_string());
109 assert_eq!("log", WorkflowLogType::Log.to_string());
110 }
111
112 #[test]
113 fn test_workflow_log_is_error() {
114 let log = WorkflowLog {
115 log_type: WorkflowLogType::Error,
116 ..Default::default()
117 };
118 assert!(log.is_error());
119
120 let log = WorkflowLog {
121 log_type: WorkflowLogType::Log,
122 ..Default::default()
123 };
124 assert!(!log.is_error());
125 }
126}