use std::time::Duration;
use tokio::time::{interval, MissedTickBehavior};
use crate::auth::purge_expired_sessions;
use crate::auth::recovery::purge_expired_reset_tokens;
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 housekeeping 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}"),
}
match purge_expired_reset_tokens(&db).await {
Ok(0) => {}
Ok(n) => log::info!(
target: "rustio_admin::recovery_sweeper",
"swept {n} expired reset tokens"
),
Err(e) => log::warn!(
target: "rustio_admin::recovery_sweeper",
"recovery-token sweep failed: {e}"
),
}
}
});
}