| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import mongoose from "mongoose";
- import {
- RecommendedProduct,
- Product,
- Menu
- } from "../../../models";
- import {
- DeleteProductResult,
- DeleteProductInput
- } from "./types";
- const deleteProduct = async (userID: string, input: DeleteProductInput): Promise<DeleteProductResult> => {
- try {
- const {
- productIDs
- } = input;
- if (productIDs.length === 0) {
- return {
- message: "productIDs-cannot-be-empty",
- code: 400
- };
- }
- const objectIdArray = productIDs.map(id => new mongoose.Types.ObjectId(id));
- const result = await Product.deleteMany({
- _id: {
- $in: objectIdArray
- },
- userID: userID
- });
- if (result.deletedCount === 0) {
- return {
- message: "product-not-found-or-unauthorized",
- code: 404
- };
- }
- await Menu.updateMany(
- {
- userID: userID
- },
- {
- $pull: {
- products: {
- productID: {
- $in: objectIdArray
- }
- }
- }
- }
- );
- await RecommendedProduct.deleteMany({
- productID: {
- $in: objectIdArray
- },
- userID: userID
- });
- return {
- message: "product-deleted-successfully",
- code: 200
- };
- } catch (error) {
- console.error("DeleteProduct action error:", error);
- return {
- message: "internal-server-error",
- code: 500
- };
- }
- };
- export default deleteProduct;
|