diff options
Diffstat (limited to 'dichroism/src/repo/entities')
| -rw-r--r-- | dichroism/src/repo/entities/mod.rs | 36 | 
1 files changed, 36 insertions, 0 deletions
| diff --git a/dichroism/src/repo/entities/mod.rs b/dichroism/src/repo/entities/mod.rs new file mode 100644 index 0000000..2cff899 --- /dev/null +++ b/dichroism/src/repo/entities/mod.rs @@ -0,0 +1,36 @@ +use crate::models; +use crate::schema::products; + +#[derive(Debug, Clone, Identifiable, Queryable, Serialize)] +pub struct Product { +    pub id: i32, +    pub name: String, +    pub description: String, +    pub quantity: i32, +    pub cents: i32, +    pub featured: i32, +    pub original: String, +    pub fullsize: String, +    pub base: String, +    pub thumbnail: String, +} + +impl Into<models::Product> for Product { +    fn into(self) -> models::Product { +        models::Product { +            id: self.id as u32, +            name: self.name, +            description: self.description, +            quantity: self.quantity as u32, +            cents: self.cents as u32, +            featured: self.featured != 0, // TODO: is this safe? +            category: String::new(),      // TODO: real category +            photo_set: models::PhotoSet::from_photos( +                models::Photo::from_filename(self.original), +                models::Photo::from_filename(self.fullsize), +                models::Photo::from_filename(self.base), +                models::Photo::from_filename(self.thumbnail), +            ), +        } +    } +} |