1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct Job {
17 #[serde(rename = "id")]
19 pub id: i32,
20 #[serde(rename = "run_id")]
22 pub run_id: i32,
23 #[serde(rename = "run_url")]
24 pub run_url: String,
25 #[serde(rename = "run_attempt", skip_serializing_if = "Option::is_none")]
27 pub run_attempt: Option<i32>,
28 #[serde(rename = "node_id")]
29 pub node_id: String,
30 #[serde(rename = "head_sha")]
32 pub head_sha: String,
33 #[serde(rename = "url")]
34 pub url: String,
35 #[serde(rename = "html_url", deserialize_with = "Option::deserialize")]
36 pub html_url: Option<String>,
37 #[serde(rename = "status")]
39 pub status: Status,
40 #[serde(rename = "conclusion", deserialize_with = "Option::deserialize")]
42 pub conclusion: Option<Conclusion>,
43 #[serde(rename = "created_at")]
45 pub created_at: String,
46 #[serde(rename = "started_at")]
48 pub started_at: String,
49 #[serde(rename = "completed_at", deserialize_with = "Option::deserialize")]
51 pub completed_at: Option<String>,
52 #[serde(rename = "name")]
54 pub name: String,
55 #[serde(rename = "steps", skip_serializing_if = "Option::is_none")]
57 pub steps: Option<Vec<models::JobStepsInner>>,
58 #[serde(rename = "check_run_url")]
59 pub check_run_url: String,
60 #[serde(rename = "labels")]
62 pub labels: Vec<String>,
63 #[serde(rename = "runner_id", deserialize_with = "Option::deserialize")]
65 pub runner_id: Option<i32>,
66 #[serde(rename = "runner_name", deserialize_with = "Option::deserialize")]
68 pub runner_name: Option<String>,
69 #[serde(rename = "runner_group_id", deserialize_with = "Option::deserialize")]
71 pub runner_group_id: Option<i32>,
72 #[serde(rename = "runner_group_name", deserialize_with = "Option::deserialize")]
74 pub runner_group_name: Option<String>,
75 #[serde(rename = "workflow_name", deserialize_with = "Option::deserialize")]
77 pub workflow_name: Option<String>,
78 #[serde(rename = "head_branch", deserialize_with = "Option::deserialize")]
80 pub head_branch: Option<String>,
81}
82
83impl Job {
84 pub fn new(id: i32, run_id: i32, run_url: String, node_id: String, head_sha: String, url: String, html_url: Option<String>, status: Status, conclusion: Option<Conclusion>, created_at: String, started_at: String, completed_at: Option<String>, name: String, check_run_url: String, labels: Vec<String>, runner_id: Option<i32>, runner_name: Option<String>, runner_group_id: Option<i32>, runner_group_name: Option<String>, workflow_name: Option<String>, head_branch: Option<String>) -> Job {
86 Job {
87 id,
88 run_id,
89 run_url,
90 run_attempt: None,
91 node_id,
92 head_sha,
93 url,
94 html_url,
95 status,
96 conclusion,
97 created_at,
98 started_at,
99 completed_at,
100 name,
101 steps: None,
102 check_run_url,
103 labels,
104 runner_id,
105 runner_name,
106 runner_group_id,
107 runner_group_name,
108 workflow_name,
109 head_branch,
110 }
111 }
112}
113#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
115pub enum Status {
116 #[serde(rename = "queued")]
117 Queued,
118 #[serde(rename = "in_progress")]
119 InProgress,
120 #[serde(rename = "completed")]
121 Completed,
122 #[serde(rename = "waiting")]
123 Waiting,
124 #[serde(rename = "requested")]
125 Requested,
126 #[serde(rename = "pending")]
127 Pending,
128}
129
130impl Default for Status {
131 fn default() -> Status {
132 Self::Queued
133 }
134}
135#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
137pub enum Conclusion {
138 #[serde(rename = "success")]
139 Success,
140 #[serde(rename = "failure")]
141 Failure,
142 #[serde(rename = "neutral")]
143 Neutral,
144 #[serde(rename = "cancelled")]
145 Cancelled,
146 #[serde(rename = "skipped")]
147 Skipped,
148 #[serde(rename = "timed_out")]
149 TimedOut,
150 #[serde(rename = "action_required")]
151 ActionRequired,
152}
153
154impl Default for Conclusion {
155 fn default() -> Conclusion {
156 Self::Success
157 }
158}
159