use super::schema::{cart_items, customer, product, rating, transaction}; use chrono::naive::{NaiveDate, NaiveDateTime}; use diesel::{Insertable, Queryable}; use serde::{Deserialize, Serialize}; /* Member */ #[derive(Queryable, Serialize)] pub struct Customer { pub id: i32, pub username: String, pub password: String, pub phone_number: String, pub email_id: String, pub address: Option, } #[derive(Insertable, Deserialize)] #[table_name = "customer"] pub struct NewCustomer { pub username: String, pub password: String, pub phone_number: String, pub email_id: String, #[serde(skip_serializing_if = "Option::is_none")] pub address: Option, } /* Product */ #[derive(Queryable, Serialize)] pub struct Product { pub id: i32, pub name: String, pub kind: Option, pub price: f32, pub description: Option, pub src: Option, pub ios_src: Option, } #[derive(Insertable, Deserialize)] #[table_name = "product"] pub struct NewProduct { pub name: String, #[serde(skip_serializing_if = "Option::is_none")] pub kind: Option, pub price: f32, #[serde(skip_serializing_if = "Option::is_none")] pub description: Option, #[serde(skip_serializing_if = "Option::is_none")] pub src: Option, #[serde(skip_serializing_if = "Option::is_none")] pub ios_src: Option, } #[derive(Deserialize)] pub struct UpdateProduct { pub name: String, pub kind: Option, pub price: f32, pub description: Option, } /* Cart Items */ #[derive(Queryable, Serialize)] pub struct CartItem { pub cart_id: i32, pub product_id: i32, pub quantity: Option, } #[derive(Insertable, Deserialize)] #[table_name = "cart_items"] pub struct AddCartItem { pub cart_id: i32, pub product_id: i32, pub quantity: Option, } /* Rating */ #[derive(Queryable, Serialize)] pub struct Rating { pub id: i32, pub comment_text: Option, pub comment_date: Option, pub product_id: Option, pub customer_id: Option, pub stars: Option, } #[derive(Insertable, Deserialize)] #[table_name = "rating"] pub struct AddRating { #[serde(skip_serializing_if = "Option::is_none")] pub comment_text: Option, #[serde(skip_serializing_if = "Option::is_none")] pub stars: Option, pub product_id: i32, pub customer_id: i32, } /* Transaction */ #[derive(Queryable, Serialize)] pub struct Transaction { pub id: i32, pub payment_type: String, pub amount: f32, pub customer_id: Option, pub order_date: NaiveDate, } #[derive(Insertable, Deserialize)] #[table_name = "transaction"] pub struct AddTransaction { pub payment_type: String, pub amount: f32, pub customer_id: Option, }