1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct Car {
16 #[serde(rename = "weight")]
18 pub weight: i32,
19 #[serde(rename = "length")]
21 pub length: i32,
22 #[serde(rename = "width")]
24 pub width: i32,
25 #[serde(rename = "height")]
27 pub height: i32,
28 #[serde(rename = "brand")]
30 pub brand: String,
31 #[serde(rename = "model")]
33 pub model: String,
34 #[serde(rename = "specialType", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
35 pub special_type: Option<Option<String>>,
36 #[serde(rename = "roofWidth")]
37 pub roof_width: i32,
38 #[serde(rename = "textileRoof", skip_serializing_if = "Option::is_none")]
40 pub textile_roof: Option<bool>,
41 #[serde(rename = "rack", skip_serializing_if = "Option::is_none")]
42 pub rack: Option<Box<models::CarRack>>,
43 #[serde(rename = "attachedItems", skip_serializing_if = "Option::is_none")]
45 pub attached_items: Option<Vec<String>>,
46 #[serde(rename = "contactName", skip_serializing_if = "Option::is_none")]
48 pub contact_name: Option<String>,
49 #[serde(rename = "contactDetail", skip_serializing_if = "Option::is_none")]
50 pub contact_detail: Option<Box<models::ContactDetail>>,
51 #[serde(rename = "licensePlate")]
53 pub license_plate: String,
54}
55
56impl Car {
57 pub fn new(weight: i32, length: i32, width: i32, height: i32, brand: String, model: String, roof_width: i32, license_plate: String) -> Car {
58 Car {
59 weight,
60 length,
61 width,
62 height,
63 brand,
64 model,
65 special_type: None,
66 roof_width,
67 textile_roof: None,
68 rack: None,
69 attached_items: None,
70 contact_name: None,
71 contact_detail: None,
72 license_plate,
73 }
74 }
75}
76