1use mongodb::change_stream::event::OperationType;
7
8#[derive(Debug, Eq, PartialEq, Hash, Clone, Copy)]
13pub enum Event {
14 Insert,
16 Update,
18 Delete,
20}
21
22impl Event {
23 pub fn event_type_str(&self) -> &'static str {
31 match self {
32 Self::Insert => "insert",
33 Self::Update => "update",
34 Self::Delete => "delete",
35 }
36 }
37}
38
39impl From<OperationType> for Event {
41 fn from(op_type: OperationType) -> Self {
42 match op_type {
43 OperationType::Insert => Event::Insert,
44 OperationType::Update => Event::Update,
45 OperationType::Delete => Event::Delete,
46 _ => Event::Insert,
49 }
50 }
51}
52
53#[cfg(test)]
54mod tests {
55 use super::*;
56 use mongodb::change_stream::event::OperationType;
57
58 #[test]
59 fn test_event_type_str() {
60 assert_eq!(Event::Insert.event_type_str(), "insert");
61 assert_eq!(Event::Update.event_type_str(), "update");
62 assert_eq!(Event::Delete.event_type_str(), "delete");
63 }
64
65 #[test]
66 fn test_from_operation_type() {
67 assert_eq!(Event::from(OperationType::Insert), Event::Insert);
68 assert_eq!(Event::from(OperationType::Update), Event::Update);
69 assert_eq!(Event::from(OperationType::Delete), Event::Delete);
70 }
71
72 #[test]
73 fn test_unsupported_operation_type() {
74 assert_eq!(Event::from(OperationType::Replace), Event::Insert);
76 assert_eq!(Event::from(OperationType::Invalidate), Event::Insert);
77 }
78}