Untitled

 avatar
unknown
plain_text
5 months ago
1.4 kB
3
Indexable
exports.deleteAttributes = catchAsync(async (req, res, next) => {
  let { product_id } = req.body;
  const session = await mongoose.startSession();

  try {
    session.startTransaction();

    if (!product_id) {
      return next(new AppError('id is required', 400));
    }

    const prod = await Product.findById(product_id).session(session);
    if (!prod) {
      return next(new AppError('Prod', 400));
    }

    const attributes = await VariantAttribute.find({product:product_id}).select("_id").session(session);
      if (attributes.length < 1) {
        return next(new AppError(`Attributes not found`, 400));
      }
    for (let att of attributes) {
      
      await VariantValue.deleteMany({ attribute: att._id }).session(session); // Delete associated values
      await VariantAttribute.deleteOne({_id:att._id }).session(session);
    }

    // delete variants 
    await ProductVariant.deleteMany({ _id: {$in : prod.variants} }).session(session);
    await prod.updateOne({ $set: { variants: [] } }).session(session);

    await session.commitTransaction();
    session.endSession();

    res.status(200).json({
      success: true,
      message: 'Attributes successfully deleted',
    });
  } catch (error) {
    await session.abortTransaction();
    session.endSession();
    return next(error);
  }
});
Editor is loading...
Leave a Comment