Skip to main content

safe_migrate/model/
trigger.rs

1use crate::ast::identifiers::ObjectId;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
5pub enum TriggerEnableMode {
6    Disabled,
7    #[default]
8    Origin,
9    Replica,
10    Always,
11}
12
13impl TriggerEnableMode {
14    pub fn from_pg_code(code: &str) -> Option<Self> {
15        match code {
16            "D" => Some(Self::Disabled),
17            "O" => Some(Self::Origin),
18            "R" => Some(Self::Replica),
19            "A" => Some(Self::Always),
20            _ => None,
21        }
22    }
23}
24
25#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
26pub struct TriggerState {
27    pub id: ObjectId,
28    pub table_id: ObjectId,
29    pub enabled_mode: TriggerEnableMode,
30    pub generation: u64,
31}
32
33#[derive(Debug, Clone, PartialEq)]
34pub enum TriggerOverlay {
35    Present(TriggerState),
36    Dropped,
37}