// ============================================================
// DTO fuer Custom Fields — Werte setzen (Bulk-Upsert)
// ============================================================

import { IsArray, IsUUID, ValidateNested } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';
import { Type } from 'class-transformer';

export class CustomFieldValueItemDto {
  @ApiProperty({ format: 'uuid', description: 'ID der Feld-Definition' })
  @IsUUID()
  fieldDefId!: string;

  @ApiProperty({
    description: 'Wert: string | number | boolean | string[] | null',
    oneOf: [
      { type: 'string' },
      { type: 'number' },
      { type: 'boolean' },
      { type: 'array', items: { type: 'string' } },
      { nullable: true },
    ],
  })
  // HINWEIS: Keine class-validator Dekoration fuer value, da Union-Type.
  // Validierung gegen fieldType erfolgt im Service.
  value!: string | number | boolean | string[] | null;
}

export class SetCustomFieldValuesDto {
  @ApiProperty({ type: [CustomFieldValueItemDto], description: 'Alle Werte fuer eine Entity' })
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => CustomFieldValueItemDto)
  values!: CustomFieldValueItemDto[];
}
