diff --git a/api/src/db/productsSchema.ts b/api/src/db/productsSchema.ts index 537fe0d..8fd3a73 100644 --- a/api/src/db/productsSchema.ts +++ b/api/src/db/productsSchema.ts @@ -19,3 +19,7 @@ export const createProductSchema = createInsertSchema(productsTable).omit({ id: true, }); +export const updateProductSchema = createUpdateSchema(productsTable).omit({ + id: true, +}) +.partial(); diff --git a/api/src/routes/products/index.ts b/api/src/routes/products/index.ts index a614e9d..0934fcb 100644 --- a/api/src/routes/products/index.ts +++ b/api/src/routes/products/index.ts @@ -7,7 +7,7 @@ import { listProducts, } from "./productsController"; import { validateData } from "../../middlewares/validationMiddleware"; import { z, ZodObject, ZodTypeAny } from 'zod/v4'; -import { productsTable, createProductSchema } from "../../db/productsSchema"; +import { productsTable, createProductSchema, updateProductSchema } from "../../db/productsSchema"; type ProductType = z.infer; @@ -18,7 +18,7 @@ const router = Router(); router.get('/', listProducts); router.get('/:id', getProductById); router.post('/', validateData(createProductSchema), createProduct); -router.put('/:id', updateProduct); +router.put('/:id', validateData(updateProductSchema), updateProduct); router.delete('/:id', deleteProduct); export default router; \ No newline at end of file diff --git a/api/src/routes/products/productsController.ts b/api/src/routes/products/productsController.ts index 31bad19..812117a 100644 --- a/api/src/routes/products/productsController.ts +++ b/api/src/routes/products/productsController.ts @@ -52,7 +52,7 @@ export async function createProduct(req: Request, res: Response) { export async function updateProduct(req: Request, res: Response) { try{ const id = Number(req.params.id); - const updatedFields = req.body; + const updatedFields = req.cleanBody; const result = await db .update(productsTable)