Skip to main content

photon_backend/models/
subscription.rs

1//! Subscription model.
2
3use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5
6/// Subscription mode.
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
8#[serde(rename_all = "lowercase")]
9pub enum SubscriptionMode {
10    /// Durable: checkpoints maintained, survives restart.
11    #[default]
12    Durable,
13    /// Ephemeral: no checkpoints, lost on restart.
14    Ephemeral,
15}
16
17/// Subscription handler registration.
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct Subscription {
20    /// Unique subscription ID (UUID).
21    pub subscription_id: String,
22    /// Subscription name (unique per topic, required for durable).
23    pub subscription_name: String,
24    /// Topic name.
25    pub topic_name: String,
26    /// Optional key filter.
27    pub topic_key_filter: Option<String>,
28    /// Whether the subscription is enabled.
29    pub enabled: bool,
30    /// Durable or ephemeral.
31    pub mode: SubscriptionMode,
32    /// When the subscription was created.
33    pub created_at: DateTime<Utc>,
34}