1use crate::types::address::{BillingAddress, ShippingAddress};
2use crate::types::user::User;
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5use std::collections::HashMap;
6
7#[derive(Deserialize, Serialize, Debug)]
8pub struct Cart {
9 pub user_id: String,
10 pub firstname: Option<String>,
11 pub lastname: Option<String>,
12 pub date: String,
13 pub ip_address: String,
14 pub cart_products: String,
15 pub total: String,
16 pub order_id: Option<String>,
17 pub products: Option<Vec<CartProduct>>,
19}
20
21#[derive(Deserialize, Serialize, Debug)]
22pub struct CartProduct {
23 pub item_id: String,
24 pub item_type: String,
25 pub product_id: String,
26 pub amount: String,
27 pub price: String,
28 pub product: String,
29 pub extra: HashMap<String, Value>,
30}
31
32#[derive(Deserialize, Serialize, Debug)]
33pub struct UserData {
34 #[serde(flatten)]
35 pub user_details: User,
36 #[serde(flatten)]
37 pub billing_address: BillingAddress,
38 #[serde(flatten)]
39 pub shipping_address: ShippingAddress,
40 pub referrer: Option<String>,
41 pub phone: Option<String>,
42 pub fax: String,
43 pub url: String,
44 pub tax_exempt: String,
45 pub lang_code: String,
46 pub birthday: String,
47 pub purchase_timestamp_from: Option<String>,
48 pub purchase_timestamp_to: Option<String>,
49 pub reponsible_email: Option<String>,
50 pub janrain_identifier: Option<String>,
51 pub usergroups: Vec<String>,
52 pub profile_id: Option<String>,
53 pub profile_type: Option<String>,
54 pub points: i32,
55}