From f73712c0986ab880c4bc85d717b4a21f90b666e5 Mon Sep 17 00:00:00 2001 From: asonix Date: Mon, 8 Jan 2024 16:28:55 -0600 Subject: [PATCH] jobs-sled: Update to new storage api --- jobs-sled/src/lib.rs | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/jobs-sled/src/lib.rs b/jobs-sled/src/lib.rs index 1884686..b957837 100644 --- a/jobs-sled/src/lib.rs +++ b/jobs-sled/src/lib.rs @@ -90,6 +90,10 @@ pub struct Storage { impl background_jobs_core::Storage for Storage { type Error = Error; + async fn info(&self, job_id: Uuid) -> Result> { + self.get(job_id) + } + async fn push(&self, job: NewJobInfo) -> Result { self.insert(job.build()) } @@ -121,28 +125,29 @@ impl background_jobs_core::Storage for Storage { self.set_heartbeat(job_id, runner_id) } - async fn complete(&self, ReturnJobInfo { id, result }: ReturnJobInfo) -> Result<()> { + async fn complete(&self, ReturnJobInfo { id, result }: ReturnJobInfo) -> Result { let mut job = if let Some(job) = self.remove_job(id)? { job } else { - return Ok(()); + return Ok(true); }; match result { JobResult::Success => { // ok - Ok(()) + Ok(true) } JobResult::Unexecuted | JobResult::Unregistered => { // TODO: handle - Ok(()) + Ok(true) } JobResult::Failure => { if job.prepare_retry() { self.insert(job)?; + Ok(false) + } else { + Ok(true) } - - Ok(()) } } } @@ -159,6 +164,16 @@ impl Storage { }) } + fn get(&self, job_id: Uuid) -> Result> { + if let Some(ivec) = self.jobs.get(job_id.as_bytes())? { + let job_info = serde_cbor::from_slice(&ivec)?; + + Ok(Some(job_info)) + } else { + Ok(None) + } + } + fn notifier(&self, queue: String) -> Arc { self.queues .lock()