basyx_rs/
concept_description.rs

1// SPDX-FileCopyrightText: 2021 Fraunhofer Institute for Experimental Software Engineering IESE
2// SPDX-FileCopyrightText: 2023 Jan Hecht
3//
4// SPDX-License-Identifier: MIT
5
6use crate::administrative_information::AdministrativeInformation;
7use crate::embedded_data_specification::EmbeddedDataSpecification;
8use crate::reference::Reference;
9use crate::Extension;
10use crate::LangString as LangStringNameType;
11use crate::LangString as LangStringTextType;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
15#[serde(tag = "modelType")]
16pub struct ConceptDescription {
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub extensions: Option<Vec<Extension>>,
19
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub category: Option<String>,
22
23    #[serde(skip_serializing_if = "Option::is_none")]
24    #[serde(rename = "idShort")]
25    pub id_short: Option<String>,
26
27    #[serde(skip_serializing_if = "Option::is_none")]
28    #[serde(rename = "displayName")]
29    pub display_name: Option<Vec<LangStringNameType>>,
30
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub description: Option<Vec<LangStringTextType>>,
33
34    // Identifiable
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub administration: Option<AdministrativeInformation>,
37
38    pub id: String,
39
40    // HasDataSpecification
41    #[serde(skip_serializing_if = "Option::is_none")]
42    #[serde(rename = "embeddedDataSpecifications")]
43    pub embedded_data_specifications: Option<Vec<EmbeddedDataSpecification>>,
44
45    #[serde(skip_serializing_if = "Option::is_none")]
46    #[serde(rename = "isCaseOf")]
47    pub is_case_of: Option<Vec<Reference>>,
48}
49
50impl ConceptDescription {
51    pub fn new(id: String) -> Self {
52        Self {
53            extensions: None,
54            category: None,
55            id_short: None,
56            display_name: None,
57            id,
58            embedded_data_specifications: None,
59            description: None,
60            administration: None,
61            is_case_of: None,
62        }
63    }
64}