use crate::pg_sys;
use crate::trigger_support::{PgTriggerError, TriggerEvent};
pub enum PgTriggerWhen {
Before,
After,
InsteadOf,
}
impl TryFrom<TriggerEvent> for PgTriggerWhen {
type Error = PgTriggerError;
fn try_from(event: TriggerEvent) -> Result<Self, Self::Error> {
match event.0 & pg_sys::TRIGGER_EVENT_TIMINGMASK {
pg_sys::TRIGGER_EVENT_BEFORE => Ok(Self::Before),
pg_sys::TRIGGER_EVENT_AFTER => Ok(Self::After),
pg_sys::TRIGGER_EVENT_INSTEAD => Ok(Self::InsteadOf),
v => Err(PgTriggerError::InvalidPgTriggerWhen(v)),
}
}
}
impl ToString for PgTriggerWhen {
fn to_string(&self) -> String {
match self {
PgTriggerWhen::Before => "BEFORE",
PgTriggerWhen::After => "AFTER",
PgTriggerWhen::InsteadOf => "INSTEAD OF",
}
.to_string()
}
}