From c96d98b9f4e8456e9a2c007ea74b95378ac56f40 Mon Sep 17 00:00:00 2001 From: Sholom Ber <46351743+Himmelschmidt@users.noreply.github.com> Date: Fri, 26 Dec 2025 12:05:44 -0500 Subject: [PATCH 1/8] feat: use SqlDateTime abstraction from apalis-sql - Add chrono/time feature flags for datetime library selection - Replace direct chrono usage with SqlDateTime and SqlDateTimeExt - Remove hardcoded chrono dependency in favor of feature-gated support - Update to apalis-sql path dependency for datetime abstraction Related to apalis-dev/apalis#655 --- Cargo.lock | 90 ++++++++++++++++++++++++++++++---- Cargo.toml | 11 +++-- src/from_row.rs | 15 +++--- src/lib.rs | 11 +---- src/queries/keep_alive.rs | 4 +- src/queries/list_workers.rs | 14 +++--- src/queries/register_worker.rs | 4 +- src/queries/wait_for.rs | 4 +- src/shared.rs | 6 +-- src/sink.rs | 5 +- 10 files changed, 113 insertions(+), 51 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 064dc41..9e5f88e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,7 +23,7 @@ version = "1.0.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f93be0eb33b912f5e66004d0b756423c285273259068b1c80a71d7842658189b" dependencies = [ - "apalis-core", + "apalis-core 1.0.0-rc.1", "futures-util", "pin-project", "thiserror", @@ -37,11 +37,28 @@ version = "0.1.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ed6bb8e64c360ed4ad666a6cbc42e9e6df73087461dc4071f510a3af284637" dependencies = [ - "apalis-core", + "apalis-core 1.0.0-rc.1", "serde", "serde_json", ] +[[package]] +name = "apalis-core" +version = "1.0.0-beta.2" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "futures-timer", + "futures-util", + "pin-project", + "serde", + "serde_json", + "thiserror", + "tower-layer", + "tower-service", +] + [[package]] name = "apalis-core" version = "1.0.0-rc.1" @@ -67,11 +84,10 @@ version = "1.0.0-rc.1" dependencies = [ "apalis", "apalis-codec", - "apalis-core", + "apalis-core 1.0.0-beta.2", "apalis-sql", "apalis-workflow", "async-std", - "chrono", "futures", "futures-util", "once_cell", @@ -86,15 +102,14 @@ dependencies = [ [[package]] name = "apalis-sql" -version = "1.0.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ade5d8faa60e9975b01d3bb1ebc5028589aa4986365eaa4d080d30ed3b5141f" +version = "1.0.0-beta.2" dependencies = [ - "apalis-core", + "apalis-core 1.0.0-beta.2", "chrono", "serde", "serde_json", "thiserror", + "time", ] [[package]] @@ -103,7 +118,7 @@ version = "0.1.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc024da2d5d3ab59cc9fea099a2e2b20de5ff608f2e287abcb73aa45e4966a89" dependencies = [ - "apalis-core", + "apalis-core 1.0.0-rc.1", "futures", "petgraph", "serde", @@ -464,6 +479,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + [[package]] name = "digest" version = "0.10.7" @@ -1199,6 +1224,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.46" @@ -1445,6 +1476,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -1893,6 +1930,7 @@ dependencies = [ "sha2", "smallvec", "thiserror", + "time", "tokio", "tokio-stream", "tracing", @@ -1978,6 +2016,7 @@ dependencies = [ "sqlx-core", "stringprep", "thiserror", + "time", "tracing", "whoami", ] @@ -2016,6 +2055,7 @@ dependencies = [ "sqlx-core", "stringprep", "thiserror", + "time", "tracing", "whoami", ] @@ -2041,6 +2081,7 @@ dependencies = [ "serde_urlencoded", "sqlx-core", "thiserror", + "time", "tracing", "url", ] @@ -2129,6 +2170,37 @@ dependencies = [ "syn", ] +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinystr" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index 07a652e..cd5830b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,21 +14,22 @@ categories = ["asynchronous", "database", "network-programming"] publish = true [features] -default = ["migrate", "tokio-comp"] +default = ["migrate", "tokio-comp", "chrono"] migrate = ["sqlx/migrate", "sqlx/macros"] async-std-comp = ["async-std", "sqlx/runtime-async-std-rustls"] async-std-comp-native-tls = ["async-std", "sqlx/runtime-async-std-native-tls"] tokio-comp = ["tokio", "sqlx/runtime-tokio-rustls"] tokio-comp-native-tls = ["tokio", "sqlx/runtime-tokio-native-tls"] +chrono = ["apalis-sql/chrono", "sqlx/chrono"] +time = ["apalis-sql/time", "sqlx/time"] [dependencies] -apalis-core = { version = "1.0.0-rc.1", default-features = false, features = [ +apalis-core = { path = "../apalis/apalis-core", version = "1.0.0-beta.2", default-features = false, features = [ "sleep", ] } -apalis-sql = { version = "1.0.0-rc.1", default-features = false } +apalis-sql = { path = "../apalis/apalis-sql", version = "1.0.0-beta.2", default-features = false } apalis-codec = { version = "0.1.0-rc.1", features = ["json"] } serde = { version = "1", features = ["derive"], default-features = false } -chrono = { version = "0.4", features = ["serde"], default-features = false } pin-project = "1.1.10" serde_json = "1" futures = "0.3.30" @@ -44,7 +45,7 @@ ulid = { version = "1", features = ["serde"] } [dependencies.sqlx] version = "0.8.1" default-features = false -features = ["chrono", "postgres", "json"] +features = ["postgres", "json"] [dev-dependencies] tokio = { version = "1", features = ["macros", "rt-multi-thread"] } diff --git a/src/from_row.rs b/src/from_row.rs index d4a1dc3..f988429 100644 --- a/src/from_row.rs +++ b/src/from_row.rs @@ -1,4 +1,5 @@ -use chrono::{DateTime, Utc}; +use apalis_sql::{SqlDateTime, TaskRow}; + #[derive(Debug)] pub struct PgTaskRow { pub job: Option>, @@ -7,19 +8,19 @@ pub struct PgTaskRow { pub status: Option, pub attempts: Option, pub max_attempts: Option, - pub run_at: Option>, + pub run_at: Option, pub last_result: Option, - pub lock_at: Option>, + pub lock_at: Option, pub lock_by: Option, - pub done_at: Option>, + pub done_at: Option, pub priority: Option, pub metadata: Option, } -impl TryInto for PgTaskRow { +impl TryInto for PgTaskRow { type Error = sqlx::Error; - fn try_into(self) -> Result { - Ok(apalis_sql::from_row::TaskRow { + fn try_into(self) -> Result { + Ok(TaskRow { job: self.job.unwrap_or_default(), id: self .id diff --git a/src/lib.rs b/src/lib.rs index 34f49af..3b9ca05 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,7 +6,7 @@ use std::{fmt::Debug, marker::PhantomData}; use apalis_codec::json::JsonCodec; use apalis_core::{ - backend::{Backend, BackendExt, TaskStream, codec::Codec, queue::Queue}, + backend::{Backend, BackendExt, TaskStream, codec::Codec}, features_table, layers::Stack, task::{Task, task_id::TaskId}, @@ -36,7 +36,7 @@ mod ack; mod fetcher; mod from_row; -pub type PgContext = apalis_sql::context::SqlContext; +pub type PgContext = apalis_sql::context::SqlContext; mod queries; pub mod shared; pub mod sink; @@ -251,9 +251,6 @@ where type Codec = Decode; type CompactStream = TaskStream, Self::Error>; - fn get_queue(&self) -> Queue { - self.config.queue().clone() - } fn poll_compact(self, worker: &WorkerContext) -> Self::CompactStream { self.poll_basic(worker).boxed() } @@ -348,10 +345,6 @@ where type Codec = Decode; type CompactStream = TaskStream, Self::Error>; - fn get_queue(&self) -> Queue { - self.config.queue().clone() - } - fn poll_compact(self, worker: &WorkerContext) -> Self::CompactStream { self.poll_with_notify(worker).boxed() } diff --git a/src/queries/keep_alive.rs b/src/queries/keep_alive.rs index c0a5a4a..3332093 100644 --- a/src/queries/keep_alive.rs +++ b/src/queries/keep_alive.rs @@ -1,5 +1,5 @@ use apalis_core::worker::context::WorkerContext; -use chrono::Utc; +use apalis_sql::{SqlDateTime, SqlDateTimeExt}; use futures::{FutureExt, Stream, stream}; use sqlx::PgPool; @@ -36,7 +36,7 @@ pub async fn initial_heartbeat( storage_type: &str, ) -> Result<(), sqlx::Error> { reenqueue_orphaned(pool.clone(), config.clone()).await?; - let last_seen = Utc::now(); + let last_seen = SqlDateTime::now(); register_worker( pool, config.queue().to_string(), diff --git a/src/queries/list_workers.rs b/src/queries/list_workers.rs index adff2a5..71b921c 100644 --- a/src/queries/list_workers.rs +++ b/src/queries/list_workers.rs @@ -1,5 +1,5 @@ use apalis_core::backend::{BackendExt, ListWorkers, RunningWorker}; -use chrono::{DateTime, Utc}; +use apalis_sql::{SqlDateTime, SqlDateTimeExt}; use futures::TryFutureExt; use ulid::Ulid; @@ -9,8 +9,8 @@ pub struct WorkerRow { pub worker_type: String, pub storage_name: String, pub layers: Option, - pub last_seen: DateTime, - pub started_at: Option>, + pub last_seen: SqlDateTime, + pub started_at: Option, } use crate::{CompactType, PgContext, PostgresStorage}; @@ -42,8 +42,8 @@ where .map(|w| RunningWorker { id: w.id, backend: w.storage_name, - started_at: w.started_at.map(|t| t.timestamp()).unwrap_or_default() as u64, - last_heartbeat: w.last_seen.timestamp() as u64, + started_at: w.started_at.map(|t| t.to_unix_timestamp()).unwrap_or_default() as u64, + last_heartbeat: w.last_seen.to_unix_timestamp() as u64, layers: w.layers.unwrap_or_default(), queue: w.worker_type, }) @@ -73,8 +73,8 @@ where .map(|w| RunningWorker { id: w.id, backend: w.storage_name, - started_at: w.started_at.map(|t| t.timestamp()).unwrap_or_default() as u64, - last_heartbeat: w.last_seen.timestamp() as u64, + started_at: w.started_at.map(|t| t.to_unix_timestamp()).unwrap_or_default() as u64, + last_heartbeat: w.last_seen.to_unix_timestamp() as u64, layers: w.layers.unwrap_or_default(), queue: w.worker_type, }) diff --git a/src/queries/register_worker.rs b/src/queries/register_worker.rs index 641c4f5..7ed0f40 100644 --- a/src/queries/register_worker.rs +++ b/src/queries/register_worker.rs @@ -1,12 +1,12 @@ use apalis_core::worker::context::WorkerContext; -use chrono::{DateTime, Utc}; +use apalis_sql::SqlDateTime; use sqlx::PgPool; pub async fn register( pool: PgPool, worker_type: String, worker: WorkerContext, - last_seen: DateTime, + last_seen: SqlDateTime, backend_type: &str, ) -> Result<(), sqlx::Error> { let res = sqlx::query_file!( diff --git a/src/queries/wait_for.rs b/src/queries/wait_for.rs index 4c9b707..4171007 100644 --- a/src/queries/wait_for.rs +++ b/src/queries/wait_for.rs @@ -24,7 +24,7 @@ where BackendExt, Result: DeserializeOwned, { - type ResultStream = BoxStream<'static, Result, Self::Error>>; + type ResultStream = BoxStream<'static, Result, Self::Error>>; fn wait_for( &self, task_ids: impl IntoIterator>, @@ -80,7 +80,7 @@ where fn check_status( &self, task_ids: impl IntoIterator> + Send, - ) -> impl Future>, Self::Error>> + Send { + ) -> impl Future>, Self::Error>> + Send { let pool = self.pool.clone(); let ids: Vec = task_ids.into_iter().map(|id| id.to_string()).collect(); diff --git a/src/shared.rs b/src/shared.rs index 46a08a5..87ff19e 100644 --- a/src/shared.rs +++ b/src/shared.rs @@ -19,7 +19,7 @@ use crate::{ use crate::{from_row::PgTaskRow, sink::PgSink}; use apalis_codec::json::JsonCodec; use apalis_core::{ - backend::{Backend, BackendExt, TaskStream, codec::Codec, queue::Queue, shared::MakeShared}, + backend::{Backend, BackendExt, TaskStream, codec::Codec, shared::MakeShared}, layers::Stack, worker::{context::WorkerContext, ext::ack::AcknowledgeLayer}, }; @@ -222,10 +222,6 @@ where type Codec = Decode; type CompactStream = TaskStream, Self::Error>; - fn get_queue(&self) -> Queue { - self.config.queue().clone() - } - fn poll_compact(self, worker: &WorkerContext) -> Self::CompactStream { self.poll_shared(worker).boxed() } diff --git a/src/sink.rs b/src/sink.rs index 2c0565f..3bbba02 100644 --- a/src/sink.rs +++ b/src/sink.rs @@ -1,6 +1,5 @@ use apalis_codec::json::JsonCodec; -use apalis_sql::config::Config; -use chrono::{DateTime, Utc}; +use apalis_sql::{SqlDateTime, SqlDateTimeExt, config::Config}; use futures::{ FutureExt, Sink, TryFutureExt, future::{BoxFuture, Shared}, @@ -64,7 +63,7 @@ where .unwrap_or(Ulid::new().to_string()), ); job_data.push(task.args); - run_ats.push(DateTime::from_timestamp(task.parts.run_at as i64, 0).unwrap_or(Utc::now())); + run_ats.push(::from_unix_timestamp(task.parts.run_at as i64)); priorities.push(task.parts.ctx.priority()); max_attempts_vec.push(task.parts.ctx.max_attempts()); metadata.push(serde_json::Value::Object(task.parts.ctx.meta().clone())); From 3a26ef9c4655870df1f7988c67341ed4d874bcfb Mon Sep 17 00:00:00 2001 From: Sholom Ber <46351743+Himmelschmidt@users.noreply.github.com> Date: Tue, 30 Dec 2025 10:18:53 -0500 Subject: [PATCH 2/8] chore: update apalis deps to git and add get_queue impl --- Cargo.lock | 80 ++++++++++++++----------------------- Cargo.toml | 10 ++--- src/lib.rs | 12 +++++- src/queries/list_workers.rs | 10 ++++- src/queries/wait_for.rs | 4 +- src/shared.rs | 6 ++- src/sink.rs | 4 +- 7 files changed, 63 insertions(+), 63 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e5f88e..7b7733a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,10 +20,9 @@ dependencies = [ [[package]] name = "apalis" version = "1.0.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93be0eb33b912f5e66004d0b756423c285273259068b1c80a71d7842658189b" +source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" dependencies = [ - "apalis-core 1.0.0-rc.1", + "apalis-core", "futures-util", "pin-project", "thiserror", @@ -34,36 +33,17 @@ dependencies = [ [[package]] name = "apalis-codec" version = "0.1.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ed6bb8e64c360ed4ad666a6cbc42e9e6df73087461dc4071f510a3af284637" +source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" dependencies = [ - "apalis-core 1.0.0-rc.1", + "apalis-core", "serde", "serde_json", ] -[[package]] -name = "apalis-core" -version = "1.0.0-beta.2" -dependencies = [ - "futures-channel", - "futures-core", - "futures-sink", - "futures-timer", - "futures-util", - "pin-project", - "serde", - "serde_json", - "thiserror", - "tower-layer", - "tower-service", -] - [[package]] name = "apalis-core" version = "1.0.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1557d680ee4a9b42a76ab3a9572cee1a00d45e7eb455427d906c42774766e7" +source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" dependencies = [ "futures-channel", "futures-core", @@ -84,7 +64,7 @@ version = "1.0.0-rc.1" dependencies = [ "apalis", "apalis-codec", - "apalis-core 1.0.0-beta.2", + "apalis-core", "apalis-sql", "apalis-workflow", "async-std", @@ -102,9 +82,10 @@ dependencies = [ [[package]] name = "apalis-sql" -version = "1.0.0-beta.2" +version = "1.0.0-rc.1" +source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" dependencies = [ - "apalis-core 1.0.0-beta.2", + "apalis-core", "chrono", "serde", "serde_json", @@ -115,10 +96,9 @@ dependencies = [ [[package]] name = "apalis-workflow" version = "0.1.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc024da2d5d3ab59cc9fea099a2e2b20de5ff608f2e287abcb73aa45e4966a89" +source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" dependencies = [ - "apalis-core 1.0.0-rc.1", + "apalis-core", "futures", "petgraph", "serde", @@ -360,9 +340,9 @@ checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "cc" -version = "1.2.50" +version = "1.2.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" +checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203" dependencies = [ "find-msvc-tools", "shlex", @@ -598,9 +578,9 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff" [[package]] name = "fixedbitset" @@ -1063,9 +1043,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "js-sys" @@ -1109,13 +1089,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags 2.10.0", "libc", - "redox_syscall 0.6.0", + "redox_syscall 0.7.0", ] [[package]] @@ -1493,9 +1473,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0" dependencies = [ "unicode-ident", ] @@ -1585,9 +1565,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" dependencies = [ "bitflags 2.10.0", ] @@ -1695,9 +1675,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" [[package]] name = "schannel" @@ -1769,9 +1749,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.147" +version = "1.0.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af14725505314343e673e9ecb7cd7e8a36aa9791eb936235a3567cc31447ae4" +checksum = "3084b546a1dd6289475996f182a22aba973866ea8e8b02c51d9f46b1336a22da" dependencies = [ "itoa", "memchr", @@ -2976,6 +2956,6 @@ dependencies = [ [[package]] name = "zmij" -version = "0.1.8" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1dccf46b25b205e4bebe1d5258a991df1cc17801017a845cb5b3fe0269781aa" +checksum = "e9747e91771f56fd7893e1164abd78febd14a670ceec257caad15e051de35f06" diff --git a/Cargo.toml b/Cargo.toml index cd5830b..e40e367 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,11 +24,11 @@ chrono = ["apalis-sql/chrono", "sqlx/chrono"] time = ["apalis-sql/time", "sqlx/time"] [dependencies] -apalis-core = { path = "../apalis/apalis-core", version = "1.0.0-beta.2", default-features = false, features = [ +apalis-core = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.1", default-features = false, features = [ "sleep", ] } -apalis-sql = { path = "../apalis/apalis-sql", version = "1.0.0-beta.2", default-features = false } -apalis-codec = { version = "0.1.0-rc.1", features = ["json"] } +apalis-sql = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.1", default-features = false } +apalis-codec = { git = "https://github.com/apalis-dev/apalis", version = "0.1.0-rc.1", features = ["json"] } serde = { version = "1", features = ["derive"], default-features = false } pin-project = "1.1.10" serde_json = "1" @@ -50,6 +50,6 @@ features = ["postgres", "json"] [dev-dependencies] tokio = { version = "1", features = ["macros", "rt-multi-thread"] } once_cell = "1.19.0" -apalis = { version = "1.0.0-rc.1" } -apalis-workflow = { version = "0.1.0-rc.1" } +apalis = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.1" } +apalis-workflow = { git = "https://github.com/apalis-dev/apalis", version = "0.1.0-rc.1" } futures-util = "0.3.30" diff --git a/src/lib.rs b/src/lib.rs index 3b9ca05..452e665 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,7 +6,7 @@ use std::{fmt::Debug, marker::PhantomData}; use apalis_codec::json::JsonCodec; use apalis_core::{ - backend::{Backend, BackendExt, TaskStream, codec::Codec}, + backend::{Backend, BackendExt, TaskStream, codec::Codec, queue::Queue}, features_table, layers::Stack, task::{Task, task_id::TaskId}, @@ -36,7 +36,7 @@ mod ack; mod fetcher; mod from_row; -pub type PgContext = apalis_sql::context::SqlContext; +pub type PgContext = apalis_sql::context::SqlContext; mod queries; pub mod shared; pub mod sink; @@ -251,6 +251,10 @@ where type Codec = Decode; type CompactStream = TaskStream, Self::Error>; + fn get_queue(&self) -> Queue { + Queue::from(self.config.queue().to_string()) + } + fn poll_compact(self, worker: &WorkerContext) -> Self::CompactStream { self.poll_basic(worker).boxed() } @@ -345,6 +349,10 @@ where type Codec = Decode; type CompactStream = TaskStream, Self::Error>; + fn get_queue(&self) -> Queue { + Queue::from(self.config.queue().to_string()) + } + fn poll_compact(self, worker: &WorkerContext) -> Self::CompactStream { self.poll_with_notify(worker).boxed() } diff --git a/src/queries/list_workers.rs b/src/queries/list_workers.rs index 71b921c..20f42fc 100644 --- a/src/queries/list_workers.rs +++ b/src/queries/list_workers.rs @@ -42,7 +42,10 @@ where .map(|w| RunningWorker { id: w.id, backend: w.storage_name, - started_at: w.started_at.map(|t| t.to_unix_timestamp()).unwrap_or_default() as u64, + started_at: w + .started_at + .map(|t| t.to_unix_timestamp()) + .unwrap_or_default() as u64, last_heartbeat: w.last_seen.to_unix_timestamp() as u64, layers: w.layers.unwrap_or_default(), queue: w.worker_type, @@ -73,7 +76,10 @@ where .map(|w| RunningWorker { id: w.id, backend: w.storage_name, - started_at: w.started_at.map(|t| t.to_unix_timestamp()).unwrap_or_default() as u64, + started_at: w + .started_at + .map(|t| t.to_unix_timestamp()) + .unwrap_or_default() as u64, last_heartbeat: w.last_seen.to_unix_timestamp() as u64, layers: w.layers.unwrap_or_default(), queue: w.worker_type, diff --git a/src/queries/wait_for.rs b/src/queries/wait_for.rs index 4171007..4c9b707 100644 --- a/src/queries/wait_for.rs +++ b/src/queries/wait_for.rs @@ -24,7 +24,7 @@ where BackendExt, Result: DeserializeOwned, { - type ResultStream = BoxStream<'static, Result, Self::Error>>; + type ResultStream = BoxStream<'static, Result, Self::Error>>; fn wait_for( &self, task_ids: impl IntoIterator>, @@ -80,7 +80,7 @@ where fn check_status( &self, task_ids: impl IntoIterator> + Send, - ) -> impl Future>, Self::Error>> + Send { + ) -> impl Future>, Self::Error>> + Send { let pool = self.pool.clone(); let ids: Vec = task_ids.into_iter().map(|id| id.to_string()).collect(); diff --git a/src/shared.rs b/src/shared.rs index 87ff19e..b21fe83 100644 --- a/src/shared.rs +++ b/src/shared.rs @@ -19,7 +19,7 @@ use crate::{ use crate::{from_row::PgTaskRow, sink::PgSink}; use apalis_codec::json::JsonCodec; use apalis_core::{ - backend::{Backend, BackendExt, TaskStream, codec::Codec, shared::MakeShared}, + backend::{Backend, BackendExt, TaskStream, codec::Codec, queue::Queue, shared::MakeShared}, layers::Stack, worker::{context::WorkerContext, ext::ack::AcknowledgeLayer}, }; @@ -222,6 +222,10 @@ where type Codec = Decode; type CompactStream = TaskStream, Self::Error>; + fn get_queue(&self) -> Queue { + Queue::from(self.config.queue().to_string()) + } + fn poll_compact(self, worker: &WorkerContext) -> Self::CompactStream { self.poll_shared(worker).boxed() } diff --git a/src/sink.rs b/src/sink.rs index 3bbba02..6dcb89f 100644 --- a/src/sink.rs +++ b/src/sink.rs @@ -63,7 +63,9 @@ where .unwrap_or(Ulid::new().to_string()), ); job_data.push(task.args); - run_ats.push(::from_unix_timestamp(task.parts.run_at as i64)); + run_ats.push(::from_unix_timestamp( + task.parts.run_at as i64, + )); priorities.push(task.parts.ctx.priority()); max_attempts_vec.push(task.parts.ctx.max_attempts()); metadata.push(serde_json::Value::Object(task.parts.ctx.meta().clone())); From 0df3790548daf1878a6f2030e3d8ffaf9f8c912f Mon Sep 17 00:00:00 2001 From: Sholom Ber <46351743+Himmelschmidt@users.noreply.github.com> Date: Wed, 7 Jan 2026 09:49:35 -0500 Subject: [PATCH 3/8] bump: update apalis deps to rc.2 --- Cargo.lock | 26 +++++++++++++------------- Cargo.toml | 10 +++++----- src/from_row.rs | 8 ++++---- src/queries/keep_alive.rs | 4 ++-- src/queries/list_workers.rs | 6 +++--- src/queries/register_worker.rs | 4 ++-- src/sink.rs | 4 ++-- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7b7733a..05765d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,8 +19,8 @@ dependencies = [ [[package]] name = "apalis" -version = "1.0.0-rc.1" -source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" +version = "1.0.0-rc.2" +source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" dependencies = [ "apalis-core", "futures-util", @@ -32,8 +32,8 @@ dependencies = [ [[package]] name = "apalis-codec" -version = "0.1.0-rc.1" -source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" +version = "0.1.0-rc.2" +source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" dependencies = [ "apalis-core", "serde", @@ -42,8 +42,8 @@ dependencies = [ [[package]] name = "apalis-core" -version = "1.0.0-rc.1" -source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" +version = "1.0.0-rc.2" +source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" dependencies = [ "futures-channel", "futures-core", @@ -82,8 +82,8 @@ dependencies = [ [[package]] name = "apalis-sql" -version = "1.0.0-rc.1" -source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" +version = "1.0.0-rc.2" +source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" dependencies = [ "apalis-core", "chrono", @@ -95,8 +95,8 @@ dependencies = [ [[package]] name = "apalis-workflow" -version = "0.1.0-rc.1" -source = "git+https://github.com/apalis-dev/apalis#82670cfd52c6054d69620e2fbe8c140d573fa7b5" +version = "0.1.0-rc.2" +source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" dependencies = [ "apalis-core", "futures", @@ -520,7 +520,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -1630,7 +1630,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] @@ -2127,7 +2127,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix 1.1.3", - "windows-sys 0.61.2", + "windows-sys 0.52.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e40e367..d3c4d7a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,11 +24,11 @@ chrono = ["apalis-sql/chrono", "sqlx/chrono"] time = ["apalis-sql/time", "sqlx/time"] [dependencies] -apalis-core = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.1", default-features = false, features = [ +apalis-core = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.2", default-features = false, features = [ "sleep", ] } -apalis-sql = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.1", default-features = false } -apalis-codec = { git = "https://github.com/apalis-dev/apalis", version = "0.1.0-rc.1", features = ["json"] } +apalis-sql = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.2", default-features = false } +apalis-codec = { git = "https://github.com/apalis-dev/apalis", version = "0.1.0-rc.2", features = ["json"] } serde = { version = "1", features = ["derive"], default-features = false } pin-project = "1.1.10" serde_json = "1" @@ -50,6 +50,6 @@ features = ["postgres", "json"] [dev-dependencies] tokio = { version = "1", features = ["macros", "rt-multi-thread"] } once_cell = "1.19.0" -apalis = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.1" } -apalis-workflow = { git = "https://github.com/apalis-dev/apalis", version = "0.1.0-rc.1" } +apalis = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.2" } +apalis-workflow = { git = "https://github.com/apalis-dev/apalis", version = "0.1.0-rc.2" } futures-util = "0.3.30" diff --git a/src/from_row.rs b/src/from_row.rs index f988429..ebe07cd 100644 --- a/src/from_row.rs +++ b/src/from_row.rs @@ -1,4 +1,4 @@ -use apalis_sql::{SqlDateTime, TaskRow}; +use apalis_sql::{DateTime, TaskRow}; #[derive(Debug)] pub struct PgTaskRow { @@ -8,11 +8,11 @@ pub struct PgTaskRow { pub status: Option, pub attempts: Option, pub max_attempts: Option, - pub run_at: Option, + pub run_at: Option, pub last_result: Option, - pub lock_at: Option, + pub lock_at: Option, pub lock_by: Option, - pub done_at: Option, + pub done_at: Option, pub priority: Option, pub metadata: Option, } diff --git a/src/queries/keep_alive.rs b/src/queries/keep_alive.rs index 3332093..a279742 100644 --- a/src/queries/keep_alive.rs +++ b/src/queries/keep_alive.rs @@ -1,5 +1,5 @@ use apalis_core::worker::context::WorkerContext; -use apalis_sql::{SqlDateTime, SqlDateTimeExt}; +use apalis_sql::{DateTime, DateTimeExt}; use futures::{FutureExt, Stream, stream}; use sqlx::PgPool; @@ -36,7 +36,7 @@ pub async fn initial_heartbeat( storage_type: &str, ) -> Result<(), sqlx::Error> { reenqueue_orphaned(pool.clone(), config.clone()).await?; - let last_seen = SqlDateTime::now(); + let last_seen = DateTime::now(); register_worker( pool, config.queue().to_string(), diff --git a/src/queries/list_workers.rs b/src/queries/list_workers.rs index 20f42fc..0b21fe2 100644 --- a/src/queries/list_workers.rs +++ b/src/queries/list_workers.rs @@ -1,5 +1,5 @@ use apalis_core::backend::{BackendExt, ListWorkers, RunningWorker}; -use apalis_sql::{SqlDateTime, SqlDateTimeExt}; +use apalis_sql::{DateTime, DateTimeExt}; use futures::TryFutureExt; use ulid::Ulid; @@ -9,8 +9,8 @@ pub struct WorkerRow { pub worker_type: String, pub storage_name: String, pub layers: Option, - pub last_seen: SqlDateTime, - pub started_at: Option, + pub last_seen: DateTime, + pub started_at: Option, } use crate::{CompactType, PgContext, PostgresStorage}; diff --git a/src/queries/register_worker.rs b/src/queries/register_worker.rs index 7ed0f40..695cee8 100644 --- a/src/queries/register_worker.rs +++ b/src/queries/register_worker.rs @@ -1,12 +1,12 @@ use apalis_core::worker::context::WorkerContext; -use apalis_sql::SqlDateTime; +use apalis_sql::DateTime; use sqlx::PgPool; pub async fn register( pool: PgPool, worker_type: String, worker: WorkerContext, - last_seen: SqlDateTime, + last_seen: DateTime, backend_type: &str, ) -> Result<(), sqlx::Error> { let res = sqlx::query_file!( diff --git a/src/sink.rs b/src/sink.rs index 6dcb89f..7ee2d34 100644 --- a/src/sink.rs +++ b/src/sink.rs @@ -1,5 +1,5 @@ use apalis_codec::json::JsonCodec; -use apalis_sql::{SqlDateTime, SqlDateTimeExt, config::Config}; +use apalis_sql::{DateTime, DateTimeExt, config::Config}; use futures::{ FutureExt, Sink, TryFutureExt, future::{BoxFuture, Shared}, @@ -63,7 +63,7 @@ where .unwrap_or(Ulid::new().to_string()), ); job_data.push(task.args); - run_ats.push(::from_unix_timestamp( + run_ats.push(::from_unix_timestamp( task.parts.run_at as i64, )); priorities.push(task.parts.ctx.priority()); From 00e5b4bf9eb1c36fa77be4327cc87db98580ddd5 Mon Sep 17 00:00:00 2001 From: Sholom Ber <46351743+Himmelschmidt@users.noreply.github.com> Date: Wed, 7 Jan 2026 12:09:57 -0500 Subject: [PATCH 4/8] chore: use crates.io deps instead of git --- Cargo.lock | 15 ++++++++++----- Cargo.toml | 10 +++++----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 05765d6..1a3a257 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,7 +20,8 @@ dependencies = [ [[package]] name = "apalis" version = "1.0.0-rc.2" -source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "543708a780aff326f4fd63bf8ed85f9d79647af7fa1fbe33bb1e221930cd3e25" dependencies = [ "apalis-core", "futures-util", @@ -33,7 +34,8 @@ dependencies = [ [[package]] name = "apalis-codec" version = "0.1.0-rc.2" -source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce833bf2acb6984eaa4e58ee4afacc0eaaefabc2c54ad5df46ea43255d115f7f" dependencies = [ "apalis-core", "serde", @@ -43,7 +45,8 @@ dependencies = [ [[package]] name = "apalis-core" version = "1.0.0-rc.2" -source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b7edea7ba9866a1bc2e58f39183bdf204d78db45402d9ac1eb67d0e482735e" dependencies = [ "futures-channel", "futures-core", @@ -83,7 +86,8 @@ dependencies = [ [[package]] name = "apalis-sql" version = "1.0.0-rc.2" -source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b9d5873918c664ffcd0768f5048a261cd83a1741eed80f96a77091e6dc3e47" dependencies = [ "apalis-core", "chrono", @@ -96,7 +100,8 @@ dependencies = [ [[package]] name = "apalis-workflow" version = "0.1.0-rc.2" -source = "git+https://github.com/apalis-dev/apalis#e2cb16b37d5d40a746a8223cc8865f319bd4e48d" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7644137d6a79de42f41aeff2fc5c624d23d95e36b4ce290f0ad89301e2f7259b" dependencies = [ "apalis-core", "futures", diff --git a/Cargo.toml b/Cargo.toml index d3c4d7a..5c7c62a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,11 +24,11 @@ chrono = ["apalis-sql/chrono", "sqlx/chrono"] time = ["apalis-sql/time", "sqlx/time"] [dependencies] -apalis-core = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.2", default-features = false, features = [ +apalis-core = { version = "1.0.0-rc.2", default-features = false, features = [ "sleep", ] } -apalis-sql = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.2", default-features = false } -apalis-codec = { git = "https://github.com/apalis-dev/apalis", version = "0.1.0-rc.2", features = ["json"] } +apalis-sql = { version = "1.0.0-rc.2", default-features = false } +apalis-codec = { version = "0.1.0-rc.2", features = ["json"] } serde = { version = "1", features = ["derive"], default-features = false } pin-project = "1.1.10" serde_json = "1" @@ -50,6 +50,6 @@ features = ["postgres", "json"] [dev-dependencies] tokio = { version = "1", features = ["macros", "rt-multi-thread"] } once_cell = "1.19.0" -apalis = { git = "https://github.com/apalis-dev/apalis", version = "1.0.0-rc.2" } -apalis-workflow = { git = "https://github.com/apalis-dev/apalis", version = "0.1.0-rc.2" } +apalis = { version = "1.0.0-rc.2" } +apalis-workflow = { version = "0.1.0-rc.2" } futures-util = "0.3.30" From 3b46f682bd021e18bd440eba1c78dffef9b69c30 Mon Sep 17 00:00:00 2001 From: Sholom Ber <46351743+Himmelschmidt@users.noreply.github.com> Date: Wed, 7 Jan 2026 12:14:58 -0500 Subject: [PATCH 5/8] refactor: simplify get_queue impl --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 452e665..a403e3d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -252,7 +252,7 @@ where type CompactStream = TaskStream, Self::Error>; fn get_queue(&self) -> Queue { - Queue::from(self.config.queue().to_string()) + self.config.queue().clone() } fn poll_compact(self, worker: &WorkerContext) -> Self::CompactStream { @@ -350,7 +350,7 @@ where type CompactStream = TaskStream, Self::Error>; fn get_queue(&self) -> Queue { - Queue::from(self.config.queue().to_string()) + self.config.queue().clone() } fn poll_compact(self, worker: &WorkerContext) -> Self::CompactStream { From 44628ca984ae1e1d217e93b56d5ee991b3de87b7 Mon Sep 17 00:00:00 2001 From: Sholom Ber <46351743+Himmelschmidt@users.noreply.github.com> Date: Wed, 7 Jan 2026 13:25:29 -0500 Subject: [PATCH 6/8] chore: update deps and changelog --- CHANGELOG.md | 2 + Cargo.lock | 76 +++++++++++++++++++------------------- supply-chain/config.toml | 80 ++++++++++++++++++++++++++-------------- 3 files changed, 92 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 584e72c..c913677 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- feat: use DateTime abstraction from apalis-sql +- bump: update apalis deps to rc.2 - bump: introducing rc.1 (#45) - fix: Add primary keys for database tables (#45) diff --git a/Cargo.lock b/Cargo.lock index 1a3a257..8beed7e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -284,9 +284,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" +checksum = "7d809780667f4410e7c41b07f52439b94d2bdf8528eeedc287fa38d3b7f95d82" [[package]] name = "bitflags" @@ -525,7 +525,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1018,9 +1018,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown 0.16.1", @@ -1082,9 +1082,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.178" +version = "0.2.179" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" +checksum = "c5a2d376baa530d1238d133232d15e239abad80d05838b4b59354e5268af431f" [[package]] name = "libm" @@ -1478,18 +1478,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.104" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ "proc-macro2", ] @@ -1593,9 +1593,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40a0376c50d0358279d9d643e4bf7b7be212f1f4ff1da9070a7b54d22ef75c88" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" dependencies = [ "const-oid", "digest", @@ -1635,14 +1635,14 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.35" +version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ "once_cell", "ring", @@ -1754,9 +1754,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.148" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3084b546a1dd6289475996f182a22aba973866ea8e8b02c51d9f46b1336a22da" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", @@ -2096,9 +2096,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.111" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -2132,7 +2132,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix 1.1.3", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2213,9 +2213,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.48.0" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ "bytes", "libc", @@ -2239,9 +2239,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -2250,9 +2250,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -2374,9 +2374,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", @@ -2519,14 +2519,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.4", + "webpki-roots 1.0.5", ] [[package]] name = "webpki-roots" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" dependencies = [ "rustls-pki-types", ] @@ -2881,18 +2881,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.31" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.31" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ "proc-macro2", "quote", @@ -2961,6 +2961,6 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.3" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9747e91771f56fd7893e1164abd78febd14a670ceec257caad15e051de35f06" +checksum = "2fc5a66a20078bf1251bde995aa2fdcc4b800c70b5d92dd2c62abc5c60f679f8" diff --git a/supply-chain/config.toml b/supply-chain/config.toml index 0878c0f..b468b88 100644 --- a/supply-chain/config.toml +++ b/supply-chain/config.toml @@ -16,15 +16,15 @@ version = "0.1.5" criteria = "safe-to-deploy" [[exemptions.apalis]] -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" criteria = "safe-to-run" [[exemptions.apalis-codec]] -version = "0.1.0-rc.1" +version = "0.1.0-rc.2" criteria = "safe-to-deploy" [[exemptions.apalis-core]] -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" criteria = "safe-to-deploy" [[exemptions.apalis-postgres]] @@ -32,11 +32,11 @@ version = "1.0.0-beta.3" criteria = "safe-to-deploy" [[exemptions.apalis-sql]] -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" criteria = "safe-to-deploy" [[exemptions.apalis-workflow]] -version = "0.1.0-rc.1" +version = "0.1.0-rc.2" criteria = "safe-to-run" [[exemptions.async-channel]] @@ -96,7 +96,7 @@ version = "0.22.1" criteria = "safe-to-deploy" [[exemptions.base64ct]] -version = "1.8.1" +version = "1.8.2" criteria = "safe-to-deploy" [[exemptions.bitflags]] @@ -128,7 +128,7 @@ version = "1.11.0" criteria = "safe-to-deploy" [[exemptions.cc]] -version = "1.2.50" +version = "1.2.51" criteria = "safe-to-deploy" [[exemptions.cfg-if]] @@ -183,6 +183,10 @@ criteria = "safe-to-deploy" version = "0.7.10" criteria = "safe-to-deploy" +[[exemptions.deranged]] +version = "0.5.5" +criteria = "safe-to-deploy" + [[exemptions.digest]] version = "0.10.7" criteria = "safe-to-deploy" @@ -232,7 +236,7 @@ version = "2.3.0" criteria = "safe-to-deploy" [[exemptions.find-msvc-tools]] -version = "0.1.5" +version = "0.1.6" criteria = "safe-to-deploy" [[exemptions.fixedbitset]] @@ -412,7 +416,7 @@ version = "1.2.1" criteria = "safe-to-deploy" [[exemptions.indexmap]] -version = "2.12.1" +version = "2.13.0" criteria = "safe-to-deploy" [[exemptions.instant]] @@ -424,7 +428,7 @@ version = "1.0.11" criteria = "safe-to-deploy" [[exemptions.itoa]] -version = "1.0.16" +version = "1.0.17" criteria = "safe-to-deploy" [[exemptions.js-sys]] @@ -440,7 +444,7 @@ version = "1.5.0" criteria = "safe-to-deploy" [[exemptions.libc]] -version = "0.2.178" +version = "0.2.179" criteria = "safe-to-deploy" [[exemptions.libm]] @@ -448,7 +452,7 @@ version = "0.2.15" criteria = "safe-to-deploy" [[exemptions.libredox]] -version = "0.1.11" +version = "0.1.12" criteria = "safe-to-deploy" [[exemptions.libsqlite3-sys]] @@ -495,6 +499,10 @@ criteria = "safe-to-deploy" version = "0.8.6" criteria = "safe-to-deploy" +[[exemptions.num-conv]] +version = "0.1.0" +criteria = "safe-to-deploy" + [[exemptions.num-integer]] version = "0.1.46" criteria = "safe-to-deploy" @@ -595,16 +603,20 @@ criteria = "safe-to-deploy" version = "0.1.4" criteria = "safe-to-deploy" +[[exemptions.powerfmt]] +version = "0.2.0" +criteria = "safe-to-deploy" + [[exemptions.ppv-lite86]] version = "0.2.21" criteria = "safe-to-deploy" [[exemptions.proc-macro2]] -version = "1.0.103" +version = "1.0.105" criteria = "safe-to-deploy" [[exemptions.quote]] -version = "1.0.42" +version = "1.0.43" criteria = "safe-to-deploy" [[exemptions.r-efi]] @@ -640,7 +652,7 @@ version = "0.5.18" criteria = "safe-to-deploy" [[exemptions.redox_syscall]] -version = "0.6.0" +version = "0.7.0" criteria = "safe-to-deploy" [[exemptions.ring]] @@ -648,7 +660,7 @@ version = "0.17.14" criteria = "safe-to-deploy" [[exemptions.rsa]] -version = "0.9.9" +version = "0.9.10" criteria = "safe-to-deploy" [[exemptions.rustix]] @@ -660,7 +672,7 @@ version = "1.1.3" criteria = "safe-to-deploy" [[exemptions.rustls]] -version = "0.23.35" +version = "0.23.36" criteria = "safe-to-deploy" [[exemptions.rustls-pki-types]] @@ -676,7 +688,7 @@ version = "1.0.22" criteria = "safe-to-deploy" [[exemptions.ryu]] -version = "1.0.21" +version = "1.0.22" criteria = "safe-to-deploy" [[exemptions.schannel]] @@ -708,7 +720,7 @@ version = "1.0.228" criteria = "safe-to-deploy" [[exemptions.serde_json]] -version = "1.0.147" +version = "1.0.149" criteria = "safe-to-deploy" [[exemptions.serde_urlencoded]] @@ -796,7 +808,7 @@ version = "2.6.1" criteria = "safe-to-deploy" [[exemptions.syn]] -version = "2.0.111" +version = "2.0.114" criteria = "safe-to-deploy" [[exemptions.sync_wrapper]] @@ -819,6 +831,18 @@ criteria = "safe-to-deploy" version = "2.0.17" criteria = "safe-to-deploy" +[[exemptions.time]] +version = "0.3.44" +criteria = "safe-to-deploy" + +[[exemptions.time-core]] +version = "0.1.6" +criteria = "safe-to-deploy" + +[[exemptions.time-macros]] +version = "0.2.24" +criteria = "safe-to-deploy" + [[exemptions.tinystr]] version = "0.8.2" criteria = "safe-to-deploy" @@ -832,7 +856,7 @@ version = "0.1.1" criteria = "safe-to-deploy" [[exemptions.tokio]] -version = "1.48.0" +version = "1.49.0" criteria = "safe-to-deploy" [[exemptions.tokio-macros]] @@ -840,11 +864,11 @@ version = "2.6.0" criteria = "safe-to-deploy" [[exemptions.tokio-stream]] -version = "0.1.17" +version = "0.1.18" criteria = "safe-to-deploy" [[exemptions.tokio-util]] -version = "0.7.17" +version = "0.7.18" criteria = "safe-to-run" [[exemptions.tower]] @@ -900,7 +924,7 @@ version = "0.9.0" criteria = "safe-to-deploy" [[exemptions.url]] -version = "2.5.7" +version = "2.5.8" criteria = "safe-to-deploy" [[exemptions.utf8_iter]] @@ -968,7 +992,7 @@ version = "0.26.11" criteria = "safe-to-deploy" [[exemptions.webpki-roots]] -version = "1.0.4" +version = "1.0.5" criteria = "safe-to-deploy" [[exemptions.whoami]] @@ -1148,11 +1172,11 @@ version = "0.8.1" criteria = "safe-to-deploy" [[exemptions.zerocopy]] -version = "0.8.31" +version = "0.8.33" criteria = "safe-to-deploy" [[exemptions.zerocopy-derive]] -version = "0.8.31" +version = "0.8.33" criteria = "safe-to-deploy" [[exemptions.zerofrom]] @@ -1180,5 +1204,5 @@ version = "0.11.2" criteria = "safe-to-deploy" [[exemptions.zmij]] -version = "0.1.8" +version = "1.0.12" criteria = "safe-to-deploy" From 7715aba0cff6fe9eb1998b21a7b62dd1e16c3fd8 Mon Sep 17 00:00:00 2001 From: Sholom Ber <46351743+Himmelschmidt@users.noreply.github.com> Date: Wed, 7 Jan 2026 13:31:35 -0500 Subject: [PATCH 7/8] revert: get_queue change --- src/shared.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared.rs b/src/shared.rs index b21fe83..46a08a5 100644 --- a/src/shared.rs +++ b/src/shared.rs @@ -223,7 +223,7 @@ where type CompactStream = TaskStream, Self::Error>; fn get_queue(&self) -> Queue { - Queue::from(self.config.queue().to_string()) + self.config.queue().clone() } fn poll_compact(self, worker: &WorkerContext) -> Self::CompactStream { From f4de2b4c9ee8a4456f637e1e2f9de9b97d69565e Mon Sep 17 00:00:00 2001 From: Sholom Ber <46351743+Himmelschmidt@users.noreply.github.com> Date: Wed, 7 Jan 2026 13:42:21 -0500 Subject: [PATCH 8/8] fix: use PgPool for PgContext type alias --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index a403e3d..6a1651a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,7 +36,7 @@ mod ack; mod fetcher; mod from_row; -pub type PgContext = apalis_sql::context::SqlContext; +pub type PgContext = apalis_sql::context::SqlContext; mod queries; pub mod shared; pub mod sink;