From 446fce6c1679df3a94112804fe0b79285d1f53bd Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Thu, 31 Jul 2025 10:01:25 +0200 Subject: [PATCH] Extract logic from route --- crates/meilisearch/src/routes/webhooks.rs | 25 ++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/crates/meilisearch/src/routes/webhooks.rs b/crates/meilisearch/src/routes/webhooks.rs index adca710a0..710873d55 100644 --- a/crates/meilisearch/src/routes/webhooks.rs +++ b/crates/meilisearch/src/routes/webhooks.rs @@ -180,10 +180,17 @@ async fn patch_webhooks( req: HttpRequest, analytics: Data, ) -> Result { - let WebhooksSettings { webhooks: new_webhooks } = new_webhooks.0; - let Webhooks { mut webhooks } = index_scheduler.webhooks(); - debug!(parameters = ?new_webhooks, "Patch webhooks"); + let webhooks = patch_webhooks_inner(&index_scheduler, new_webhooks.0)?; + analytics.publish(PatchWebhooksAnalytics, &req); + + Ok(HttpResponse::Ok().json(webhooks)) +} + +fn patch_webhooks_inner( + index_scheduler: &GuardedData, Data>, + new_webhooks: WebhooksSettings, +) -> Result { fn merge_webhook( name: &str, old_webhook: Option, @@ -225,7 +232,11 @@ async fn patch_webhooks( Ok(Webhook { url, headers }) } - match new_webhooks { + debug!(parameters = ?new_webhooks, "Patch webhooks"); + + let Webhooks { mut webhooks } = index_scheduler.webhooks(); + + match new_webhooks.webhooks { Setting::Set(new_webhooks) => { for (name, new_webhook) in new_webhooks { if name.starts_with('_') { @@ -253,10 +264,10 @@ async fn patch_webhooks( return Err(WebhooksError::TooManyWebhooks.into()); } - analytics.publish(PatchWebhooksAnalytics, &req); - let webhooks = Webhooks { webhooks }; index_scheduler.put_webhooks(webhooks.clone())?; + debug!(returns = ?webhooks, "Patch webhooks"); - Ok(HttpResponse::Ok().json(webhooks)) + + Ok(webhooks) }