From 4ec3464d99883aaf8e2ac267c6b6a096568eef03 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Mon, 15 Jun 2026 17:44:56 +0200 Subject: [PATCH] fixed merge route --- backend-rs/src/jobs/sync_flavors.rs | 6 +++++- frontend/src/pages/admin/AdminFlavors.tsx | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/backend-rs/src/jobs/sync_flavors.rs b/backend-rs/src/jobs/sync_flavors.rs index 7aed358..228a8b6 100644 --- a/backend-rs/src/jobs/sync_flavors.rs +++ b/backend-rs/src/jobs/sync_flavors.rs @@ -491,6 +491,10 @@ async fn upsert_flavor( .filter(flavor::Column::ExternalId.eq(external_id)) .one(db) .await?; + // A row already linked by external_id is the authoritative one for this + // product; its name may have been curated (admin rename) or chosen by a merge + // that kept the legacy row. Don't let a later sync overwrite that name. + let matched_by_external = existing.is_some(); if existing.is_none() { existing = Flavor::find() .filter(flavor::Column::Name.eq(name)) @@ -527,7 +531,7 @@ async fn upsert_flavor( if f_is_legacy { am.is_legacy = Set(false); } - if f_name != name { + if f_name != name && !matched_by_external { let dup = Flavor::find() .filter(flavor::Column::Name.eq(name)) .filter(flavor::Column::CategoryId.eq(category_id)) diff --git a/frontend/src/pages/admin/AdminFlavors.tsx b/frontend/src/pages/admin/AdminFlavors.tsx index 1c647f4..7f258e8 100644 --- a/frontend/src/pages/admin/AdminFlavors.tsx +++ b/frontend/src/pages/admin/AdminFlavors.tsx @@ -38,7 +38,7 @@ const AdminFlavors: React.FC = () => { setIsMerging(true); try { - await api.post('admin/merge_flavors/', { + await api.post('admin-custom/merge_flavors/', { keep_id: keepFlavor.id, remove_id: removeFlavor.id, });