From 99dabd3f2f81ffcf0b6f2b59e13ebb4502b2ccac Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Thu, 22 Oct 2020 17:44:38 -0400 Subject: Added product migration, better organization of DTOs, Entities, and Domain Models. Also made config loading/photo generation easier. --- dichroism/src/models/photo.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'dichroism/src/models/photo.rs') diff --git a/dichroism/src/models/photo.rs b/dichroism/src/models/photo.rs index 2e8b3bf..dee6288 100644 --- a/dichroism/src/models/photo.rs +++ b/dichroism/src/models/photo.rs @@ -1,5 +1,27 @@ +use crate::config::CONFIG_INSTANCE; +use crate::error::DichroismError; +use crate::result::Result; +use image::DynamicImage; +use std::path::PathBuf; +use uuid::Uuid; + #[derive(Debug, Queryable, Serialize, Clone)] pub struct Photo { - pub id: i32, pub path: String, } + +impl Photo { + pub fn from_image(image: &DynamicImage) -> Result { + let base_name = Uuid::new_v3(&Uuid::NAMESPACE_OID, &image.to_bytes()) + .to_hyphenated() + .to_string(); + let mut path = PathBuf::from(&CONFIG_INSTANCE.img_root); + path.push(base_name); + path.set_extension("jpg"); + image.save(&path)?; + + Ok(Self { + path: path.to_str().ok_or(DichroismError::ImageWrite)?.to_string(), + }) + } +} -- cgit v1.2.3