postfix_log_parser/events/
postsuper.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4/// Postsuper事件类型
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6pub enum PostsuperEventType {
7    /// 邮件删除事件 - 删除单个邮件
8    MessageRemoved,
9    /// 批量删除事件 - 显示删除统计
10    BulkDeleted,
11}
12
13/// Postsuper事件
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15pub struct PostsuperEvent {
16    /// 事件类型
17    pub event_type: PostsuperEventType,
18    /// 时间戳
19    pub timestamp: DateTime<Utc>,
20    /// 队列ID(对于单个邮件删除)
21    pub queue_id: Option<String>,
22    /// 删除的邮件数量(对于批量删除)
23    pub message_count: Option<u32>,
24    /// 操作描述
25    pub description: Option<String>,
26}
27
28impl PostsuperEvent {
29    /// 创建邮件删除事件
30    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    /// 创建批量删除事件
41    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}