import { ApiProperty } from "@nestjs/swagger"
import { IsOptional, IsString, IsNumber, Min } from "class-validator"
import appConfig from "src/config/app.config"

export class FindAllStateDto {
  @ApiProperty({
    required: false,
    description: "Number of records per page",
    example: 10,
  })
  @IsOptional()
  @IsNumber()
  @Min(1)
  limit?: number = Number(appConfig().pagination.take)

  @ApiProperty({
    required: false,
    default: 0,
    description: "Number of records to skip",
    example: 0,
  })
  @IsOptional()
  @IsNumber()
  @Min(0)
  skip?: number = Number(appConfig().pagination.skip)

  @ApiProperty({
    required: false,
    description: "sort by",
    example: "name",
  })
  @IsOptional()
  @IsString()
  sortBy?: string

  @ApiProperty({
    required: false,
    enum: ["ASC", "DESC"],
    description: "Sort order",
  })
  @IsOptional()
  sortOrder?: "ASC" | "DESC"

  @ApiProperty({
    required: false,
    description: "Search filters: e.g., 'India'",
    example: "India",
  })
  @IsOptional()
  @IsString()
  search?: string

  @ApiProperty({
    required: false,
    description: "List of country ids to filter by",
    example: [1, 2],
  })
  @IsOptional()
  country_id?: string
}
