import mongoose from "mongoose"; import { RecommendedProduct, Product, Menu } from "../../../models"; import { DeleteProductResult, DeleteProductInput } from "./types"; const deleteProduct = async (userID: string, input: DeleteProductInput): Promise => { 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;