use std::time::Duration;
use tokio::time::{interval, MissedTickBehavior};
use crate::auth::purge_expired_sessions;
use crate::orm::Db;
pub fn spawn_housekeeping(db: Db) {
spawn_session_sweeper(db.clone());
}
pub fn spawn_session_sweeper(db: Db) {
log::info!("background session sweeper spawned (10 min interval)");
tokio::spawn(async move {
let mut tick = interval(Duration::from_secs(600));
tick.set_missed_tick_behavior(MissedTickBehavior::Delay);
tick.tick().await;
loop {
tick.tick().await;
match purge_expired_sessions(&db).await {
Ok(0) => {}
Ok(n) => log::info!("swept {n} expired sessions"),
Err(e) => log::warn!("session sweep failed: {e}"),
}
}
});
}