aboutsummaryrefslogtreecommitdiff
path: root/src/lib/server/services
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-10-18 21:47:21 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-10-18 21:47:21 +0200
commitc3c61894d2b119ae424bac605d4b3099e0b674e5 (patch)
treec525ebf4d33cbdfac22fc8702367f20d8f7ba344 /src/lib/server/services
parentc2722b62832afe2d028f1bcb6954116f7eec9cde (diff)
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.
Diffstat (limited to 'src/lib/server/services')
-rw-r--r--src/lib/server/services/grocery-actions.ts10
1 files changed, 9 insertions, 1 deletions
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 };
}