1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct RawScript {
17 #[serde(rename = "input_transforms")]
19 pub input_transforms: std::collections::HashMap<String, models::InputTransform>,
20 #[serde(rename = "content")]
22 pub content: String,
23 #[serde(rename = "language")]
25 pub language: Language,
26 #[serde(rename = "path", skip_serializing_if = "Option::is_none")]
28 pub path: Option<String>,
29 #[serde(rename = "lock", skip_serializing_if = "Option::is_none")]
31 pub lock: Option<String>,
32 #[serde(rename = "type")]
33 pub r#type: Type,
34 #[serde(rename = "tag", skip_serializing_if = "Option::is_none")]
36 pub tag: Option<String>,
37 #[serde(rename = "concurrent_limit", skip_serializing_if = "Option::is_none")]
39 pub concurrent_limit: Option<f64>,
40 #[serde(rename = "concurrency_time_window_s", skip_serializing_if = "Option::is_none")]
42 pub concurrency_time_window_s: Option<f64>,
43 #[serde(rename = "on_concurrency_limit", skip_serializing_if = "Option::is_none")]
45 pub on_concurrency_limit: Option<OnConcurrencyLimit>,
46 #[serde(rename = "custom_concurrency_key", skip_serializing_if = "Option::is_none")]
48 pub custom_concurrency_key: Option<String>,
49 #[serde(rename = "is_trigger", skip_serializing_if = "Option::is_none")]
51 pub is_trigger: Option<bool>,
52 #[serde(rename = "assets", skip_serializing_if = "Option::is_none")]
54 pub assets: Option<Vec<models::RawScriptAssetsInner>>,
55}
56
57impl RawScript {
58 pub fn new(input_transforms: std::collections::HashMap<String, models::InputTransform>, content: String, language: Language, r#type: Type) -> RawScript {
60 RawScript {
61 input_transforms,
62 content,
63 language,
64 path: None,
65 lock: None,
66 r#type,
67 tag: None,
68 concurrent_limit: None,
69 concurrency_time_window_s: None,
70 on_concurrency_limit: None,
71 custom_concurrency_key: None,
72 is_trigger: None,
73 assets: None,
74 }
75 }
76}
77#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
79pub enum Language {
80 #[serde(rename = "deno")]
81 Deno,
82 #[serde(rename = "bun")]
83 Bun,
84 #[serde(rename = "bunnative")]
85 Bunnative,
86 #[serde(rename = "python3")]
87 Python3,
88 #[serde(rename = "go")]
89 Go,
90 #[serde(rename = "bash")]
91 Bash,
92 #[serde(rename = "powershell")]
93 Powershell,
94 #[serde(rename = "postgresql")]
95 Postgresql,
96 #[serde(rename = "mysql")]
97 Mysql,
98 #[serde(rename = "bigquery")]
99 Bigquery,
100 #[serde(rename = "snowflake")]
101 Snowflake,
102 #[serde(rename = "mssql")]
103 Mssql,
104 #[serde(rename = "oracledb")]
105 Oracledb,
106 #[serde(rename = "graphql")]
107 Graphql,
108 #[serde(rename = "nativets")]
109 Nativets,
110 #[serde(rename = "php")]
111 Php,
112 #[serde(rename = "rust")]
113 Rust,
114 #[serde(rename = "ansible")]
115 Ansible,
116 #[serde(rename = "csharp")]
117 Csharp,
118 #[serde(rename = "nu")]
119 Nu,
120 #[serde(rename = "java")]
121 Java,
122 #[serde(rename = "ruby")]
123 Ruby,
124 #[serde(rename = "rlang")]
125 Rlang,
126 #[serde(rename = "duckdb")]
127 Duckdb,
128}
129
130impl Default for Language {
131 fn default() -> Language {
132 Self::Deno
133 }
134}
135#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
137pub enum Type {
138 #[serde(rename = "rawscript")]
139 Rawscript,
140}
141
142impl Default for Type {
143 fn default() -> Type {
144 Self::Rawscript
145 }
146}
147#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
149pub enum OnConcurrencyLimit {
150 #[serde(rename = "queue")]
151 Queue,
152 #[serde(rename = "fail")]
153 Fail,
154}
155
156impl Default for OnConcurrencyLimit {
157 fn default() -> OnConcurrencyLimit {
158 Self::Queue
159 }
160}
161