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

export class FindAllPermissionDto {
  @ApiProperty({ required: false, default: 1, description: "Page number" })
  @IsOptional()
  @IsNumber()
  @Min(0)
  page?: number = 0

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

  @ApiProperty({
    required: false,
    default: 0,
    description: "Number of records to skip",
  })
  @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 Example: Vehicle Management",
    example: "Vehicle Management",
  })
  @IsOptional()
  search?: string
}
