From c3c61894d2b119ae424bac605d4b3099e0b674e5 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Sun, 18 Oct 2026 21:47:21 +0200 Subject: fix: report a duplicate name instead of failing the page Adding a category or project whose name exists, or renaming an item onto an existing name, hit the unique constraint and rendered SvelteKit's 500 page. Translate SQLITE_CONSTRAINT_UNIQUE into a form error on the three forms. --- src/lib/server/services/grocery-actions.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/lib/server/services/grocery-actions.ts') diff --git a/src/lib/server/services/grocery-actions.ts b/src/lib/server/services/grocery-actions.ts index 1cfb05d..cedb46e 100644 --- a/src/lib/server/services/grocery-actions.ts +++ b/src/lib/server/services/grocery-actions.ts @@ -2,6 +2,7 @@ import { fail, redirect, type ActionFailure } from '@sveltejs/kit'; import { addOrUncheck, loadUnchecked, toggle } from './groceries'; import { add as addCategory } from './categories'; import { numericId, parseFormString, parseOptionalNumber } from './validation'; +import { isUniqueViolation } from '$lib/server/db/errors'; export async function toggleGroceryAction(request: Request) { const data = await request.formData(); @@ -50,7 +51,14 @@ export async function addCategoryAction(request: Request) { return name; } - await addCategory(name); + try { + await addCategory(name); + } catch (error) { + if (isUniqueViolation(error)) { + return fail(400, { error: 'Cette catégorie existe déjà' }); + } + throw error; + } return { success: true }; } -- cgit v1.3