diff --git a/backend/src/controller/OrderProductController.ts b/backend/src/controller/OrderProductController.ts index 0f6a21e96696f28d177ed2c7675af1121282c731..75a175696dccfa0aececbdadbd141ea3b08a8954 100644 --- a/backend/src/controller/OrderProductController.ts +++ b/backend/src/controller/OrderProductController.ts @@ -24,6 +24,37 @@ class OrderProductController { } } + async createOrderProductBulk(req: Request, res: Response) { + try { + const newOrderProducts = req.body.map( + (orderProduct: OrderProduct) => { + const newOrderProduct = new OrderProduct(); + newOrderProduct.id_order = orderProduct.id_order; + newOrderProduct.id_product = orderProduct.id_product; + newOrderProduct.num_product = orderProduct.num_product; + + return newOrderProduct; + }, + ); + + console.log(newOrderProducts); + await new OrderProductRepo().createOrderProductBulk( + newOrderProducts, + ); + + res.status(201).json({ + status: "Created!", + message: "Successfully created order product batch!", + }); + } catch (error) { + console.log(error); + res.status(500).json({ + status: "Internal Server Error!", + message: "Internal Server Error!", + }); + } + } + async deleteOrderProduct(req: Request, res: Response) { try { const id_order = parseInt(req.params["id_order"]); diff --git a/backend/src/repository/OrderProductRepo.ts b/backend/src/repository/OrderProductRepo.ts index c83e977eea63a39406d3af0e71289c01b8c5187f..ba0d9165139a7f1e80bb20c05e0e9199afc51ae3 100644 --- a/backend/src/repository/OrderProductRepo.ts +++ b/backend/src/repository/OrderProductRepo.ts @@ -76,6 +76,28 @@ export default class OrderProductRepo implements IOrderProductRepo { } } + async createOrderProductBulk( + orderProducts: readonly Partial<OrderProduct>[], + ): Promise<void> { + try { + console.log(orderProducts); + const newOrderProducts = orderProducts.map( + (orderProduct: Partial<OrderProduct>) => { + return { + id_order: orderProduct.id_order, + id_product: orderProduct.id_product, + num_product: orderProduct.num_product, + }; + }, + ); + await OrderProduct.bulkCreate(newOrderProducts); + } catch (error: any) { + throw new Error( + `Error while creating order product batch: ${error.message}`, + ); + } + } + async updateOrderProduct(orderProduct: OrderProduct): Promise<void> { try { const existingOrderProduct = await OrderProduct.findOne({ diff --git a/backend/src/router/OrderProductRouter.ts b/backend/src/router/OrderProductRouter.ts index 77a217ec35f860bb4fc2e4b2f7b0db3d669cfae9..cb07760e1408beee560fe5f774fdc113cfe0c541 100644 --- a/backend/src/router/OrderProductRouter.ts +++ b/backend/src/router/OrderProductRouter.ts @@ -14,6 +14,10 @@ class OrderProductRoutes extends BaseRoutes { validate(createOrderProductSchema), OrderProductController.createOrderProduct, ); + this.router.post( + "/bulk", + OrderProductController.createOrderProductBulk, + ); this.router.patch( "/:orderId/:productId", validate(updateOrderProductSchema),