pgx/trigger_support/
pg_trigger_option.rs1use crate::pg_sys;
2use crate::trigger_support::{PgTriggerError, TriggerEvent};
3
4pub enum PgTriggerOperation {
12 Insert,
14 Update,
16 Delete,
18 Truncate,
20}
21
22impl TryFrom<TriggerEvent> for PgTriggerOperation {
23 type Error = PgTriggerError;
24 fn try_from(event: TriggerEvent) -> Result<Self, Self::Error> {
25 match event.0 & pg_sys::TRIGGER_EVENT_OPMASK {
26 pg_sys::TRIGGER_EVENT_INSERT => Ok(Self::Insert),
27 pg_sys::TRIGGER_EVENT_DELETE => Ok(Self::Delete),
28 pg_sys::TRIGGER_EVENT_UPDATE => Ok(Self::Update),
29 pg_sys::TRIGGER_EVENT_TRUNCATE => Ok(Self::Truncate),
30 v => Err(PgTriggerError::InvalidPgTriggerOperation(v)),
31 }
32 }
33}
34
35impl ToString for PgTriggerOperation {
36 fn to_string(&self) -> String {
37 match self {
38 PgTriggerOperation::Insert => "INSERT",
39 PgTriggerOperation::Update => "UPDATE",
40 PgTriggerOperation::Delete => "DELETE",
41 PgTriggerOperation::Truncate => "TRUNCATE",
42 }
43 .to_string()
44 }
45}