| 1 |
|
| 2 |
|
| 3 |
use tokio::task::JoinHandle; |
| 4 |
use tracing::info; |
| 5 |
|
| 6 |
use pom::db; |
| 7 |
|
| 8 |
use super::CheckInterval; |
| 9 |
|
| 10 |
pub(crate) fn spawn_prune_task( |
| 11 |
pool: &sqlx::SqlitePool, |
| 12 |
prune_days: i64, |
| 13 |
cancel: &tokio_util::sync::CancellationToken, |
| 14 |
) -> JoinHandle<()> { |
| 15 |
let pool = pool.clone(); |
| 16 |
let cancel = cancel.clone(); |
| 17 |
|
| 18 |
tokio::spawn(async move { |
| 19 |
let mut ticks = CheckInterval::new(86400, cancel); |
| 20 |
while ticks.next().await { |
| 21 |
match db::prune_old_records(&pool, prune_days).await { |
| 22 |
Ok(r) => info!( |
| 23 |
"Pruned {} health checks, {} test runs, {} test details, {} peer heartbeats, {} alerts, {} TLS checks, {} incidents, {} route checks, {} DNS checks, {} WHOIS checks, {} backup checks, {} systemd checks", |
| 24 |
r.health, |
| 25 |
r.tests, |
| 26 |
r.test_details, |
| 27 |
r.heartbeats, |
| 28 |
r.alerts, |
| 29 |
r.tls, |
| 30 |
r.incidents, |
| 31 |
r.routes, |
| 32 |
r.dns, |
| 33 |
r.whois, |
| 34 |
r.backups, |
| 35 |
r.systemd |
| 36 |
), |
| 37 |
Err(e) => tracing::error!("Prune failed: {e}"), |
| 38 |
} |
| 39 |
} |
| 40 |
}) |
| 41 |
} |
| 42 |
|