import { IsOptional, IsString, IsNumber, Min, IsIn, IsEnum, IsDateString, IsArray, } from 'class-validator'; import { Type, Transform } from 'class-transformer'; import { ApiPropertyOptional } from '@nestjs/swagger'; import { OrderStatusEnum } from '../interface/order.interface'; import { PaymentStatusEnum } from '../../payment/interface/payment'; const sortOrderOptions = ['asc', 'desc'] as const; type SortOrder = (typeof sortOrderOptions)[number]; export class FindOrderItemsDto { @ApiPropertyOptional({ default: 1, minimum: 1 }) @IsOptional() @Type(() => Number) @IsNumber() @Min(1) page: number = 1; @ApiPropertyOptional({ default: 10, minimum: 1 }) @IsOptional() @Type(() => Number) @IsNumber() @Min(1) limit: number = 10; @ApiPropertyOptional() @IsOptional() @IsString() search?: string; @ApiPropertyOptional({ default: 'createdAt' }) @IsOptional() @IsString() orderBy: string = 'createdAt'; @ApiPropertyOptional({ enum: sortOrderOptions, default: 'desc', }) @IsOptional() @IsIn(sortOrderOptions) order: SortOrder = 'desc'; }