use crate::config::AppConfig; use crate::error::{AppError, AppResult}; impl AppConfig { pub fn nats_url(&self) -> AppResult { self.get_env::("APP_NATS_URL")? .filter(|s| !s.is_empty()) .ok_or_else(|| AppError::Config("APP_NATS_URL is not set".into())) } pub fn nats_username(&self) -> AppResult> { self.get_env::("APP_NATS_USERNAME") } pub fn nats_password(&self) -> AppResult> { self.get_env::("APP_NATS_PASSWORD") } pub fn nats_token(&self) -> AppResult> { self.get_env::("APP_NATS_TOKEN") } pub fn nats_tls_enabled(&self) -> AppResult { self.get_env_or("APP_NATS_TLS_ENABLED", false) } pub fn nats_connection_timeout_secs(&self) -> AppResult { self.get_env_or("APP_NATS_CONNECTION_TIMEOUT", 5) } pub fn nats_ping_interval_secs(&self) -> AppResult { self.get_env_or("APP_NATS_PING_INTERVAL", 20) } pub fn nats_reconnect_delay_secs(&self) -> AppResult { self.get_env_or("APP_NATS_RECONNECT_DELAY", 2) } pub fn nats_max_reconnects(&self) -> AppResult { self.get_env_or("APP_NATS_MAX_RECONNECTS", 60usize) } pub fn nats_stream_prefix(&self) -> AppResult { self.get_env_or("APP_NATS_STREAM_PREFIX", "APPKS".to_string()) } pub fn nats_default_ack_wait_secs(&self) -> AppResult { self.get_env_or("APP_NATS_ACK_WAIT_SECS", 30) } pub fn nats_default_max_deliver(&self) -> AppResult { self.get_env_or("APP_NATS_MAX_DELIVER", 5i64) } }