use super::models::{NewProductImg, ProductImg}; use diesel::prelude::*; use diesel::result::Error; type DBConn = SqliteConnection; pub fn read_images(conn: &DBConn) -> Result, Error> { use crate::schema::images::dsl::*; let results = images.load::(conn)?; Ok(results) } fn read_images_by_path(conn: &DBConn, path: &str) -> Result, Error> { use crate::schema::images::dsl::*; let results = images.filter(path.eq(path)).load::(conn)?; Ok(results) } pub fn read_image_by_path(conn: &DBConn, path: &str) -> Result, Error> { use crate::schema::images::dsl::*; let results = images .filter(path.eq(path)) .limit(1) .load::(conn)?; Ok(results.first().cloned()) } pub fn read_image_by_id(conn: &DBConn, id: i32) -> Result, Error> { use crate::schema::images::dsl::*; let results = images.filter(id.eq(id)).limit(1).load::(conn)?; Ok(results.first().cloned()) } pub fn create_image(conn: &DBConn, new_image: NewProductImg) -> Result, Error> { use super::schema::images; diesel::insert_into(images::table) .values(&new_image) .execute(conn)?; read_image_by_path(conn, &new_image.path) } pub fn update_image() { todo!() } pub fn delete_image() { todo!() } #[cfg(test)] mod tests { #[test] fn test() -> std::result::Result<(), Box> { Ok(()) } }