apalis_core/storage/
mod.rsuse std::time::Duration;
use futures::Future;
use crate::{
request::{Parts, Request},
task::task_id::TaskId,
};
pub trait Storage {
type Job;
type Error;
type Context: Default;
fn push(
&mut self,
job: Self::Job,
) -> impl Future<Output = Result<Parts<Self::Context>, Self::Error>> + Send {
self.push_request(Request::new(job))
}
fn push_request(
&mut self,
req: Request<Self::Job, Self::Context>,
) -> impl Future<Output = Result<Parts<Self::Context>, Self::Error>> + Send;
fn schedule(
&mut self,
job: Self::Job,
on: i64,
) -> impl Future<Output = Result<Parts<Self::Context>, Self::Error>> + Send {
self.schedule_request(Request::new(job), on)
}
fn schedule_request(
&mut self,
request: Request<Self::Job, Self::Context>,
on: i64,
) -> impl Future<Output = Result<Parts<Self::Context>, Self::Error>> + Send;
fn len(&mut self) -> impl Future<Output = Result<i64, Self::Error>> + Send;
fn fetch_by_id(
&mut self,
job_id: &TaskId,
) -> impl Future<Output = Result<Option<Request<Self::Job, Self::Context>>, Self::Error>> + Send;
fn update(
&mut self,
job: Request<Self::Job, Self::Context>,
) -> impl Future<Output = Result<(), Self::Error>> + Send;
fn reschedule(
&mut self,
job: Request<Self::Job, Self::Context>,
wait: Duration,
) -> impl Future<Output = Result<(), Self::Error>> + Send;
fn is_empty(&mut self) -> impl Future<Output = Result<bool, Self::Error>> + Send;
fn vacuum(&mut self) -> impl Future<Output = Result<usize, Self::Error>> + Send;
}