32 lines
715 B
Rust
32 lines
715 B
Rust
use std::time::Duration;
|
|
|
|
use async_trait::async_trait;
|
|
use domain::{errors::DomainError, ports::PeriodicJob};
|
|
|
|
use crate::context::AppContext;
|
|
|
|
pub struct RefreshSessionCleanupJob {
|
|
ctx: AppContext,
|
|
}
|
|
|
|
impl RefreshSessionCleanupJob {
|
|
pub fn new(ctx: AppContext) -> Self {
|
|
Self { ctx }
|
|
}
|
|
}
|
|
|
|
#[async_trait]
|
|
impl PeriodicJob for RefreshSessionCleanupJob {
|
|
fn interval(&self) -> Duration {
|
|
Duration::from_secs(86400)
|
|
}
|
|
|
|
async fn run(&self) -> Result<(), DomainError> {
|
|
let n = self.ctx.repos.refresh_session.delete_expired().await?;
|
|
if n > 0 {
|
|
tracing::info!("refresh session cleanup: removed {n} expired sessions");
|
|
}
|
|
Ok(())
|
|
}
|
|
}
|