summaryrefslogtreecommitdiff
path: root/dichroism/src/dtos
diff options
context:
space:
mode:
Diffstat (limited to 'dichroism/src/dtos')
-rw-r--r--dichroism/src/dtos/mod.rs75
-rw-r--r--dichroism/src/dtos/product_get.rs32
-rw-r--r--dichroism/src/dtos/product_patch.rs11
-rw-r--r--dichroism/src/dtos/product_post.rs10
4 files changed, 59 insertions, 69 deletions
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<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.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<Product> 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<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>,
+}
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,
+}