use crate::config::AppConfig;
use crate::db::DbPool;
use std::sync::Arc;
#[derive(Clone)]
pub struct AppState {
pub db: DbPool,
pub config: Arc<AppConfig>,
pub nats: Option<Arc<async_nats::Client>>,
pub start_time: std::time::Instant,
}
impl AppState {
pub fn new(db: DbPool, config: AppConfig, nats: Option<async_nats::Client>) -> Self {
Self {
db,
config: Arc::new(config),
nats: nats.map(Arc::new),
start_time: std::time::Instant::now(),
}
}
pub fn uptime_seconds(&self) -> u64 {
self.start_time.elapsed().as_secs()
}
pub fn has_nats(&self) -> bool {
self.nats.is_some()
}
}
#[cfg(test)]
mod tests {
#[test]
fn test_uptime() {
}
}