1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct QueuedJob {
16 #[serde(rename = "workspace_id", skip_serializing_if = "Option::is_none")]
17 pub workspace_id: Option<String>,
18 #[serde(rename = "id")]
19 pub id: uuid::Uuid,
20 #[serde(rename = "parent_job", skip_serializing_if = "Option::is_none")]
21 pub parent_job: Option<uuid::Uuid>,
22 #[serde(rename = "created_by", skip_serializing_if = "Option::is_none")]
23 pub created_by: Option<String>,
24 #[serde(rename = "created_at", skip_serializing_if = "Option::is_none")]
25 pub created_at: Option<String>,
26 #[serde(rename = "started_at", skip_serializing_if = "Option::is_none")]
27 pub started_at: Option<String>,
28 #[serde(rename = "scheduled_for", skip_serializing_if = "Option::is_none")]
29 pub scheduled_for: Option<String>,
30 #[serde(rename = "running")]
31 pub running: bool,
32 #[serde(rename = "script_path", skip_serializing_if = "Option::is_none")]
33 pub script_path: Option<String>,
34 #[serde(rename = "script_hash", skip_serializing_if = "Option::is_none")]
35 pub script_hash: Option<String>,
36 #[serde(rename = "args", skip_serializing_if = "Option::is_none")]
37 pub args: Option<std::collections::HashMap<String, serde_json::Value>>,
38 #[serde(rename = "logs", skip_serializing_if = "Option::is_none")]
39 pub logs: Option<String>,
40 #[serde(rename = "raw_code", skip_serializing_if = "Option::is_none")]
41 pub raw_code: Option<String>,
42 #[serde(rename = "canceled")]
43 pub canceled: bool,
44 #[serde(rename = "canceled_by", skip_serializing_if = "Option::is_none")]
45 pub canceled_by: Option<String>,
46 #[serde(rename = "canceled_reason", skip_serializing_if = "Option::is_none")]
47 pub canceled_reason: Option<String>,
48 #[serde(rename = "last_ping", skip_serializing_if = "Option::is_none")]
49 pub last_ping: Option<String>,
50 #[serde(rename = "job_kind")]
51 pub job_kind: JobKind,
52 #[serde(rename = "schedule_path", skip_serializing_if = "Option::is_none")]
53 pub schedule_path: Option<String>,
54 #[serde(rename = "permissioned_as")]
56 pub permissioned_as: String,
57 #[serde(rename = "flow_status", skip_serializing_if = "Option::is_none")]
58 pub flow_status: Option<Box<models::FlowStatus>>,
59 #[serde(rename = "workflow_as_code_status", skip_serializing_if = "Option::is_none")]
60 pub workflow_as_code_status: Option<Box<models::WorkflowStatus>>,
61 #[serde(rename = "raw_flow", skip_serializing_if = "Option::is_none")]
62 pub raw_flow: Option<Box<models::FlowValue>>,
63 #[serde(rename = "is_flow_step")]
64 pub is_flow_step: bool,
65 #[serde(rename = "language", skip_serializing_if = "Option::is_none")]
66 pub language: Option<models::ScriptLang>,
67 #[serde(rename = "email")]
68 pub email: String,
69 #[serde(rename = "visible_to_owner")]
70 pub visible_to_owner: bool,
71 #[serde(rename = "mem_peak", skip_serializing_if = "Option::is_none")]
72 pub mem_peak: Option<i32>,
73 #[serde(rename = "tag")]
74 pub tag: String,
75 #[serde(rename = "priority", skip_serializing_if = "Option::is_none")]
76 pub priority: Option<i32>,
77 #[serde(rename = "self_wait_time_ms", skip_serializing_if = "Option::is_none")]
78 pub self_wait_time_ms: Option<f64>,
79 #[serde(rename = "aggregate_wait_time_ms", skip_serializing_if = "Option::is_none")]
80 pub aggregate_wait_time_ms: Option<f64>,
81 #[serde(rename = "suspend", skip_serializing_if = "Option::is_none")]
82 pub suspend: Option<f64>,
83 #[serde(rename = "preprocessed", skip_serializing_if = "Option::is_none")]
84 pub preprocessed: Option<bool>,
85 #[serde(rename = "worker", skip_serializing_if = "Option::is_none")]
86 pub worker: Option<String>,
87}
88
89impl QueuedJob {
90 pub fn new(id: uuid::Uuid, running: bool, canceled: bool, job_kind: JobKind, permissioned_as: String, is_flow_step: bool, email: String, visible_to_owner: bool, tag: String) -> QueuedJob {
91 QueuedJob {
92 workspace_id: None,
93 id,
94 parent_job: None,
95 created_by: None,
96 created_at: None,
97 started_at: None,
98 scheduled_for: None,
99 running,
100 script_path: None,
101 script_hash: None,
102 args: None,
103 logs: None,
104 raw_code: None,
105 canceled,
106 canceled_by: None,
107 canceled_reason: None,
108 last_ping: None,
109 job_kind,
110 schedule_path: None,
111 permissioned_as,
112 flow_status: None,
113 workflow_as_code_status: None,
114 raw_flow: None,
115 is_flow_step,
116 language: None,
117 email,
118 visible_to_owner,
119 mem_peak: None,
120 tag,
121 priority: None,
122 self_wait_time_ms: None,
123 aggregate_wait_time_ms: None,
124 suspend: None,
125 preprocessed: None,
126 worker: None,
127 }
128 }
129}
130#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
132pub enum JobKind {
133 #[serde(rename = "script")]
134 Script,
135 #[serde(rename = "preview")]
136 Preview,
137 #[serde(rename = "dependencies")]
138 Dependencies,
139 #[serde(rename = "flowdependencies")]
140 Flowdependencies,
141 #[serde(rename = "appdependencies")]
142 Appdependencies,
143 #[serde(rename = "flow")]
144 Flow,
145 #[serde(rename = "flowpreview")]
146 Flowpreview,
147 #[serde(rename = "script_hub")]
148 ScriptHub,
149 #[serde(rename = "identity")]
150 Identity,
151 #[serde(rename = "deploymentcallback")]
152 Deploymentcallback,
153 #[serde(rename = "singlescriptflow")]
154 Singlescriptflow,
155 #[serde(rename = "flowscript")]
156 Flowscript,
157 #[serde(rename = "flownode")]
158 Flownode,
159 #[serde(rename = "appscript")]
160 Appscript,
161}
162
163impl Default for JobKind {
164 fn default() -> JobKind {
165 Self::Script
166 }
167}
168