use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum PostsuperEventType {
MessageRemoved,
BulkDeleted,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PostsuperEvent {
pub event_type: PostsuperEventType,
pub timestamp: DateTime<Utc>,
pub queue_id: Option<String>,
pub message_count: Option<u32>,
pub description: Option<String>,
}
impl PostsuperEvent {
pub fn message_removed(timestamp: DateTime<Utc>, queue_id: String) -> Self {
Self {
event_type: PostsuperEventType::MessageRemoved,
timestamp,
queue_id: Some(queue_id),
message_count: None,
description: Some("removed".to_string()),
}
}
pub fn bulk_deleted(timestamp: DateTime<Utc>, message_count: u32) -> Self {
Self {
event_type: PostsuperEventType::BulkDeleted,
timestamp,
queue_id: None,
message_count: Some(message_count),
description: Some(format!(
"Deleted: {} message{}",
message_count,
if message_count != 1 { "s" } else { "" }
)),
}
}
}