import { ApiProperty } from '@nestjs/swagger'; import { Transform, Type } from 'class-transformer'; import { IsArray, IsInt, IsNumber, IsOptional, IsString, Max, Min } from 'class-validator'; export class FindNearbyPoiDto { @ApiProperty({ example: 10.762622 }) @Type(() => Number) @IsNumber() @Min(-90) @Max(90) lat!: number; @ApiProperty({ example: 106.660172 }) @Type(() => Number) @IsNumber() @Min(-180) @Max(180) lng!: number; @ApiProperty({ example: 1500, description: 'Radius in metres (50 - 10000)' }) @Type(() => Number) @IsInt() @Min(50) @Max(10_000) radius!: number; @ApiProperty({ required: false, isArray: true }) @IsOptional() @IsArray() @IsString({ each: true }) @Transform(({ value }) => typeof value === 'string' ? value.split(',').map((s) => s.trim()) : value, ) categories?: string[]; @ApiProperty({ required: false, default: 5 }) @IsOptional() @Type(() => Number) @IsInt() @Min(1) @Max(50) limitPerCategory?: number; }