UNPKG

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
"use strict"; 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;