1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct ExportableQueuedJob {
17 #[serde(rename = "id")]
18 pub id: uuid::Uuid,
19 #[serde(rename = "parent_job", skip_serializing_if = "Option::is_none")]
20 pub parent_job: Option<uuid::Uuid>,
21 #[serde(rename = "created_by")]
22 pub created_by: String,
23 #[serde(rename = "created_at")]
24 pub created_at: String,
25 #[serde(rename = "started_at", skip_serializing_if = "Option::is_none")]
26 pub started_at: Option<String>,
27 #[serde(rename = "scheduled_for", skip_serializing_if = "Option::is_none")]
28 pub scheduled_for: Option<String>,
29 #[serde(rename = "script_path", skip_serializing_if = "Option::is_none")]
30 pub script_path: Option<String>,
31 #[serde(rename = "script_hash", skip_serializing_if = "Option::is_none")]
32 pub script_hash: Option<String>,
33 #[serde(rename = "args", skip_serializing_if = "Option::is_none")]
35 pub args: Option<serde_json::Value>,
36 #[serde(rename = "logs", skip_serializing_if = "Option::is_none")]
38 pub logs: Option<String>,
39 #[serde(rename = "raw_code", skip_serializing_if = "Option::is_none")]
40 pub raw_code: Option<String>,
41 #[serde(rename = "raw_lock", skip_serializing_if = "Option::is_none")]
42 pub raw_lock: Option<String>,
43 #[serde(rename = "canceled_by", skip_serializing_if = "Option::is_none")]
44 pub canceled_by: Option<String>,
45 #[serde(rename = "canceled_reason", skip_serializing_if = "Option::is_none")]
46 pub canceled_reason: Option<String>,
47 #[serde(rename = "job_kind")]
48 pub job_kind: JobKind,
49 #[serde(rename = "trigger", skip_serializing_if = "Option::is_none")]
51 pub trigger: Option<String>,
52 #[serde(rename = "trigger_kind", skip_serializing_if = "Option::is_none")]
53 pub trigger_kind: Option<TriggerKind>,
54 #[serde(rename = "permissioned_as")]
55 pub permissioned_as: String,
56 #[serde(rename = "permissioned_as_email", skip_serializing_if = "Option::is_none")]
57 pub permissioned_as_email: Option<String>,
58 #[serde(rename = "flow_status", skip_serializing_if = "Option::is_none")]
60 pub flow_status: Option<serde_json::Value>,
61 #[serde(rename = "workflow_as_code_status", skip_serializing_if = "Option::is_none")]
62 pub workflow_as_code_status: Option<serde_json::Value>,
63 #[serde(rename = "raw_flow", skip_serializing_if = "Option::is_none")]
64 pub raw_flow: Option<serde_json::Value>,
65 #[serde(rename = "is_flow_step", skip_serializing_if = "Option::is_none")]
66 pub is_flow_step: Option<bool>,
67 #[serde(rename = "language", skip_serializing_if = "Option::is_none")]
68 pub language: Option<models::ScriptLang>,
69 #[serde(rename = "email")]
70 pub email: String,
71 #[serde(rename = "visible_to_owner")]
72 pub visible_to_owner: bool,
73 #[serde(rename = "mem_peak", skip_serializing_if = "Option::is_none")]
74 pub mem_peak: Option<i32>,
75 #[serde(rename = "tag", skip_serializing_if = "Option::is_none")]
76 pub tag: Option<String>,
77 #[serde(rename = "priority", skip_serializing_if = "Option::is_none")]
78 pub priority: Option<i32>,
79 #[serde(rename = "labels", skip_serializing_if = "Option::is_none")]
80 pub labels: Option<Vec<String>>,
81 #[serde(rename = "same_worker", skip_serializing_if = "Option::is_none")]
82 pub same_worker: Option<bool>,
83 #[serde(rename = "flow_step_id", skip_serializing_if = "Option::is_none")]
84 pub flow_step_id: Option<String>,
85 #[serde(rename = "flow_innermost_root_job", skip_serializing_if = "Option::is_none")]
86 pub flow_innermost_root_job: Option<uuid::Uuid>,
87 #[serde(rename = "concurrent_limit", skip_serializing_if = "Option::is_none")]
88 pub concurrent_limit: Option<i32>,
89 #[serde(rename = "concurrency_time_window_s", skip_serializing_if = "Option::is_none")]
90 pub concurrency_time_window_s: Option<i32>,
91 #[serde(rename = "timeout", skip_serializing_if = "Option::is_none")]
92 pub timeout: Option<i32>,
93 #[serde(rename = "cache_ttl", skip_serializing_if = "Option::is_none")]
94 pub cache_ttl: Option<i32>,
95 #[serde(rename = "self_wait_time_ms", skip_serializing_if = "Option::is_none")]
96 pub self_wait_time_ms: Option<i32>,
97 #[serde(rename = "aggregate_wait_time_ms", skip_serializing_if = "Option::is_none")]
98 pub aggregate_wait_time_ms: Option<i32>,
99 #[serde(rename = "preprocessed", skip_serializing_if = "Option::is_none")]
100 pub preprocessed: Option<bool>,
101 #[serde(rename = "suspend", skip_serializing_if = "Option::is_none")]
102 pub suspend: Option<i32>,
103 #[serde(rename = "suspend_until", skip_serializing_if = "Option::is_none")]
104 pub suspend_until: Option<String>,
105}
106
107impl ExportableQueuedJob {
108 pub fn new(id: uuid::Uuid, created_by: String, created_at: String, job_kind: JobKind, permissioned_as: String, email: String, visible_to_owner: bool) -> ExportableQueuedJob {
110 ExportableQueuedJob {
111 id,
112 parent_job: None,
113 created_by,
114 created_at,
115 started_at: None,
116 scheduled_for: None,
117 script_path: None,
118 script_hash: None,
119 args: None,
120 logs: None,
121 raw_code: None,
122 raw_lock: None,
123 canceled_by: None,
124 canceled_reason: None,
125 job_kind,
126 trigger: None,
127 trigger_kind: None,
128 permissioned_as,
129 permissioned_as_email: None,
130 flow_status: None,
131 workflow_as_code_status: None,
132 raw_flow: None,
133 is_flow_step: None,
134 language: None,
135 email,
136 visible_to_owner,
137 mem_peak: None,
138 tag: None,
139 priority: None,
140 labels: None,
141 same_worker: None,
142 flow_step_id: None,
143 flow_innermost_root_job: None,
144 concurrent_limit: None,
145 concurrency_time_window_s: None,
146 timeout: None,
147 cache_ttl: None,
148 self_wait_time_ms: None,
149 aggregate_wait_time_ms: None,
150 preprocessed: None,
151 suspend: None,
152 suspend_until: None,
153 }
154 }
155}
156#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
158pub enum JobKind {
159 #[serde(rename = "script")]
160 Script,
161 #[serde(rename = "preview")]
162 Preview,
163 #[serde(rename = "dependencies")]
164 Dependencies,
165 #[serde(rename = "flowdependencies")]
166 Flowdependencies,
167 #[serde(rename = "appdependencies")]
168 Appdependencies,
169 #[serde(rename = "flow")]
170 Flow,
171 #[serde(rename = "flowpreview")]
172 Flowpreview,
173 #[serde(rename = "script_hub")]
174 ScriptHub,
175 #[serde(rename = "identity")]
176 Identity,
177 #[serde(rename = "deploymentcallback")]
178 Deploymentcallback,
179 #[serde(rename = "singlestepflow")]
180 Singlestepflow,
181 #[serde(rename = "flowscript")]
182 Flowscript,
183 #[serde(rename = "flownode")]
184 Flownode,
185 #[serde(rename = "appscript")]
186 Appscript,
187 #[serde(rename = "aiagent")]
188 Aiagent,
189 #[serde(rename = "unassigned_script")]
190 UnassignedScript,
191 #[serde(rename = "unassigned_flow")]
192 UnassignedFlow,
193 #[serde(rename = "unassigned_singlestepflow")]
194 UnassignedSinglestepflow,
195}
196
197impl Default for JobKind {
198 fn default() -> JobKind {
199 Self::Script
200 }
201}
202#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
204pub enum TriggerKind {
205 #[serde(rename = "webhook")]
206 Webhook,
207 #[serde(rename = "http")]
208 Http,
209 #[serde(rename = "websocket")]
210 Websocket,
211 #[serde(rename = "kafka")]
212 Kafka,
213 #[serde(rename = "email")]
214 Email,
215 #[serde(rename = "nats")]
216 Nats,
217 #[serde(rename = "schedule")]
218 Schedule,
219 #[serde(rename = "app")]
220 App,
221 #[serde(rename = "ui")]
222 Ui,
223 #[serde(rename = "postgres")]
224 Postgres,
225 #[serde(rename = "sqs")]
226 Sqs,
227 #[serde(rename = "gcp")]
228 Gcp,
229}
230
231impl Default for TriggerKind {
232 fn default() -> TriggerKind {
233 Self::Webhook
234 }
235}
236