import { ApiProperty } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import {
  ArrayMinSize,
  IsArray,
  IsInt,
  IsString,
  Min,
  ValidateNested,
} from 'class-validator';

/**
 * 发布任务明细 DTO。
 */
export class PublishTaskItemDto {
  @ApiProperty({ description: '设备 ID', example: 1 })
  @Type(() => Number)
  @IsInt({ message: 'deviceId 必须是整数' })
  @Min(1, { message: 'deviceId 必须大于 0' })
  deviceId!: number;

  @ApiProperty({ description: '目标挡位标签', example: '1.5' })
  @IsString({ message: 'targetPressure 必须是字符串' })
  targetPressure!: string;
}

/**
 * 发布任务 DTO。
 */
export class PublishTaskDto {
  @ApiProperty({ type: [PublishTaskItemDto], description: '任务明细列表' })
  @IsArray({ message: 'items 必须是数组' })
  @ArrayMinSize(1, { message: 'items 至少包含一条明细' })
  @ValidateNested({ each: true })
  @Type(() => PublishTaskItemDto)
  items!: PublishTaskItemDto[];
}
