/**
 * Update or invalidate bodyshop cache
 * @param req
 * @param res
 * @returns {Promise<void>}
 */
const updateBodyshopCache = async (req, res) => {
  const {
    sessionUtils: { updateOrInvalidateBodyshopFromRedis },
    logger
  } = req;

  const { event } = req.body;
  const { new: newData } = event.data;

  try {
    if (newData && newData.id) {
      // Update cache with the full new data object
      await updateOrInvalidateBodyshopFromRedis(newData.id, newData);
      logger.logger.debug("Bodyshop cache updated successfully.");
    } else {
      // Invalidate cache if no valid data provided
      await updateOrInvalidateBodyshopFromRedis(newData.id);
      logger.logger.debug("Bodyshop cache invalidated successfully.");
    }
    res.status(200).json({ success: true });
  } catch (error) {
    logger.log("bodyshop-cache-update-error", "ERROR", "api", "redis", {
      message: error?.message,
      stack: error?.stack
    });
    res.status(500).json({ success: false, error: error.message });
  }
};

module.exports = updateBodyshopCache;
