1use serde::{Deserialize, Serialize};
2use uuid::Uuid;
3
4#[cfg(feature = "backend")]
5use crate::schema::price;
6
7#[cfg_attr(feature = "backend", derive(Queryable))]
8pub struct Price {
9 pub price_id: Uuid,
10 pub publication_id: Uuid,
11 pub currency_code: CurrencyCode,
12 pub unit_price: f64,
13}
14
15#[cfg_attr(
16 feature = "backend",
17 derive(juniper::GraphQLInputObject, Insertable),
18 table_name = "price"
19)]
20pub struct NewPrice {
21 pub publication_id: Uuid,
22 pub currency_code: CurrencyCode,
23 pub unit_price: f64,
24}
25
26#[cfg_attr(
27 feature = "backend",
28 derive(juniper::GraphQLInputObject, AsChangeset),
29 changeset_options(treat_none_as_null = "true"),
30 table_name = "price"
31)]
32pub struct PatchPrice {
33 pub price_id: Uuid,
34 pub publication_id: Uuid,
35 pub currency_code: CurrencyCode,
36 pub unit_price: f64,
37}
38
39#[cfg_attr(feature = "backend", derive(DbEnum, juniper::GraphQLEnum))]
40#[cfg_attr(feature = "backend", DieselType = "Currency_code")]
41#[derive(Debug, PartialEq, Deserialize, Serialize)]
42pub enum CurrencyCode {
43 Adp,
44 Aed,
45 Afa,
46 Afn,
47 Alk,
48 All,
49 Amd,
50 Ang,
51 Aoa,
52 Aok,
53 Aon,
54 Aor,
55 Ara,
56 Arp,
57 Ars,
58 Ary,
59 Ats,
60 Aud,
61 Awg,
62 Aym,
63 Azm,
64 Azn,
65 Bad,
66 Bam,
67 Bbd,
68 Bdt,
69 Bec,
70 Bef,
71 Bel,
72 Bgj,
73 Bgk,
74 Bgl,
75 Bgn,
76 Bhd,
77 Bif,
78 Bmd,
79 Bnd,
80 Bob,
81 Bop,
82 Bov,
83 Brb,
84 Brc,
85 Bre,
86 Brl,
87 Brn,
88 Brr,
89 Bsd,
90 Btn,
91 Buk,
92 Bwp,
93 Byb,
94 Byn,
95 Byr,
96 Bzd,
97 Cad,
98 Cdf,
99 Chc,
100 Che,
101 Chf,
102 Chw,
103 Clf,
104 Clp,
105 Cny,
106 Cop,
107 Cou,
108 Crc,
109 Csd,
110 Csj,
111 Csk,
112 Cuc,
113 Cup,
114 Cve,
115 Cyp,
116 Czk,
117 Ddm,
118 Dem,
119 Djf,
120 Dkk,
121 Dop,
122 Dzd,
123 Ecs,
124 Ecv,
125 Eek,
126 Egp,
127 Ern,
128 Esa,
129 Esb,
130 Esp,
131 Etb,
132 Eur,
133 Fim,
134 Fjd,
135 Fkp,
136 Frf,
137 Gbp,
138 Gek,
139 Gel,
140 Ghc,
141 Ghp,
142 Ghs,
143 Gip,
144 Gmd,
145 Gne,
146 Gnf,
147 Gns,
148 Gqe,
149 Grd,
150 Gtq,
151 Gwe,
152 Gwp,
153 Gyd,
154 Hkd,
155 Hnl,
156 Hrd,
157 Hrk,
158 Htg,
159 Huf,
160 Idr,
161 Iep,
162 Ilp,
163 Ilr,
164 Ils,
165 Inr,
166 Iqd,
167 Irr,
168 Isj,
169 Isk,
170 Itl,
171 Jmd,
172 Jod,
173 Jpy,
174 Kes,
175 Kgs,
176 Khr,
177 Kmf,
178 Kpw,
179 Krw,
180 Kwd,
181 Kyd,
182 Kzt,
183 Laj,
184 Lak,
185 Lbp,
186 Lkr,
187 Lrd,
188 Lsl,
189 Lsm,
190 Ltl,
191 Ltt,
192 Luc,
193 Luf,
194 Lul,
195 Lvl,
196 Lvr,
197 Lyd,
198 Mad,
199 Mdl,
200 Mga,
201 Mgf,
202 Mkd,
203 Mlf,
204 Mmk,
205 Mnt,
206 Mop,
207 Mro,
208 Mru,
209 Mtl,
210 Mtp,
211 Mur,
212 Mvq,
213 Mvr,
214 Mwk,
215 Mxn,
216 Mxp,
217 Mxv,
218 Myr,
219 Mze,
220 Mzm,
221 Mzn,
222 Nad,
223 Ngn,
224 Nic,
225 Nio,
226 Nlg,
227 Nok,
228 Npr,
229 Nzd,
230 Omr,
231 Pab,
232 Peh,
233 Pei,
234 Pen,
235 Pes,
236 Pgk,
237 Php,
238 Pkr,
239 Pln,
240 Plz,
241 Pte,
242 Pyg,
243 Qar,
244 Rhd,
245 Rok,
246 Rol,
247 Ron,
248 Rsd,
249 Rub,
250 Rur,
251 Rwf,
252 Sar,
253 Sbd,
254 Scr,
255 Sdd,
256 Sdg,
257 Sdp,
258 Sek,
259 Sgd,
260 Shp,
261 Sit,
262 Skk,
263 Sll,
264 Sos,
265 Srd,
266 Srg,
267 Ssp,
268 Std,
269 Stn,
270 Sur,
271 Svc,
272 Syp,
273 Szl,
274 Thb,
275 Tjr,
276 Tjs,
277 Tmm,
278 Tmt,
279 Tnd,
280 Top,
281 Tpe,
282 Trl,
283 Try,
284 Ttd,
285 Twd,
286 Tzs,
287 Uah,
288 Uak,
289 Ugs,
290 Ugw,
291 Ugx,
292 Usd,
293 Usn,
294 Uss,
295 Uyi,
296 Uyn,
297 Uyp,
298 Uyu,
299 Uyw,
300 Uzs,
301 Veb,
302 Vef,
303 Ves,
304 Vnc,
305 Vnd,
306 Vuv,
307 Wst,
308 Xaf,
309 Xag,
310 Xau,
311 Xba,
312 Xbb,
313 Xbc,
314 Xbd,
315 Xcd,
316 Xdr,
317 Xeu,
318 Xfo,
319 Xfu,
320 Xof,
321 Xpd,
322 Xpf,
323 Xpt,
324 Xre,
325 Xsu,
326 Xts,
327 Xua,
328 Xxx,
329 Ydd,
330 Yer,
331 Yud,
332 Yum,
333 Yun,
334 Zal,
335 Zar,
336 Zmk,
337 Zmw,
338 Zrn,
339 Zrz,
340 Zwc,
341 Zwd,
342 Zwl,
343 Zwn,
344 Zwr,
345}
346
347impl Default for CurrencyCode {
348 fn default() -> CurrencyCode {
349 CurrencyCode::Gbp
350 }
351}
352
353#[test]
354fn test_currencycode_default() {
355 let currencycode: CurrencyCode = Default::default();
356 assert_eq!(currencycode, CurrencyCode::Gbp);
357}