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
use strum::{AsRefStr, EnumString};

#[derive(Debug, EnumString, AsRefStr, Default)]
pub enum IndexMethod {
    #[default]
    #[strum(serialize = "btree")]
    Btree,
    #[strum(serialize = "hash")]
    Hash,
}

pub struct Join {
    pub reference_field_name: String,
    pub field_name: String,
    pub field_type_name: String,
    pub object_name: String,
    pub reference_field_type_name: String,
}

impl Join {
    pub fn field_id(&self) -> String {
        format!("{}.{}", self.object_name, self.field_name)
    }
}

pub struct Unique(pub bool);

pub struct Index {
    pub column_name: String,
    pub method: IndexMethod,
}

impl Index {
    pub fn new(column_name: String) -> Self {
        Self {
            column_name,
            method: IndexMethod::default(),
        }
    }
}