diff options
Diffstat (limited to 'dichroism/src/product_repo.rs')
-rw-r--r-- | dichroism/src/product_repo.rs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/dichroism/src/product_repo.rs b/dichroism/src/product_repo.rs index 93176b2..6f40b20 100644 --- a/dichroism/src/product_repo.rs +++ b/dichroism/src/product_repo.rs @@ -1,12 +1,27 @@ use crate::entities; use crate::models; +use crate::schema::*; use diesel::prelude::*; use diesel::result::Error; type DBConn = SqliteConnection; pub fn read_products(conn: &DBConn) -> Result<Vec<models::Product>, Error> { - use crate::schema::products::dsl::*; - let results = products.load::<entities::Product>(conn)?; - todo!() + let query = products::table.inner_join(photo_sets::table).select(( + products::id, + products::name, + products::description, + products::quantity, + products::cents, + products::featured, + photo_sets::original, + photo_sets::fullsize, + photo_sets::base, + photo_sets::thumbnail, + )); + Ok(query + .load::<entities::Product>(conn)? + .into_iter() + .map(|p| p.into()) + .collect::<Vec<models::Product>>()) } |