use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(default, deny_unknown_fields)] pub struct AppChatSettings { pub enabled: bool, pub topic_prefix: String, pub room_group_id: String, pub user_group_id: String, pub user_view_group_id: String, pub live_group_id: String, pub dedup_ttl_seconds: u64, pub idempotency_ttl_seconds: u64, pub upload_ttl_seconds: u64, pub presence_ttl_seconds: u64, pub unread_ttl_seconds: u64, } impl Default for AppChatSettings { fn default() -> Self { Self { enabled: true, topic_prefix: "chat".to_string(), room_group_id: "chat.room.v1".to_string(), user_group_id: "chat.user.v1".to_string(), user_view_group_id: "chat.user.view.v1".to_string(), live_group_id: "chat.live.v1".to_string(), dedup_ttl_seconds: 24 * 3600, idempotency_ttl_seconds: 24 * 3600, upload_ttl_seconds: 3600, presence_ttl_seconds: 120, unread_ttl_seconds: 30 * 24 * 3600, } } } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(default, deny_unknown_fields)] pub struct GatewaySettings { pub ws_heartbeat_interval_seconds: u64, pub ws_idle_timeout_seconds: u64, pub ws_auth_timeout_seconds: u64, pub max_connections_per_user: usize, pub subscriber_id: String, pub topic_prefix: String, pub upload_presign_ttl_seconds: u64, pub typing_debounce_seconds: u64, } impl Default for GatewaySettings { fn default() -> Self { Self { ws_heartbeat_interval_seconds: 30, ws_idle_timeout_seconds: 120, ws_auth_timeout_seconds: 10, max_connections_per_user: 8, subscriber_id: "chat.gateway".to_string(), topic_prefix: "chat".to_string(), upload_presign_ttl_seconds: 900, typing_debounce_seconds: 2, } } }