openconfiguration/
commercial.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::impl_visitable_noop;
6
7#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
8#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
9#[cfg_attr(feature = "schema", schemars(deny_unknown_fields))]
10#[serde(rename_all = "camelCase")]
11pub struct Commercial {
12 pub id: String,
14
15 pub master_id: Option<String>,
17
18 pub article: Option<String>,
20
21 pub variant: Option<String>,
23
24 pub native_id: Option<String>,
30
31 #[serde(
33 deserialize_with = "crate::utils::deserialize_optional_map_without_null_values",
34 default
35 )]
36 pub short_text: Option<HashMap<String, String>>,
37
38 #[serde(
40 deserialize_with = "crate::utils::deserialize_optional_map_without_null_values",
41 default
42 )]
43 pub long_text: Option<HashMap<String, Vec<String>>>,
44
45 #[serde(
48 deserialize_with = "crate::utils::deserialize_optional_map_without_null_values",
49 default
50 )]
51 pub variant_text: Option<HashMap<String, Vec<String>>>,
52
53 pub price_unit: Option<String>,
58
59 pub sales_price: Option<i64>,
61
62 pub purchase_price: Option<i64>,
64
65 #[serde(default)]
69 pub properties: Vec<Property>,
70}
71
72impl_visitable_noop!(Commercial);
73
74#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
75#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
76#[cfg_attr(feature = "schema", schemars(deny_unknown_fields))]
77#[serde(rename_all = "camelCase")]
78pub struct Property {
79 pub property_id: String,
81
82 #[serde(deserialize_with = "crate::utils::deserialize_optional_map_without_null_values")]
84 pub property_text: Option<HashMap<String, String>>,
85
86 pub value_id: Option<String>,
88
89 #[serde(
92 deserialize_with = "crate::utils::deserialize_optional_map_without_null_values",
93 default
94 )]
95 pub value_text: Option<HashMap<String, String>>,
96
97 pub position: i32,
99
100 pub values: Option<Vec<Value>>,
102}
103
104#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
105#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
106#[cfg_attr(feature = "schema", schemars(deny_unknown_fields))]
107#[serde(rename_all = "camelCase")]
108pub struct Value {
110 pub value_id: String,
112
113 #[serde(
115 deserialize_with = "crate::utils::deserialize_optional_map_without_null_values",
116 default
117 )]
118 pub value_text: Option<HashMap<String, String>>,
119
120 pub position: i32,
122
123 pub values: Vec<Value>,
125}