medusa-plugin-reviews-and-ratings
Version:
Medusa plugin to add product reviews and ratings functionality in the project.
42 lines (41 loc) • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.POST = void 0;
const typeorm_1 = require("typeorm");
const product_review_1 = require("../../../models/product-review");
const POST = async (req, res) => {
try {
const productIds = req.body.productIds;
const manager = req.scope.resolve("manager");
const productReviewRepo = manager.getRepository(product_review_1.ProductReview);
const reviews = await productReviewRepo.find({
where: {
product: { id: (0, typeorm_1.In)(productIds) }
},
relations: ["product"]
});
const productRatings = {};
reviews.forEach((review) => {
const { product } = review;
const productId = product === null || product === void 0 ? void 0 : product.id;
const rating = review.rating;
if (!productRatings[productId]) {
productRatings[productId] = { totalRating: 0, count: 0 };
}
productRatings[productId].totalRating += rating;
productRatings[productId].count++;
});
const avgRatings = {};
Object.keys(productRatings).forEach((productId) => {
const { totalRating, count } = productRatings[productId];
const avgRating = count > 0 ? totalRating / count : 0;
avgRatings[productId] = avgRating;
});
return res.json(avgRatings);
}
catch (error) {
console.log('error', error);
return res.status(500).json({ error: "Internal Server Error" });
}
};
exports.POST = POST;