From 55d47d4e33bfd680338ebdb446f9a4b6497f804f Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Sat, 14 Mar 2026 22:58:41 +0100 Subject: [PATCH] fix(01): align image upload field name and wrap category delete in transaction --- src/client/lib/api.ts | 2 +- src/server/services/category.service.ts | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/client/lib/api.ts b/src/client/lib/api.ts index f96caaf..c81524f 100644 --- a/src/client/lib/api.ts +++ b/src/client/lib/api.ts @@ -52,7 +52,7 @@ export async function apiDelete(url: string): Promise { export async function apiUpload(url: string, file: File): Promise { const formData = new FormData(); - formData.append("file", file); + formData.append("image", file); const res = await fetch(url, { method: "POST", body: formData, diff --git a/src/server/services/category.service.ts b/src/server/services/category.service.ts index 8ecefaf..626a356 100644 --- a/src/server/services/category.service.ts +++ b/src/server/services/category.service.ts @@ -63,14 +63,15 @@ export function deleteCategory( return { success: false, error: "Category not found" }; } - // Reassign items to Uncategorized (id=1), then delete - // Use a transaction for atomicity - db.update(items) - .set({ categoryId: 1 }) - .where(eq(items.categoryId, id)) - .run(); + // Reassign items to Uncategorized (id=1), then delete atomically + db.transaction(() => { + db.update(items) + .set({ categoryId: 1 }) + .where(eq(items.categoryId, id)) + .run(); - db.delete(categories).where(eq(categories.id, id)).run(); + db.delete(categories).where(eq(categories.id, id)).run(); + }); return { success: true }; }