aboutsummaryrefslogtreecommitdiff
path: root/src/lib/server/services/grocery-actions.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/server/services/grocery-actions.ts')
-rw-r--r--src/lib/server/services/grocery-actions.ts21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/lib/server/services/grocery-actions.ts b/src/lib/server/services/grocery-actions.ts
index 1cfb05d..c2b8852 100644
--- a/src/lib/server/services/grocery-actions.ts
+++ b/src/lib/server/services/grocery-actions.ts
@@ -1,13 +1,13 @@
import { fail, redirect, type ActionFailure } from '@sveltejs/kit';
-import { addOrUncheck, loadUnchecked, toggle } from './groceries';
-import { add as addCategory } from './categories';
+import { categoriesService, groceriesService } from '$lib/server/services';
import { numericId, parseFormString, parseOptionalNumber } from './validation';
+import { isUniqueViolation } from '$lib/server/db/errors';
export async function toggleGroceryAction(request: Request) {
const data = await request.formData();
try {
const id = numericId(data.get('id'));
- await toggle(id);
+ await groceriesService.toggle(id);
} catch {
return fail(400, { error: 'ID invalide' });
}
@@ -50,7 +50,14 @@ export async function addCategoryAction(request: Request) {
return name;
}
- await addCategory(name);
+ try {
+ await categoriesService.add(name);
+ } catch (error) {
+ if (isUniqueViolation(error)) {
+ return fail(400, { error: 'Cette catégorie existe déjà' });
+ }
+ throw error;
+ }
return { success: true };
}
@@ -62,8 +69,8 @@ export async function addGroceryAction(request: Request) {
}
const categoryId = parseOptionalNumber(data.get('category_id'));
- await addOrUncheck(name, categoryId);
- const { items } = await loadUnchecked();
+ await groceriesService.addOrUncheck(name, categoryId);
+ const { items } = await groceriesService.loadUnchecked();
return { success: true, items };
}
@@ -75,6 +82,6 @@ export async function addGroceryAndEditAction(request: Request) {
}
const categoryId = parseOptionalNumber(data.get('category_id'));
- const { item } = await addOrUncheck(name, categoryId);
+ const { item } = await groceriesService.addOrUncheck(name, categoryId);
throw redirect(303, `/grocery/${item.id}`);
}