diff --git a/App/app/(portal)/admin/products/actions.ts b/App/app/(portal)/admin/products/actions.ts index cf4ec56..277097f 100644 --- a/App/app/(portal)/admin/products/actions.ts +++ b/App/app/(portal)/admin/products/actions.ts @@ -45,14 +45,17 @@ export async function updateProduct(formData: FormData): Promise { if (!id) return { error: "Product ID required" }; const parsed = z.object({ - name: z.string().min(1).max(200), + code: z.string().min(1).max(50), description: z.string().optional(), }).safeParse({ - name: formData.get("name"), + code: formData.get("code"), description: formData.get("description") || undefined, }); if (!parsed.success) return { error: parsed.error.errors[0].message }; + const conflict = await db.product.findFirst({ where: { code: parsed.data.code, id: { not: id } } }); + if (conflict) return { error: "Another product already uses that code." }; + await db.product.update({ where: { id }, data: parsed.data }); revalidatePath("/admin/products"); return { ok: true }; diff --git a/App/app/(portal)/admin/products/product-form.tsx b/App/app/(portal)/admin/products/product-form.tsx index dd7f6c0..b108e6f 100644 --- a/App/app/(portal)/admin/products/product-form.tsx +++ b/App/app/(portal)/admin/products/product-form.tsx @@ -18,15 +18,15 @@ function ProductFormFields({ product }: { product?: ProductRow }) {
- - {product &&

Product code cannot be changed after creation.

}
- - + + + {product &&

Name is locked after creation.

}