From aededf6da947db18828b2e93c339fdccd3075296 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Mon, 8 Dec 2025 10:35:11 +0330 Subject: [PATCH] review --- src/modules/review/dto/create-review.dto.ts | 21 +++++++++++-------- src/modules/review/dto/update-review.dto.ts | 17 ++++++++------- src/modules/review/entities/review.entity.ts | 5 +++-- src/modules/review/enums/review-point.enum.ts | 15 +++++++++++++ 4 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 src/modules/review/enums/review-point.enum.ts diff --git a/src/modules/review/dto/create-review.dto.ts b/src/modules/review/dto/create-review.dto.ts index 08aac49..dfeab34 100644 --- a/src/modules/review/dto/create-review.dto.ts +++ b/src/modules/review/dto/create-review.dto.ts @@ -1,6 +1,7 @@ -import { IsNotEmpty, IsNumber, IsOptional, IsString, Max, Min, IsArray } from 'class-validator'; +import { IsNotEmpty, IsNumber, IsOptional, IsString, Max, Min, IsArray, IsEnum } from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { Type } from 'class-transformer'; +import { PositivePoint, NegativePoint } from '../enums/review-point.enum'; export class CreateReviewDto { @IsNotEmpty() @@ -28,22 +29,24 @@ export class CreateReviewDto { @IsOptional() @IsArray() - @IsString({ each: true }) + @IsEnum(PositivePoint, { each: true }) @ApiPropertyOptional({ description: 'Positive points about the food', - example: ['Great taste', 'Fast delivery'], - type: [String] + example: [PositivePoint.GREAT_TASTE, PositivePoint.FAST_DELIVERY], + enum: PositivePoint, + isArray: true }) - positivePoints?: string[]; + positivePoints?: PositivePoint[]; @IsOptional() @IsArray() - @IsString({ each: true }) + @IsEnum(NegativePoint, { each: true }) @ApiPropertyOptional({ description: 'Negative points about the food', - example: ['Too spicy', 'Small portion'], - type: [String] + example: [NegativePoint.TOO_SPICY, NegativePoint.SMALL_PORTION], + enum: NegativePoint, + isArray: true }) - negativePoints?: string[]; + negativePoints?: NegativePoint[]; } diff --git a/src/modules/review/dto/update-review.dto.ts b/src/modules/review/dto/update-review.dto.ts index efa8008..206b88e 100644 --- a/src/modules/review/dto/update-review.dto.ts +++ b/src/modules/review/dto/update-review.dto.ts @@ -1,6 +1,7 @@ -import { IsBoolean, IsNumber, IsOptional, IsString, Max, Min, IsArray } from 'class-validator'; +import { IsBoolean, IsNumber, IsOptional, IsString, Max, Min, IsArray, IsEnum } from 'class-validator'; import { ApiPropertyOptional } from '@nestjs/swagger'; import { Type } from 'class-transformer'; +import { PositivePoint, NegativePoint } from '../enums/review-point.enum'; export class UpdateReviewDto { @IsOptional() @@ -18,21 +19,23 @@ export class UpdateReviewDto { @IsOptional() @IsArray() - @IsString({ each: true }) + @IsEnum(PositivePoint, { each: true }) @ApiPropertyOptional({ description: 'Positive points about the food', - type: [String] + enum: PositivePoint, + isArray: true }) - positivePoints?: string[]; + positivePoints?: PositivePoint[]; @IsOptional() @IsArray() - @IsString({ each: true }) + @IsEnum(NegativePoint, { each: true }) @ApiPropertyOptional({ description: 'Negative points about the food', - type: [String] + enum: NegativePoint, + isArray: true }) - negativePoints?: string[]; + negativePoints?: NegativePoint[]; @IsOptional() @IsBoolean() diff --git a/src/modules/review/entities/review.entity.ts b/src/modules/review/entities/review.entity.ts index dec4434..5060aa0 100644 --- a/src/modules/review/entities/review.entity.ts +++ b/src/modules/review/entities/review.entity.ts @@ -3,6 +3,7 @@ import { BaseEntity } from '../../../common/entities/base.entity'; import { Food } from '../../foods/entities/food.entity'; import { User } from '../../users/entities/user.entity'; import { Order } from 'src/modules/orders/entities/order.entity'; +import { PositivePoint, NegativePoint } from '../enums/review-point.enum'; @Entity({ tableName: 'food_comments' }) @Unique({ properties: ['order', 'food', 'user'] }) @@ -23,10 +24,10 @@ export class Review extends BaseEntity { rating: number = 0; @Property({ type: 'json', nullable: true }) - positivePoints?: string[]; + positivePoints?: PositivePoint[]; @Property({ type: 'json', nullable: true }) - negativePoints?: string[]; + negativePoints?: NegativePoint[]; @Property({ type: 'boolean', default: false }) isApproved: boolean = false; diff --git a/src/modules/review/enums/review-point.enum.ts b/src/modules/review/enums/review-point.enum.ts new file mode 100644 index 0000000..05f4058 --- /dev/null +++ b/src/modules/review/enums/review-point.enum.ts @@ -0,0 +1,15 @@ +export enum PositivePoint { + GREAT_TASTE = 'great_taste', + FAST_DELIVERY = 'fast_delivery', + GOOD_QUALITY = 'good_quality', + GOOD_PORTION_SIZE = 'good_portion_size', + FRIENDLY_SERVICE = 'friendly_service', +} + +export enum NegativePoint { + SMALL_PORTION = 'small_portion', + SLOW_DELIVERY = 'slow_delivery', + POOR_QUALITY = 'poor_quality', + OVERPRICED = 'overpriced', + UNFRIENDLY_SERVICE = 'unfriendly_service', +}