cscart_rs/types/
cart.rs

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 user_data: UserData, // Can also be an array TODO custom deserializer
18    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}