use crate::models; use crate::result::Result; #[derive(Debug, Deserialize)] pub struct NewProduct { pub name: String, pub quantity: u32, pub cents: u32, pub description: String, pub featured: bool, pub category_path: String, pub photo_data: String, } impl Into> for NewProduct { fn into(self) -> Result { Ok(models::Product { id: 0, name: self.name, quantity: self.quantity, cents: self.cents, description: self.description, featured: self.featured, category: self.category_path, photo_set: models::PhotoSet::from_data_uri(&self.photo_data)?, }) } } #[derive(Debug, Deserialize)] pub struct ProductPatch { pub name: Option, pub quantity: Option, pub cents: Option, pub description: Option, pub featured: Option, pub category_path: Option, pub photo_data: Option, } #[derive(Debug, Serialize)] pub struct Product { pub id: u32, pub name: String, pub description: String, pub cents: u32, pub quantity: u32, pub featured: bool, pub photo_base: String, pub photo_fullsize: String, pub photo_thumbnail: String, pub category: String, } impl From for Product { fn from(p: models::Product) -> Self { Product { id: p.id, name: p.name, description: p.description, cents: p.cents, quantity: p.quantity, featured: p.featured, category: p.category, photo_fullsize: p.photo_set.fullsize.filename, photo_base: p.photo_set.base.filename, photo_thumbnail: p.photo_set.thumbnail.filename, } } }