reinhardt_core/signals/
db_events.rs1use super::core::SignalName;
7use super::registry::get_signal;
8use super::signal::Signal;
9use serde::{Deserialize, Serialize};
10use std::collections::HashMap;
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct DbEvent {
15 pub event_type: String,
17 pub table: String,
19 pub id: Option<String>,
21 pub data: HashMap<String, String>,
23}
24
25impl DbEvent {
26 pub fn new(event_type: impl Into<String>, table: impl Into<String>) -> Self {
28 Self {
29 event_type: event_type.into(),
30 table: table.into(),
31 id: None,
32 data: HashMap::new(),
33 }
34 }
35
36 pub fn with_id(mut self, id: impl Into<String>) -> Self {
38 self.id = Some(id.into());
39 self
40 }
41
42 pub fn with_data(mut self, key: impl Into<String>, value: impl Into<String>) -> Self {
44 self.data.insert(key.into(), value.into());
45 self
46 }
47}
48
49pub fn before_insert() -> Signal<DbEvent> {
51 get_signal::<DbEvent>(SignalName::DB_BEFORE_INSERT)
52}
53
54pub fn after_insert() -> Signal<DbEvent> {
56 get_signal::<DbEvent>(SignalName::DB_AFTER_INSERT)
57}
58
59pub fn before_update() -> Signal<DbEvent> {
61 get_signal::<DbEvent>(SignalName::DB_BEFORE_UPDATE)
62}
63
64pub fn after_update() -> Signal<DbEvent> {
66 get_signal::<DbEvent>(SignalName::DB_AFTER_UPDATE)
67}
68
69pub fn before_delete() -> Signal<DbEvent> {
71 get_signal::<DbEvent>(SignalName::DB_BEFORE_DELETE)
72}
73
74pub fn after_delete() -> Signal<DbEvent> {
76 get_signal::<DbEvent>(SignalName::DB_AFTER_DELETE)
77}