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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
use serde::{Deserialize, Serialize};
use strum::EnumIter;

use crate::core::wizform::{WizformDBModel, WizformElementModel};

#[derive(Debug, Serialize, Deserialize, sqlx::FromRow)]
pub struct Book {
    pub id: String,
    pub name: String,
    pub initialized: bool,
    pub directory: String,
    pub downloadable: bool
}

#[derive(Debug, Serialize, Deserialize)]
pub struct BookCreationParams {
    pub id: String,
    pub name: String,
    pub directory: String,
    pub elements: Vec<WizformElementModel>,
    pub filters: Vec<WizformFilterDBModel>
}

#[derive(Debug, Serialize, Deserialize)]
pub struct WizformsCreationParams {
    pub book_id: String,
    pub wizforms: Vec<WizformDBModel>
}

#[derive(Debug, Serialize, Deserialize, Clone, sqlx::Type, EnumIter)]
#[repr(i32)]
pub enum WizformFilterType {
    NoFilter,
    CustomFilter1,
    CustomFilter2,
    CustomFilter3,
    CustomFilter4,
    CustomFilter5,
    CustomFilter6,
    CustomFilter7,
    CustomFilter8,
    CustomFilter9,
    CustomFilter10
}

#[derive(Debug, Serialize, Deserialize, sqlx::FromRow)]
pub struct WizformFilterDBModel {
    pub book_id: String,
    pub name: String,
    pub filter_type: WizformFilterType,
    pub enabled: bool 
}