{{#if swaggerEnabled}}
import { ApiProperty } from '@nestjs/swagger';
{{/if}}
import { IsOptional, IsString, IsNumber, IsEnum } from 'class-validator';
{{#if (needsTypeImport fields)}}
import { Type } from 'class-transformer';
{{/if}}
import { BaseQueryDto } from '@modules/common/dto/base-query.dto';
{{#if (uniqueEnums fields)}}
import { {{uniqueEnums fields}} } from '@prisma/client';
{{/if}}

export class Query{{pascalName}}Dto extends BaseQueryDto {
  {{#each fields}}
  {{#if (isQueryField this)}}
  {{#if ../swaggerEnabled}}
  @ApiProperty({
    description: '{{name}}',
    required: false,
    type: {{swaggerType type isList}},
  })
  {{/if}}
  @IsOptional()
  {{#if (eq type 'string')}}
  @IsString()
  {{else if (eq type 'number')}}
  @IsNumber()
  @Type(() => Number)
  {{else if (eq type 'boolean')}}
  @Type(() => Boolean)
  {{else if (eq type 'Date')}}
  @Type(() => Date)
  {{/if}}
  {{#if (eq kind 'object')}}
  {{name}}?: string; // 关系字段使用ID
  {{else}}
  {{name}}?: {{type}};
  {{/if}}

  {{/if}}
  {{/each}}
}