use crate::core::Xid;
use async_trait::async_trait;
use bytes::Bytes;
use crate::core::queue::QueueError;
#[async_trait]
pub trait JobHandle: Send + Sync {
fn id(&self) -> Xid;
fn job_type(&self) -> &str;
fn payload(&self) -> Bytes;
fn retries(&self) -> u32;
async fn complete(mut self) -> Result<(), QueueError>;
async fn fail(mut self) -> Result<(), QueueError>;
async fn dead_queue(mut self) -> Result<(), QueueError>;
}