apalis-redis 1.0.0

Background task processing for rust using apalis and redis
Documentation
use std::time::Duration;

use apalis_core::backend::{Backend, Vacuum};
use redis::aio::ConnectionLike;

use crate::{RedisStorage, error::Error};

impl<Args, Conn> Vacuum for RedisStorage<Args, Conn>
where
    Args: Unpin + Send + Sync + 'static,
    Conn: ConnectionLike + Clone + Send + Sync + 'static,
    Self: Backend<Error = Error>,
{
    async fn vacuum(&mut self) -> Result<usize, Self::Error> {
        let vacuum_script = redis::Script::new(include_str!("../../lua/vacuum.lua"));
        let items = vacuum_script
            .key(self.persist.config.job_data_hash())
            .key(self.persist.config.job_meta_hash())
            .invoke_async(self.get_connection())
            .await?;
        Ok(items)
    }
    async fn vacuum_before(&mut self, duration: Duration) -> Result<usize, Self::Error> {
        let vacuum_script = redis::Script::new(include_str!("../../lua/vacuum_before.lua"));
        let items = vacuum_script
            .key(self.persist.config.job_data_hash())
            .key(self.persist.config.job_meta_hash())
            .arg(duration.as_secs())
            .invoke_async(self.get_connection())
            .await?;
        Ok(items)
    }
}