cognite/dto/data_modeling/
data_models.rs1use serde::{Deserialize, Serialize};
2use serde_with::skip_serializing_none;
3
4use crate::{
5 models::views::{ViewCreateOrReference, ViewDefinitionOrReference},
6 to_query, IntoParams, SetCursor,
7};
8
9#[skip_serializing_none]
10#[derive(Serialize, Deserialize, Clone, Debug, Default)]
11#[serde(rename_all = "camelCase")]
12pub struct DataModelCreate {
14 pub space: String,
16 pub external_id: String,
18 pub name: Option<String>,
20 pub description: Option<String>,
22 pub version: String,
24 pub views: Option<Vec<ViewCreateOrReference>>,
26}
27
28impl From<DataModel> for DataModelCreate {
29 fn from(value: DataModel) -> Self {
30 DataModelCreate {
31 space: value.space,
32 external_id: value.external_id,
33 name: value.name,
34 description: value.description,
35 version: value.version,
36 views: value
37 .views
38 .map(|views| views.into_iter().map(|v| v.into()).collect()),
39 }
40 }
41}
42
43#[skip_serializing_none]
44#[derive(Serialize, Deserialize, Clone, Debug, Default)]
45#[serde(rename_all = "camelCase")]
46pub struct DataModel {
48 pub space: String,
50 pub external_id: String,
52 pub name: Option<String>,
54 pub description: Option<String>,
56 pub version: String,
58 pub views: Option<Vec<ViewDefinitionOrReference>>,
60 pub created_time: i64,
62 pub last_updated_time: i64,
64 pub is_global: bool,
66}
67
68#[skip_serializing_none]
69#[derive(Serialize, Deserialize, Clone, Debug, Default)]
70#[serde(rename_all = "camelCase")]
71pub struct DataModelId {
73 pub space: String,
75 pub external_id: String,
77 pub version: Option<String>,
79}
80
81#[derive(Clone, Debug, Default)]
82pub struct DataModelQuery {
84 pub cursor: Option<String>,
86 pub limit: Option<i32>,
88 pub inline_views: Option<bool>,
90 pub space: Option<String>,
92 pub all_versions: Option<bool>,
94 pub include_global: Option<bool>,
96}
97
98impl SetCursor for DataModelQuery {
99 fn set_cursor(&mut self, cursor: Option<String>) {
100 self.cursor = cursor;
101 }
102}
103
104impl IntoParams for DataModelQuery {
105 fn into_params(self) -> Vec<(String, String)> {
106 let mut params = Vec::new();
107 to_query("cursor", &self.cursor, &mut params);
108 to_query("limit", &self.limit, &mut params);
109 to_query("inlineViews", &self.inline_views, &mut params);
110 to_query("space", &self.space, &mut params);
111 to_query("allVersions", &self.all_versions, &mut params);
112 to_query("includeGlobal", &self.include_global, &mut params);
113 params
114 }
115}