From 99dabd3f2f81ffcf0b6f2b59e13ebb4502b2ccac Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Thu, 22 Oct 2020 17:44:38 -0400 Subject: Added product migration, better organization of DTOs, Entities, and Domain Models. Also made config loading/photo generation easier. --- dichroism/src/dtos/mod.rs | 70 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 dichroism/src/dtos/mod.rs (limited to 'dichroism/src/dtos/mod.rs') diff --git a/dichroism/src/dtos/mod.rs b/dichroism/src/dtos/mod.rs new file mode 100644 index 0000000..76b04c7 --- /dev/null +++ b/dichroism/src/dtos/mod.rs @@ -0,0 +1,70 @@ +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.path, + photo_base: p.photo_set.base.path, + photo_thumbnail: p.photo_set.thumbnail.path, + } + } +} -- cgit v1.2.3