Skip to main content

schema_model/model/
constraint.rs

1use crate::model::types::DatabaseType;
2
3#[derive(Debug, Clone)]
4pub struct Constraint {
5    name: String,
6    sql: String,
7    database_type: DatabaseType,
8}
9
10impl Constraint {
11    pub fn new<S: Into<String>>(name: S, sql: S, database_type: DatabaseType) -> Self {
12        Self {
13            name: name.into(),
14            sql: sql.into(),
15            database_type,
16        }
17    }
18
19    pub fn name(&self) -> &str {
20        &self.name
21    }
22    pub fn sql(&self) -> &str {
23        &self.sql
24    }
25    pub fn database_type(&self) -> DatabaseType {
26        self.database_type
27    }
28}
29
30#[cfg(test)]
31mod tests {
32    use super::*;
33    use crate::model::types::DatabaseType;
34
35    #[test]
36    fn constructor_and_getters() {
37        let c = Constraint::new("ck", "check (x>0)", DatabaseType::Postgresql);
38        assert_eq!(c.name(), "ck");
39        assert_eq!(c.sql(), "check (x>0)");
40        assert_eq!(c.database_type(), DatabaseType::Postgresql);
41    }
42}