diff options
Diffstat (limited to 'dichroism/src/dtos')
| -rw-r--r-- | dichroism/src/dtos/mod.rs | 70 | 
1 files changed, 70 insertions, 0 deletions
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<Result<models::Product>> for NewProduct { +    fn into(self) -> Result<models::Product> { +        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<String>, +    pub quantity: Option<i32>, +    pub cents: Option<i32>, +    pub description: Option<String>, +    pub featured: Option<bool>, +    pub category_path: Option<String>, +    pub photo_data: Option<String>, +} + +#[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<models::Product> 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, +        } +    } +}  |