summaryrefslogtreecommitdiff
path: root/dichroism/src/dtos/product_patch.rs
diff options
context:
space:
mode:
Diffstat (limited to 'dichroism/src/dtos/product_patch.rs')
-rw-r--r--dichroism/src/dtos/product_patch.rs22
1 files changed, 21 insertions, 1 deletions
diff --git a/dichroism/src/dtos/product_patch.rs b/dichroism/src/dtos/product_patch.rs
index ed8bf1a..f231469 100644
--- a/dichroism/src/dtos/product_patch.rs
+++ b/dichroism/src/dtos/product_patch.rs
@@ -1,3 +1,5 @@
+use crate::models::Product;
+
#[derive(Debug, Deserialize)]
pub struct ProductPatch {
pub id: i32,
@@ -7,5 +9,23 @@ pub struct ProductPatch {
pub description: Option<String>,
pub featured: Option<bool>,
pub category_path: Option<String>,
- pub photo_data: Option<String>,
+ pub photo_set: Option<i32>,
+}
+
+impl ProductPatch {
+ pub fn patch(self, product: &mut Product) {
+ if let Some(name) = self.name {
+ product.name = name;
+ }
+ if let Some(category) = self.category_path {
+ product.category = category;
+ }
+ if let Some(description) = self.description {
+ product.description = description;
+ }
+
+ product.quantity = self.quantity.unwrap_or(product.quantity);
+ product.cents = self.cents.unwrap_or(product.cents);
+ product.featured = self.featured.unwrap_or(product.featured);
+ }
}