From 3e1eadbbfdca1b2c0cb32ba4c8e1160a60e0ccb8 Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Sat, 31 Oct 2020 10:14:31 -0400 Subject: All basic functionality implemented. --- dichroism/src/dtos/mod.rs | 75 +++---------------------------------- dichroism/src/dtos/product_get.rs | 32 ++++++++++++++++ dichroism/src/dtos/product_patch.rs | 11 ++++++ dichroism/src/dtos/product_post.rs | 10 +++++ 4 files changed, 59 insertions(+), 69 deletions(-) create mode 100644 dichroism/src/dtos/product_get.rs create mode 100644 dichroism/src/dtos/product_patch.rs create mode 100644 dichroism/src/dtos/product_post.rs (limited to 'dichroism/src/dtos') diff --git a/dichroism/src/dtos/mod.rs b/dichroism/src/dtos/mod.rs index d7e1ab5..cc8edd1 100644 --- a/dichroism/src/dtos/mod.rs +++ b/dichroism/src/dtos/mod.rs @@ -1,70 +1,7 @@ -use crate::models; -use crate::result::Result; +mod product_get; +mod product_patch; +mod product_post; -#[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, - } - } -} +pub use product_get::*; +pub use product_patch::*; +pub use product_post::*; diff --git a/dichroism/src/dtos/product_get.rs b/dichroism/src/dtos/product_get.rs new file mode 100644 index 0000000..3f68eef --- /dev/null +++ b/dichroism/src/dtos/product_get.rs @@ -0,0 +1,32 @@ +use crate::models::Product; + +#[derive(Debug, Serialize)] +pub struct ProductGet { + pub id: i32, + pub name: String, + pub description: String, + pub cents: i32, + pub quantity: i32, + pub featured: bool, + pub photo_base: String, + pub photo_fullsize: String, + pub photo_thumbnail: String, + pub category: String, +} + +impl From for ProductGet { + fn from(p: Product) -> Self { + Self { + id: p.id.unwrap_or(-1), + 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(), + } + } +} diff --git a/dichroism/src/dtos/product_patch.rs b/dichroism/src/dtos/product_patch.rs new file mode 100644 index 0000000..ed8bf1a --- /dev/null +++ b/dichroism/src/dtos/product_patch.rs @@ -0,0 +1,11 @@ +#[derive(Debug, Deserialize)] +pub struct ProductPatch { + pub id: i32, + pub name: Option, + pub quantity: Option, + pub cents: Option, + pub description: Option, + pub featured: Option, + pub category_path: Option, + pub photo_data: Option, +} diff --git a/dichroism/src/dtos/product_post.rs b/dichroism/src/dtos/product_post.rs new file mode 100644 index 0000000..ef07536 --- /dev/null +++ b/dichroism/src/dtos/product_post.rs @@ -0,0 +1,10 @@ +#[derive(Debug, Deserialize)] +pub struct ProductPost { + pub name: String, + pub quantity: i32, + pub cents: i32, + pub description: String, + pub featured: bool, + pub category_path: String, + pub photo_data: String, +} -- cgit v1.2.3