From b552ab33b41e70c6031d41e4cbe24e908cf5e998 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 19 Apr 2026 17:39:50 +0000 Subject: [PATCH] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/routes/settings.import.tsx | 37 +++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/routes/settings.import.tsx b/src/routes/settings.import.tsx index edb52cd..6147976 100644 --- a/src/routes/settings.import.tsx +++ b/src/routes/settings.import.tsx @@ -1096,15 +1096,34 @@ function ImportPage() { } } if (withoutConflict.length > 0) { - const { data, error } = await supabase - .from(cfg.table as any) - .insert(withoutConflict as any) - .select("*"); - if (error) { - errors.push(`Batch ${i / chunkSize + 1} (insert): ${error.message}`); - } else if (data) { - inserted += data.length; - inserted_rows.push(...data); + // For cases without external_id, upsert on case_number to avoid duplicate-key errors on re-import + if (cfg.table === "cases") { + const withCaseNum = withoutConflict.filter((r) => r.case_number); + const noCaseNum = withoutConflict.filter((r) => !r.case_number); + if (withCaseNum.length > 0) { + const { data, error } = await supabase + .from("cases" as any) + .upsert(withCaseNum as any, { onConflict: "case_number", ignoreDuplicates: false }) + .select("*"); + if (error) errors.push(`Batch ${i / chunkSize + 1} (upsert case_number): ${error.message}`); + else if (data) { inserted += data.length; inserted_rows.push(...(data as Row[])); } + } + if (noCaseNum.length > 0) { + const { data, error } = await supabase.from("cases" as any).insert(noCaseNum as any).select("*"); + if (error) errors.push(`Batch ${i / chunkSize + 1} (insert): ${error.message}`); + else if (data) { inserted += data.length; inserted_rows.push(...(data as Row[])); } + } + } else { + const { data, error } = await supabase + .from(cfg.table as any) + .insert(withoutConflict as any) + .select("*"); + if (error) { + errors.push(`Batch ${i / chunkSize + 1} (insert): ${error.message}`); + } else if (data) { + inserted += data.length; + inserted_rows.push(...data); + } } } }