Skip to main content

schema_model/model/
trigger.rs

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