wave_api/inputs/
customer.rs1use serde::Serialize;
2
3use super::AddressInput;
4use crate::enums::CurrencyCode;
5
6#[derive(Debug, Clone, Default, Serialize)]
8#[serde(rename_all = "camelCase")]
9pub struct CustomerShippingDetailsInput {
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub name: Option<String>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub address: Option<AddressInput>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub phone: Option<String>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub instructions: Option<String>,
18}
19
20#[derive(Debug, Clone, Serialize)]
22#[serde(rename_all = "camelCase")]
23pub struct CustomerCreateInput {
24 pub business_id: String,
25 pub name: String,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub first_name: Option<String>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub last_name: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub email: Option<String>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub phone: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub mobile: Option<String>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub fax: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub toll_free: Option<String>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub website: Option<String>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub display_id: Option<String>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub internal_notes: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub address: Option<AddressInput>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub currency: Option<CurrencyCode>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub shipping_details: Option<CustomerShippingDetailsInput>,
52}
53
54impl CustomerCreateInput {
55 pub fn new(business_id: impl Into<String>, name: impl Into<String>) -> Self {
57 Self {
58 business_id: business_id.into(),
59 name: name.into(),
60 first_name: None,
61 last_name: None,
62 email: None,
63 phone: None,
64 mobile: None,
65 fax: None,
66 toll_free: None,
67 website: None,
68 display_id: None,
69 internal_notes: None,
70 address: None,
71 currency: None,
72 shipping_details: None,
73 }
74 }
75
76 pub fn first_name(mut self, v: impl Into<String>) -> Self {
77 self.first_name = Some(v.into());
78 self
79 }
80 pub fn last_name(mut self, v: impl Into<String>) -> Self {
81 self.last_name = Some(v.into());
82 self
83 }
84 pub fn email(mut self, v: impl Into<String>) -> Self {
85 self.email = Some(v.into());
86 self
87 }
88 pub fn phone(mut self, v: impl Into<String>) -> Self {
89 self.phone = Some(v.into());
90 self
91 }
92 pub fn address(mut self, v: AddressInput) -> Self {
93 self.address = Some(v);
94 self
95 }
96 pub fn currency(mut self, v: CurrencyCode) -> Self {
97 self.currency = Some(v);
98 self
99 }
100}
101
102#[derive(Debug, Clone, Serialize)]
104#[serde(rename_all = "camelCase")]
105pub struct CustomerPatchInput {
106 pub id: String,
107 #[serde(skip_serializing_if = "Option::is_none")]
108 pub name: Option<String>,
109 #[serde(skip_serializing_if = "Option::is_none")]
110 pub first_name: Option<String>,
111 #[serde(skip_serializing_if = "Option::is_none")]
112 pub last_name: Option<String>,
113 #[serde(skip_serializing_if = "Option::is_none")]
114 pub email: Option<String>,
115 #[serde(skip_serializing_if = "Option::is_none")]
116 pub phone: Option<String>,
117 #[serde(skip_serializing_if = "Option::is_none")]
118 pub mobile: Option<String>,
119 #[serde(skip_serializing_if = "Option::is_none")]
120 pub fax: Option<String>,
121 #[serde(skip_serializing_if = "Option::is_none")]
122 pub toll_free: Option<String>,
123 #[serde(skip_serializing_if = "Option::is_none")]
124 pub website: Option<String>,
125 #[serde(skip_serializing_if = "Option::is_none")]
126 pub display_id: Option<String>,
127 #[serde(skip_serializing_if = "Option::is_none")]
128 pub internal_notes: Option<String>,
129 #[serde(skip_serializing_if = "Option::is_none")]
130 pub address: Option<AddressInput>,
131 #[serde(skip_serializing_if = "Option::is_none")]
132 pub currency: Option<CurrencyCode>,
133 #[serde(skip_serializing_if = "Option::is_none")]
134 pub shipping_details: Option<CustomerShippingDetailsInput>,
135}
136
137impl CustomerPatchInput {
138 pub fn new(id: impl Into<String>) -> Self {
140 Self {
141 id: id.into(),
142 name: None,
143 first_name: None,
144 last_name: None,
145 email: None,
146 phone: None,
147 mobile: None,
148 fax: None,
149 toll_free: None,
150 website: None,
151 display_id: None,
152 internal_notes: None,
153 address: None,
154 currency: None,
155 shipping_details: None,
156 }
157 }
158
159 pub fn name(mut self, v: impl Into<String>) -> Self {
160 self.name = Some(v.into());
161 self
162 }
163 pub fn email(mut self, v: impl Into<String>) -> Self {
164 self.email = Some(v.into());
165 self
166 }
167}
168
169#[derive(Debug, Clone, Serialize)]
171#[serde(rename_all = "camelCase")]
172pub struct CustomerDeleteInput {
173 pub id: String,
174}
175
176impl CustomerDeleteInput {
177 pub fn new(id: impl Into<String>) -> Self {
178 Self { id: id.into() }
179 }
180}