1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct Message {
8 pub id: String,
9 pub payload: Vec<u8>,
10 pub priority: u8,
11 pub retry_count: u32,
12 pub max_retries: u32,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub deadline: Option<u64>,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct QueueStats {
20 pub depth: usize,
21 pub pending: usize,
22 pub max_depth: usize,
23 pub total_published: u64,
24 pub total_consumed: u64,
25 pub total_acked: u64,
26 pub total_nacked: u64,
27 pub dlq_count: usize,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct Event {
33 pub offset: u64,
34 #[serde(rename = "event_type")]
35 pub event: String,
36 pub data: serde_json::Value,
37 pub timestamp: Option<u64>,
38}
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
42pub struct StreamStats {
43 pub room: String,
44 pub max_offset: u64,
45 pub total_events: u64,
46 pub created_at: u64,
47 pub last_activity: u64,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct PubSubMessage {
53 pub topic: String,
54 pub data: serde_json::Value,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub priority: Option<u8>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub headers: Option<std::collections::HashMap<String, String>>,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct KVStats {
64 pub total_keys: usize,
65 pub total_memory_bytes: usize,
66 pub hit_rate: f64,
67}