Register a new trigger (called by CREATE TRIGGER DDL).
(&self, trigger: StoredTrigger)
| 91 | |
| 92 | /// Register a new trigger (called by CREATE TRIGGER DDL). |
| 93 | pub fn register(&self, trigger: StoredTrigger) { |
| 94 | let mut map = match self.by_collection.write() { |
| 95 | Ok(m) => m, |
| 96 | Err(p) => p.into_inner(), |
| 97 | }; |
| 98 | let key = (trigger.tenant_id, trigger.collection.clone()); |
| 99 | let list = map.entry(key).or_default(); |
| 100 | |
| 101 | // Remove existing trigger with same name (for CREATE OR REPLACE). |
| 102 | list.retain(|t| t.name != trigger.name); |
| 103 | list.push(trigger); |
| 104 | list.sort_by(|a, b| a.sort_key().cmp(&b.sort_key())); |
| 105 | } |
| 106 | |
| 107 | /// Unregister a trigger (called by DROP TRIGGER DDL). |
| 108 | pub fn unregister(&self, tenant_id: u64, name: &str) { |