summaryrefslogtreecommitdiff
path: root/dichroism/src/repo/product_repo.rs
diff options
context:
space:
mode:
Diffstat (limited to 'dichroism/src/repo/product_repo.rs')
-rw-r--r--dichroism/src/repo/product_repo.rs82
1 files changed, 0 insertions, 82 deletions
diff --git a/dichroism/src/repo/product_repo.rs b/dichroism/src/repo/product_repo.rs
deleted file mode 100644
index 487f96e..0000000
--- a/dichroism/src/repo/product_repo.rs
+++ /dev/null
@@ -1,82 +0,0 @@
-use super::entities::*;
-use super::DBConn;
-use crate::models;
-use diesel::{insert_into, prelude::*, result::Error, update};
-
-pub fn store(conn: &DBConn, mut product: models::Product) -> Result<models::Product, Error> {
- use crate::schema::products::dsl::*;
- if let Some(product_id) = product.id {
- // update
- let form = ProductForm::from(product.clone());
- update(products.filter(id.eq(product_id)))
- .set(&form)
- .execute(conn)?;
- } else {
- // insert
- product.id = Some(find_next_id(conn));
- let form = ProductForm::from(product.clone());
- insert_into(products).values(&form).execute(conn)?;
- }
-
- Ok(product)
-}
-
-pub fn find_all(conn: &DBConn) -> Result<Vec<models::Product>, Error> {
- use crate::schema::*;
- let query = products::table.inner_join(photo_sets::table).select((
- products::id,
- products::name,
- products::description,
- products::quantity,
- products::cents,
- products::featured,
- products::category,
- photo_sets::id,
- photo_sets::original,
- photo_sets::fullsize,
- photo_sets::base,
- photo_sets::thumbnail,
- ));
- Ok(query
- .load::<Product>(conn)?
- .into_iter()
- .map(|p| p.into())
- .collect::<Vec<models::Product>>())
-}
-
-pub fn find(conn: &DBConn, dbid: i32) -> Result<Option<models::Product>, Error> {
- use crate::schema::*;
- let query = products::table
- .inner_join(photo_sets::table)
- .filter(products::id.eq(dbid))
- .select((
- products::id,
- products::name,
- products::description,
- products::quantity,
- products::cents,
- products::featured,
- products::category,
- photo_sets::id,
- photo_sets::original,
- photo_sets::fullsize,
- photo_sets::base,
- photo_sets::thumbnail,
- ));
- let product = query.first::<Product>(conn).map(|p| p.into());
- match product {
- Ok(p) => Ok(Some(p)),
- Err(Error::NotFound) => Ok(None),
- Err(e) => Err(e),
- }
-}
-
-fn find_next_id(conn: &DBConn) -> i32 {
- use crate::schema::products::dsl::*;
- let last_id = products
- .select(id)
- .order(id.desc())
- .first::<i32>(conn)
- .unwrap_or(0);
- last_id + 1
-}