cognite/dto/data_modeling/instances/extensions/
timeseries.rs1use serde::{Deserialize, Serialize};
2use serde_with::skip_serializing_none;
3
4use crate::models::instances::{InstanceId, NodeOrEdgeCreate};
5
6use super::{
7 common::{CogniteDescribable, CogniteSourceable},
8 CogniteExtendable, WithInstance, WithView,
9};
10
11pub type CogniteTimeseries = CogniteExtendable<Timeseries>;
13
14#[derive(Serialize, Deserialize, Clone, Debug, Default)]
15#[serde(rename_all = "lowercase")]
16pub enum TimeSeriesType {
18 String,
20 #[default]
21 Numeric,
23}
24
25#[skip_serializing_none]
26#[derive(Serialize, Deserialize, Clone, Debug, Default)]
27#[serde(rename_all = "camelCase")]
28pub struct Timeseries {
30 #[serde(flatten)]
31 pub description: CogniteDescribable,
33 #[serde(flatten)]
34 pub source: CogniteSourceable,
36 pub is_step: bool,
38 pub source_unit: String,
40 pub unit: Option<InstanceId>,
42 pub assets: Option<Vec<InstanceId>>,
44 pub activities: Option<Vec<InstanceId>>,
46 pub r#type: TimeSeriesType,
48}
49
50impl Timeseries {
51 pub fn new(is_step: bool) -> Self {
53 Self {
54 is_step,
55 ..Default::default()
56 }
57 }
58}
59
60impl WithView for Timeseries {
61 const SPACE: &'static str = "cdf_cdm";
62 const EXTERNAL_ID: &'static str = "CogniteTimeSeries";
63 const VERSION: &'static str = "v1";
64}
65
66impl From<CogniteTimeseries> for NodeOrEdgeCreate<Timeseries> {
67 fn from(value: CogniteTimeseries) -> NodeOrEdgeCreate<Timeseries> {
68 value.instance()
69 }
70}