rubo4e/generated/v202607/
marktteilnehmer.rs1use super::{
2 Bo4eObject, BoTyp, Geschaeftspartner, Marktrolle, Rollencodetyp, Sparte, ZusatzAttribut,
3};
4#[derive(Debug, Clone, PartialEq)]
5#[cfg_attr(not(feature = "json"), derive(Eq, Hash))]
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7#[cfg_attr(feature = "builder", derive(typed_builder::TypedBuilder))]
8#[cfg_attr(feature = "validate", derive(garde::Validate))]
9#[cfg_attr(feature = "validate", garde(allow_unvalidated))]
10#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
11#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
12pub struct Marktteilnehmer {
16 #[cfg_attr(feature = "serde", serde(rename = "geschaeftspartner"))]
18 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
19 #[cfg_attr(feature = "builder", builder(default, setter(into)))]
20 pub geschaeftspartner: Option<Box<Geschaeftspartner>>,
21 #[cfg_attr(feature = "serde", serde(rename = "_id"))]
24 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
25 #[cfg_attr(feature = "builder", builder(default, setter(into)))]
26 pub id: Option<String>,
27 #[cfg_attr(feature = "serde", serde(rename = "makoadresse"))]
29 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
30 #[cfg_attr(feature = "builder", builder(default, setter(into)))]
31 pub makoadresse: Option<Vec<String>>,
32 #[cfg_attr(feature = "serde", serde(rename = "marktrolle"))]
34 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
35 #[cfg_attr(feature = "builder", builder(default, setter(into)))]
36 pub marktrolle: Option<Marktrolle>,
37 #[cfg_attr(feature = "serde", serde(rename = "rollencodenummer"))]
39 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
40 #[cfg_attr(feature = "builder", builder(default, setter(into)))]
41 #[cfg_attr(feature = "validate", garde(dive))]
42 pub rollencodenummer: Option<crate::identifiers::MarktpartnerId>,
43 #[cfg_attr(feature = "serde", serde(rename = "rollencodetyp"))]
45 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
46 #[cfg_attr(feature = "builder", builder(default, setter(into)))]
47 pub rollencodetyp: Option<Rollencodetyp>,
48 #[cfg_attr(feature = "serde", serde(rename = "sparte"))]
50 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
51 #[cfg_attr(feature = "builder", builder(default, setter(into)))]
52 pub sparte: Option<Sparte>,
53 #[cfg_attr(feature = "serde", serde(rename = "_typ"))]
55 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
56 #[cfg_attr(
57 feature = "builder",
58 builder(default = Some(BoTyp::Marktteilnehmer), setter(skip))
59 )]
60 pub typ: Option<BoTyp>,
61 #[cfg_attr(feature = "serde", serde(rename = "_version"))]
63 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
64 #[cfg_attr(
65 feature = "builder",
66 builder(default = Some("202607.1.0".to_owned()), setter(into))
67 )]
68 pub version: Option<String>,
69 #[cfg_attr(feature = "serde", serde(rename = "zusatzAttribute"))]
70 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
71 #[cfg_attr(feature = "builder", builder(default, setter(into)))]
72 pub zusatz_attribute: Option<Vec<ZusatzAttribut>>,
73 #[cfg_attr(feature = "json", serde(flatten))]
76 #[cfg_attr(
77 feature = "json",
78 serde(skip_serializing_if = "crate::json::ext_map_is_empty")
79 )]
80 #[cfg_attr(not(feature = "json"), serde(skip))]
81 #[cfg_attr(feature = "builder", builder(default, setter(skip)))]
82 #[doc(hidden)]
83 pub _additional: crate::LimitedExtensionMap,
84}
85impl Default for Marktteilnehmer {
86 fn default() -> Self {
87 Self {
88 geschaeftspartner: Default::default(),
89 id: Default::default(),
90 makoadresse: Default::default(),
91 marktrolle: Default::default(),
92 rollencodenummer: Default::default(),
93 rollencodetyp: Default::default(),
94 sparte: Default::default(),
95 typ: Some(BoTyp::Marktteilnehmer),
96 version: Some("202607.1.0".to_owned()),
97 zusatz_attribute: Default::default(),
98 _additional: Default::default(),
99 }
100 }
101}
102impl Bo4eObject for Marktteilnehmer {
103 type BoTyp = BoTyp;
104 fn bo_type(&self) -> BoTyp {
105 self.typ.unwrap_or(BoTyp::Marktteilnehmer)
106 }
107 fn schema_version(&self) -> &'static str {
108 "202607.1.0"
109 }
110 fn schema_series(&self) -> &'static str {
111 "202607"
112 }
113}
114#[cfg(feature = "json")]
115impl crate::json::sealed::Sealed for Marktteilnehmer {}
116#[cfg(feature = "json")]
117impl crate::json::Bo4eJsonExt for Marktteilnehmer {}
118#[cfg(feature = "json")]
119impl crate::json::Bo4eExtensionData for Marktteilnehmer {
120 fn extension_data(&self) -> &indexmap::IndexMap<String, serde_json::Value> {
121 self._additional
122 .as_map()
123 .unwrap_or(&crate::json::extension::EMPTY_EXTENSION_MAP)
124 }
125 fn has_extension_data(&self) -> bool {
126 !self._additional.is_empty()
127 }
128}
129#[cfg(feature = "json")]
130impl std::fmt::Display for Marktteilnehmer {
131 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
132 match serde_json::to_string(self) {
133 Ok(json) => f.write_str(&json),
134 Err(e) => write!(f, "<Marktteilnehmer: serialization error: {e}>"),
135 }
136 }
137}
138impl crate::Bo4eStrict for Marktteilnehmer {
139 fn collect_unknown_enums(&self, path: &str, out: &mut Vec<String>) {
140 if let Some(v) = &self.geschaeftspartner {
141 crate::Bo4eStrict::collect_unknown_enums(
142 &**v,
143 &crate::strict::field_path(path, "geschaeftspartner"),
144 out,
145 );
146 }
147 if let Some(v) = &self.marktrolle {
148 crate::Bo4eStrict::collect_unknown_enums(
149 v,
150 &crate::strict::field_path(path, "marktrolle"),
151 out,
152 );
153 }
154 if let Some(v) = &self.rollencodetyp {
155 crate::Bo4eStrict::collect_unknown_enums(
156 v,
157 &crate::strict::field_path(path, "rollencodetyp"),
158 out,
159 );
160 }
161 if let Some(v) = &self.sparte {
162 crate::Bo4eStrict::collect_unknown_enums(
163 v,
164 &crate::strict::field_path(path, "sparte"),
165 out,
166 );
167 }
168 if let Some(items) = &self.zusatz_attribute {
169 let child = crate::strict::field_path(path, "zusatzAttribute");
170 for (i, item) in items.iter().enumerate() {
171 crate::Bo4eStrict::collect_unknown_enums(
172 item,
173 &crate::strict::index_path(&child, i),
174 out,
175 );
176 }
177 }
178 }
179}