postfix_log_parser/events/
postsuper.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6pub enum PostsuperEventType {
7 MessageRemoved,
9 BulkDeleted,
11}
12
13#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15pub struct PostsuperEvent {
16 pub event_type: PostsuperEventType,
18 pub timestamp: DateTime<Utc>,
20 pub queue_id: Option<String>,
22 pub message_count: Option<u32>,
24 pub description: Option<String>,
26}
27
28impl PostsuperEvent {
29 pub fn message_removed(timestamp: DateTime<Utc>, queue_id: String) -> Self {
31 Self {
32 event_type: PostsuperEventType::MessageRemoved,
33 timestamp,
34 queue_id: Some(queue_id),
35 message_count: None,
36 description: Some("removed".to_string()),
37 }
38 }
39
40 pub fn bulk_deleted(timestamp: DateTime<Utc>, message_count: u32) -> Self {
42 Self {
43 event_type: PostsuperEventType::BulkDeleted,
44 timestamp,
45 queue_id: None,
46 message_count: Some(message_count),
47 description: Some(format!(
48 "Deleted: {} message{}",
49 message_count,
50 if message_count != 1 { "s" } else { "" }
51 )),
52 }
53 }
54}