use serde::{Deserialize, Serialize};
use std::collections::HashSet;
use std::sync::Arc;
use tokio::sync::{Mutex, broadcast};
pub type Tx = broadcast::Sender<String>;
#[derive(Debug, Serialize, Deserialize)]
#[deprecated(
since = "0.80.3",
note = "Use X-Athena-Client header when connecting to WebSocket instead"
)]
pub struct SubscriptionRequest {
pub subscribe_to_organization_id: String,
}
#[derive(Debug, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum ClientControlMessage {
Travel {
#[serde(default)]
organization_id: Option<String>,
#[serde(default)]
since_seq: Option<u64>,
#[serde(default)]
since_ts_ms: Option<i64>,
#[serde(default)]
limit: Option<usize>,
},
}
#[derive(Clone)]
pub struct AppState {
pub tx: Tx,
pub active_subscribers: Arc<Mutex<HashSet<String>>>,
}