basyx_rs/submodel_element/
entity.rs1use crate::submodel_element::{EntityType, SubmodelElement};
6use crate::LangString as LangStringNameType;
7use crate::LangString as LangStringTextType;
8use crate::{EmbeddedDataSpecification, Extension, Qualifier, Reference, SpecificAssetId};
9use serde::{Deserialize, Serialize};
10
11#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
12pub struct Entity {
13 #[serde(skip_serializing_if = "Option::is_none")]
16 pub extensions: Option<Vec<Extension>>,
17
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub category: Option<String>,
20
21 #[serde(skip_serializing_if = "Option::is_none")]
22 #[serde(rename = "idShort")]
23 pub id_short: Option<String>,
24
25 #[serde(skip_serializing_if = "Option::is_none")]
26 #[serde(rename = "displayName")]
27 pub display_name: Option<Vec<LangStringNameType>>,
28
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub description: Option<Vec<LangStringTextType>>,
31
32 #[serde(skip_serializing_if = "Option::is_none")]
34 #[serde(rename = "semanticId")]
35 pub semantic_id: Option<Reference>,
36
37 #[serde(skip_serializing_if = "Option::is_none")]
38 #[serde(rename = "supplementalSemanticIds")]
39 pub supplemental_semantic_ids: Option<Vec<Reference>>,
40
41 #[serde(skip_serializing_if = "Option::is_none")]
43 pub qualifiers: Option<Vec<Qualifier>>,
44
45 #[serde(skip_serializing_if = "Option::is_none")]
47 #[serde(rename = "embeddedDataSpecifications")]
48 pub embedded_data_specifications: Option<Vec<EmbeddedDataSpecification>>,
49
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub statements: Option<Vec<SubmodelElement>>,
52
53 #[serde(rename = "entityType")]
54 pub entity_type: EntityType,
55
56 #[serde(skip_serializing_if = "Option::is_none")]
57 #[serde(rename = "globalAssetId")]
58 pub global_asset_id: Option<String>,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
61 #[serde(rename = "specificAssetIds")]
62 pub specific_asset_ids: Option<Vec<SpecificAssetId>>,
63}
64
65impl Entity {
66 pub fn new(entity_type: EntityType) -> Self {
67 Self {
68 extensions: None,
69 category: None,
70 id_short: None,
71 display_name: None,
72 description: None,
73 semantic_id: None,
74 supplemental_semantic_ids: None,
75 qualifiers: None,
76 embedded_data_specifications: None,
77 statements: None,
78 entity_type,
79 global_asset_id: None,
80 specific_asset_ids: None,
81 }
82 }
83}