basyx_rs/submodel_element/
annotated_relationship_element.rs

1// SPDX-FileCopyrightText: 2023 Jan Hecht
2//
3// SPDX-License-Identifier: MIT
4
5use crate::embedded_data_specification::EmbeddedDataSpecification;
6use crate::submodel_element::data_element_choice::DataElementChoice;
7use crate::LangString as LangStringNameType;
8use crate::LangString as LangStringTextType;
9use crate::{Extension, Qualifier, Reference};
10use serde::{Deserialize, Serialize};
11
12#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
13pub struct AnnotatedRelationshipElement {
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub extensions: Option<Vec<Extension>>,
16
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub category: Option<String>,
19
20    #[serde(skip_serializing_if = "Option::is_none")]
21    #[serde(rename = "idShort")]
22    pub id_short: Option<String>,
23
24    #[serde(skip_serializing_if = "Option::is_none")]
25    #[serde(rename = "displayName")]
26    pub display_name: Option<Vec<LangStringNameType>>,
27
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub description: Option<Vec<LangStringTextType>>,
30
31    #[serde(skip_serializing_if = "Option::is_none")]
32    #[serde(rename = "semanticId")]
33    pub semantic_id: Option<Reference>,
34
35    #[serde(skip_serializing_if = "Option::is_none")]
36    #[serde(rename = "supplementalSemanticIds")]
37    pub supplemental_semantic_ids: Option<Vec<Reference>>,
38
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub qualifiers: Option<Vec<Qualifier>>,
41
42    #[serde(skip_serializing_if = "Option::is_none")]
43    #[serde(rename = "embeddedDataSpecifications")]
44    pub embedded_data_specifications: Option<Vec<EmbeddedDataSpecification>>,
45
46    pub first: Reference,
47
48    pub second: Reference,
49
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub annotations: Option<Vec<DataElementChoice>>,
52}
53
54impl AnnotatedRelationshipElement {
55    pub fn new(first: Reference, second: Reference) -> Self {
56        Self {
57            extensions: None,
58            category: None,
59            id_short: None,
60            display_name: None,
61            first,
62            second,
63            semantic_id: None,
64            supplemental_semantic_ids: None,
65            qualifiers: None,
66            description: None,
67            embedded_data_specifications: None,
68            annotations: None,
69        }
70    }
71}