1#[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)]
3pub struct TownDetail {
4 pub id: String,
5 pub code: String,
7 pub country: String,
9 pub name: String,
11 pub section: String,
13 pub state_or_province: String,
15}
16impl crate::base::CimElement for TownDetail {
17 fn mrid(&self) -> &str { &self.id }
18 fn type_name(&self) -> &'static str { "TownDetail" }
19 fn as_any(&self) -> &dyn std::any::Any { self }
20 fn to_json_value(&self) -> serde_json::Value {
21 serde_json::to_value(self).unwrap_or(serde_json::Value::Null)
22 }
23 fn to_block(&self) -> crate::base::RdfBlock {
24 let mut block = crate::base::RdfBlock {
25 type_name: "TownDetail".to_string(),
26 mrid: self.id.clone(),
27 fields: std::collections::HashMap::new(),
28 duplicate_fields: std::collections::HashSet::new(),
29 };
30 if !self.code.is_empty() {
31 block.fields.insert("TownDetail.code".into(), crate::base::FieldValue::Text(self.code.clone()));
32 }
33 if !self.country.is_empty() {
34 block.fields.insert("TownDetail.country".into(), crate::base::FieldValue::Text(self.country.clone()));
35 }
36 if !self.name.is_empty() {
37 block.fields.insert("TownDetail.name".into(), crate::base::FieldValue::Text(self.name.clone()));
38 }
39 if !self.section.is_empty() {
40 block.fields.insert("TownDetail.section".into(), crate::base::FieldValue::Text(self.section.clone()));
41 }
42 if !self.state_or_province.is_empty() {
43 block.fields.insert("TownDetail.stateOrProvince".into(), crate::base::FieldValue::Text(self.state_or_province.clone()));
44 }
45 block
46 }
47}
48
49impl TownDetail {
50 pub fn from_block(b: &crate::base::RdfBlock) -> Self {
51 let mut obj = Self::default();
52 obj.id.clone_from(&b.mrid);
53 for (key, val) in &b.fields {
54 match key.as_str() {
55 "TownDetail.code" => {
56 match val {
57 crate::base::FieldValue::Text(sv) => { obj.code = sv.clone(); }
58 crate::base::FieldValue::TextList(svs) => {
59 if let Some(sv) = svs.last() { obj.code = sv.clone(); }
60 }
61 _ => {}
62 }
63 }
64 "TownDetail.country" => {
65 match val {
66 crate::base::FieldValue::Text(sv) => { obj.country = sv.clone(); }
67 crate::base::FieldValue::TextList(svs) => {
68 if let Some(sv) = svs.last() { obj.country = sv.clone(); }
69 }
70 _ => {}
71 }
72 }
73 "TownDetail.name" => {
74 match val {
75 crate::base::FieldValue::Text(sv) => { obj.name = sv.clone(); }
76 crate::base::FieldValue::TextList(svs) => {
77 if let Some(sv) = svs.last() { obj.name = sv.clone(); }
78 }
79 _ => {}
80 }
81 }
82 "TownDetail.section" => {
83 match val {
84 crate::base::FieldValue::Text(sv) => { obj.section = sv.clone(); }
85 crate::base::FieldValue::TextList(svs) => {
86 if let Some(sv) = svs.last() { obj.section = sv.clone(); }
87 }
88 _ => {}
89 }
90 }
91 "TownDetail.stateOrProvince" => {
92 match val {
93 crate::base::FieldValue::Text(sv) => { obj.state_or_province = sv.clone(); }
94 crate::base::FieldValue::TextList(svs) => {
95 if let Some(sv) = svs.last() { obj.state_or_province = sv.clone(); }
96 }
97 _ => {}
98 }
99 }
100 _ => {}
101 }
102 }
103 obj
104 }
105}