use tokio::{task, time}; use crate::DResult; use crate::db; use log::warn; async fn cleanup_session_once(pool: db::DBPool) -> DResult<()> { for listener in db::get_dead_listeners(pool.clone()).await? { db::cleanup_listener(pool.clone(), listener).await?; } Ok(()) } fn start_session_cleanup_task(pool: db::DBPool) -> DResult<()> { task::spawn(async move { loop { match cleanup_session_once(pool.clone()).await { Ok(()) => {} Err(e) => { warn!("Error cleaning up sessions: {}", e); time::sleep(time::Duration::from_secs(1)).await; } } } }); Ok(()) } pub fn start_regular_tasks(pool: db::DBPool) -> DResult<()> { start_session_cleanup_task(pool) }