cognite/dto/data_ingestion/
extpipes.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4use serde_with::skip_serializing_none;
5
6use crate::{
7 Identity, IntoPatch, IntoPatchItem, Patch, Range, UpdateList, UpdateMap, UpdateSet,
8 UpsertOptions,
9};
10
11#[derive(Serialize, Deserialize, Clone, Default, Debug)]
12#[serde(rename_all = "camelCase")]
13pub struct ExtPipeRawTable {
15 pub db_name: String,
17 pub table_name: String,
19}
20
21#[skip_serializing_none]
22#[derive(Serialize, Deserialize, Clone, Default, Debug)]
23#[serde(rename_all = "camelCase")]
24pub struct ExtPipeContact {
26 pub name: Option<String>,
28 pub email: Option<String>,
30 pub role: Option<String>,
32 pub send_notification: Option<bool>,
35}
36
37#[skip_serializing_none]
38#[derive(Debug, Serialize, Deserialize, Clone)]
39#[serde(rename_all = "camelCase")]
40pub struct ExtPipe {
42 pub id: i64,
44 pub external_id: String,
46 pub name: String,
48 pub description: Option<String>,
50 pub data_set_id: i64,
52 pub raw_tables: Option<Vec<ExtPipeRawTable>>,
55 pub schedule: Option<String>,
57 pub contacts: Option<Vec<ExtPipeContact>>,
59 pub metadata: Option<HashMap<String, String>>,
61 pub source: Option<String>,
63 pub documentation: Option<String>,
65 pub last_success: Option<i64>,
67 pub last_failure: Option<i64>,
69 pub last_message: Option<String>,
71 pub last_seen: Option<i64>,
73 pub created_time: i64,
75 pub last_updated_time: i64,
77 pub created_by: Option<String>,
79}
80
81#[skip_serializing_none]
82#[derive(Debug, Serialize, Deserialize, Default, Clone)]
83#[serde(rename_all = "camelCase")]
84pub struct AddExtPipe {
86 pub external_id: String,
88 pub name: String,
90 pub description: Option<String>,
92 pub data_set_id: i64,
94 pub raw_tables: Option<Vec<ExtPipeRawTable>>,
97 pub schedule: Option<String>,
99 pub contacts: Option<Vec<ExtPipeContact>>,
101 pub metadata: Option<HashMap<String, String>>,
103 pub source: Option<String>,
105 pub documentation: Option<String>,
107}
108
109impl From<ExtPipe> for AddExtPipe {
110 fn from(pipe: ExtPipe) -> Self {
111 AddExtPipe {
112 external_id: pipe.external_id,
113 name: pipe.name,
114 description: pipe.description,
115 data_set_id: pipe.data_set_id,
116 raw_tables: pipe.raw_tables,
117 schedule: pipe.schedule,
118 contacts: pipe.contacts,
119 metadata: pipe.metadata,
120 source: pipe.source,
121 documentation: pipe.documentation,
122 }
123 }
124}
125
126#[skip_serializing_none]
127#[derive(Serialize, Deserialize, Default, Clone)]
128#[serde(rename_all = "camelCase")]
129pub struct PatchExtPipe {
131 pub external_id: Option<UpdateSet<String>>,
133 pub name: Option<UpdateSet<String>>,
135 pub description: Option<UpdateSet<Option<String>>>,
137 pub data_set_id: Option<UpdateSet<i64>>,
139 pub schedule: Option<UpdateSet<Option<String>>>,
141 pub raw_tables: Option<UpdateList<ExtPipeRawTable, ExtPipeRawTable>>,
144 pub contacts: Option<UpdateList<ExtPipeContact, ExtPipeContact>>,
146 pub metadata: Option<UpdateMap<String, String>>,
148 pub source: Option<UpdateSet<Option<String>>>,
150 pub documentation: Option<UpdateSet<Option<String>>>,
152}
153
154impl IntoPatch<Patch<PatchExtPipe>> for ExtPipe {
155 fn patch(self, options: &UpsertOptions) -> Patch<PatchExtPipe> {
156 Patch::<PatchExtPipe> {
157 id: Identity::ExternalId {
158 external_id: self.external_id,
159 },
160 update: PatchExtPipe {
161 external_id: None,
162 name: self.name.patch(options),
163 description: self.description.patch(options),
164 data_set_id: self.data_set_id.patch(options),
165 schedule: self.schedule.patch(options),
166 raw_tables: self.raw_tables.patch(options),
167 contacts: self.contacts.patch(options),
168 metadata: self.metadata.patch(options),
169 source: self.source.patch(options),
170 documentation: self.documentation.patch(options),
171 },
172 }
173 }
174}
175
176impl IntoPatch<PatchExtPipe> for AddExtPipe {
177 fn patch(self, options: &UpsertOptions) -> PatchExtPipe {
178 PatchExtPipe {
179 external_id: self.external_id.patch(options),
180 name: self.name.patch(options),
181 description: self.description.patch(options),
182 data_set_id: self.data_set_id.patch(options),
183 schedule: self.schedule.patch(options),
184 raw_tables: self.raw_tables.patch(options),
185 contacts: self.contacts.patch(options),
186 metadata: self.metadata.patch(options),
187 source: self.source.patch(options),
188 documentation: self.documentation.patch(options),
189 }
190 }
191}
192
193impl From<ExtPipe> for Patch<PatchExtPipe> {
194 fn from(sequence: ExtPipe) -> Self {
195 IntoPatch::<Patch<PatchExtPipe>>::patch(sequence, &Default::default())
196 }
197}
198
199#[derive(Serialize, Deserialize, Clone, Default)]
200#[serde(rename_all = "camelCase")]
201pub enum ExtPipeRunStatus {
203 Success,
205 Failure,
207 #[default]
209 Seen,
210}
211
212#[skip_serializing_none]
213#[derive(Serialize, Deserialize, Default, Clone)]
214#[serde(rename_all = "camelCase")]
215pub struct ExtPipeFilter {
217 pub external_id_prefix: Option<String>,
219 pub name: Option<String>,
221 pub description: Option<String>,
223 pub data_set_ids: Option<Vec<Identity>>,
225 pub schedule: Option<String>,
227 pub contacts: Option<Vec<ExtPipeContact>>,
229 pub raw_tables: Option<Vec<ExtPipeRawTable>>,
231 pub metadata: Option<HashMap<String, String>>,
233 pub source: Option<String>,
235 pub documentation: Option<String>,
237 pub created_by: Option<String>,
239 pub created_time: Option<Range<i64>>,
241 pub last_updated_time: Option<Range<i64>>,
243}
244
245#[skip_serializing_none]
246#[derive(Serialize, Deserialize)]
247#[serde(rename_all = "camelCase")]
248pub struct ExtPipeRun {
250 pub id: i64,
252 pub status: ExtPipeRunStatus,
254 pub message: Option<String>,
256 pub created_time: i64,
258 pub external_id: Option<String>,
260}
261
262#[skip_serializing_none]
263#[derive(Serialize, Deserialize, Default)]
264#[serde(rename_all = "camelCase")]
265pub struct AddExtPipeRun {
267 pub status: ExtPipeRunStatus,
269 pub message: Option<String>,
271 pub created_time: Option<i64>,
273 pub external_id: String,
275}
276
277#[derive(Serialize, Deserialize, Default, Clone)]
278#[serde(rename_all = "camelCase")]
279pub struct ExtPipeStringFilter {
281 pub substring: String,
283}
284
285#[skip_serializing_none]
286#[derive(Serialize, Deserialize, Default, Clone)]
287#[serde(rename_all = "camelCase")]
288pub struct ExtPipeRunFilter {
290 pub external_id: String,
292 pub statuses: Option<Vec<ExtPipeRunStatus>>,
294 pub created_time: Option<Range<i64>>,
296 pub message: Option<ExtPipeStringFilter>,
298}