yggdrasil/tasks/
session_cleanup.rs1use std::time::Duration;
6
7use tokio::time::interval;
8
9use crate::db::pool::get_conn;
10
11pub async fn run_cleanup() {
13 let mut ticker = interval(Duration::from_secs(3600));
15 loop {
16 match get_conn().await {
17 Ok(client) => {
18 match client
20 .execute("DELETE FROM sessions WHERE expires_at < NOW()", &[])
21 .await
22 {
23 Ok(_) => {
24 crate::cache::SESSION_CACHE.invalidate_all();
26 }
27 Err(e) => {
28 tracing::error!("Session cleanup error: {:?}", e);
29 }
30 }
31 }
32 Err(e) => {
33 tracing::error!("Failed to get DB connection for cleanup: {:?}", e);
34 }
35 }
36 ticker.tick().await;
37 }
38}