From 44912057fc581ad8a9c213a75f786b954dc5b767 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Wed, 23 Jul 2025 11:09:48 +0200 Subject: [PATCH] subscription store: Correctly return whether subscription already existed --- crates/store_sqlite/src/subscription_store.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/store_sqlite/src/subscription_store.rs b/crates/store_sqlite/src/subscription_store.rs index 7ab59cc..79d5ac3 100644 --- a/crates/store_sqlite/src/subscription_store.rs +++ b/crates/store_sqlite/src/subscription_store.rs @@ -31,6 +31,11 @@ impl SubscriptionStore for SqliteStore { } async fn upsert_subscription(&self, sub: Subscription) -> Result { + let already_exists = match self.get_subscription(&sub.id).await { + Ok(_) => true, + Err(Error::NotFound) => false, + Err(err) => return Err(err), + }; sqlx::query!( r#"INSERT OR REPLACE INTO davpush_subscriptions (id, topic, expiration, push_resource, public_key, public_key_type, auth_secret) VALUES (?, ?, ?, ?, ?, ?, ?)"#, sub.id, @@ -41,8 +46,7 @@ impl SubscriptionStore for SqliteStore { sub.public_key_type, sub.auth_secret ).execute(&self.db).await.map_err(crate::Error::from)?; - // TODO: Correctly return whether a subscription already existed - Ok(false) + Ok(already_exists) } async fn delete_subscription(&self, id: &str) -> Result<(), Error> { sqlx::query!(r#"DELETE FROM davpush_subscriptions WHERE id = ? "#, id)