// // src/controllers/review.controller.ts
// import {
//   Body,
//   Controller,
//   Get,
//   Post,
//   Delete,
//   Route,
//   Tags,
//   Path,
//   Security,
//   Request,
//   SuccessResponse,
// } from 'tsoa';
// import { Review } from '../entity/review';
// import { AppDataSource } from '../data-source';
// import { ReviewRequest } from '../models/dto/review';
// import { ReviewResponse } from '../models/dto/review';

// const reviewRepository = AppDataSource.getRepository(Review);

// @Route('reviews')
// @Tags('Review')
// @Security('jwt')
// export class ReviewController extends Controller {
//   @SuccessResponse('201', 'Created')
//   @Post()
//   public async createReview(
//     @Request() req: any,
//     @Body() body: ReviewRequest
//   ): Promise<ReviewResponse> {
//     const userId = req.user.userId;
//     const review = reviewRepository.create({
//       ...body,
//       user_id: userId
//     });

//     const result = await reviewRepository.save(review);
//     return result;
//   }

//   @Get('product/{productId}')
//   public async getProductReviews(@Path() productId: number): Promise<ReviewResponse[]> {
//     return reviewRepository.find({
//       where: { product_id: productId },
//       relations: ['user']
//     });
//   }

//   @Delete('{reviewId}')
//   public async deleteReview(
//     @Path() reviewId: number,
//     @Request() req: any
//   ): Promise<void> {
//     const userId = req.user.userId;
//     const review = await reviewRepository.findOne({
//       where: { review_id: reviewId, user_id: userId }
//     });

//     if (!review) {
//       this.setStatus(404);
//       throw new Error('Review not found or not authorized');
//     }

//     await reviewRepository.delete(reviewId);
//     this.setStatus(204);
//   }
// }