yggdrasil/tasks/
ip_purge.rs1use std::time::Duration;
6
7use tokio::time::interval;
8
9use crate::db::pool::get_conn;
10
11pub async fn run_purge() {
13 let mut ticker = interval(Duration::from_secs(86400));
15 loop {
16 match get_conn().await {
17 Ok(client) => {
18 if let Err(e) = client
20 .execute("UPDATE comments SET ip_address = NULL, user_agent = NULL WHERE created_at < NOW() - INTERVAL '90 days' AND ip_address IS NOT NULL", &[])
21 .await
22 {
23 tracing::error!("IP purge error: {:?}", e);
24 }
25 }
26 Err(e) => {
27 tracing::error!("Failed to get DB connection for IP purge: {:?}", e);
28 }
29 }
30 ticker.tick().await;
31 }
32}