summaryrefslogtreecommitdiff
path: root/dichroism/src/repo/entities/mod.rs
blob: 2cff899e90a4fe02392d8813ea1fab21a7167dba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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),
            ),
        }
    }
}