use background_jobs_core::{JobInfo, NewJobInfo, ReturnJobInfo, Stats, Storage}; use failure::Error; pub(crate) trait ActixStorage { fn new_job(&mut self, job: NewJobInfo) -> Result; fn request_job(&mut self, queue: &str, runner_id: u64) -> Result, Error>; fn return_job(&mut self, ret: ReturnJobInfo) -> Result<(), Error>; fn get_stats(&self) -> Result; } pub(crate) struct StorageWrapper(pub(crate) S) where S: Storage, S::Error: Send, E: std::error::Error + Send; impl ActixStorage for StorageWrapper where S: Storage, S::Error: Send, E: std::error::Error + Send + Sync + 'static, { fn new_job(&mut self, job: NewJobInfo) -> Result { self.0.new_job(job).map_err(Error::from) } fn request_job(&mut self, queue: &str, runner_id: u64) -> Result, Error> { self.0.request_job(queue, runner_id).map_err(Error::from) } fn return_job(&mut self, ret: ReturnJobInfo) -> Result<(), Error> { self.0.return_job(ret).map_err(Error::from) } fn get_stats(&self) -> Result { self.0.get_stats().map_err(Error::from) } }