Skip to content

Commit

Permalink
[finishes #187906865 ] add reviews to products using single fetch
Browse files Browse the repository at this point in the history
  • Loading branch information
amin-leon committed Jul 4, 2024
1 parent 44883ed commit 35907d2
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 32 deletions.
34 changes: 5 additions & 29 deletions src/controllers/productsController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,10 @@ export const getAllProduct = async (req: Request, res: Response) => {
try {
// Fetch all products with their associated sizes
const products: any = await Product.findAll({
include: [{ model: Size, as: 'sizes' }],
include: [
{ model: Size, as: 'sizes' },
{ model: Review, as: 'reviews', include: [{ model: User, as: 'user', attributes: ['photoUrl', 'firstName'] }] },
],
});

const currentDate = new Date();
Expand Down Expand Up @@ -277,7 +280,7 @@ export const getProductById = async (req: Request, res: Response) => {
try {
const { productId } = req.params;
const product = await Product.findByPk(productId, {
include: [{ model: Size, as: 'sizes' }],
include: [{ model: Size, as: 'sizes' },{ model: Review, as: 'reviews', include: [{ model: User, as: 'user', attributes: ['photoUrl', 'firstName'] }] },],
});

if (!product) {
Expand Down Expand Up @@ -483,30 +486,3 @@ export const calculateAverageRating = async (req: Request, res: Response) => {
}
};

// get product review ---- Buyer
export const getProductReviewsById = async (req: Request, res: Response) => {
try {
const { productId } = req.params;
const product = await Product.findByPk(productId, {
include: [
{ model: Size, as: 'sizes' },
{ model: Review, as: 'reviews', include: [{ model: User, as: 'user', attributes: ['photoUrl', 'firstName'] }] },
],
});

if (!product) {
return res.status(404).json({
ok: false,
message: 'Product not found',
});
}

res.status(200).json({
ok: true,
message: 'Product retrieved successfully',
data: product,
});
} catch (error) {
sendInternalErrorResponse(res, error);
}
};
4 changes: 1 addition & 3 deletions src/routes/productRoutes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import {
provideReviewToProduct,
calculateAverageRating,
deleteReview,
getProductReviewsById,
} from '../controllers/productsController';
import multerUpload from '../helpers/multer';
import { checkUserRoles, isAuthenticated } from '../middlewares/authMiddlewares';
Expand Down Expand Up @@ -45,7 +44,6 @@ router.put('/:sizeId/available', isAuthenticated, checkUserRoles('seller'), mark
router.put('/:sizeId/unavailable', isAuthenticated, checkUserRoles('seller'), markProductAsUnavailable);
router.post('/:productId/review/', isAuthenticated, multerUpload.single('feedbackImage'), provideReviewToProduct);
router.delete('/:productId/review/:reviewId', isAuthenticated, deleteReview);
router.get('/:productId/review/statistics', isAuthenticated, calculateAverageRating);
router.get('/:productId/reviews', getProductReviewsById);
router.get('/:productId/review/statistics', calculateAverageRating);

export default router;

0 comments on commit 35907d2

Please sign in to comment.