import { Type } from 'class-transformer';
import { InputType } from '@nestjs/graphql';
import { WorkUnitMetadata } from '../../pipeline-tasks/models/work-unit-metadata.model';
import {
  IsInstance,
  IsOptional,
  IsString,
  IsUUID,
  MaxLength,
  ValidateNested,
} from 'class-validator';

@InputType({ isAbstract: true })
export class CreatePipelineInput {
  @IsUUID()
  projectId: string;

  @IsString()
  @MaxLength(100)
  branch: string;

  @IsString()
  @MaxLength(32)
  name: string;

  @Type(() => WorkUnitMetadata)
  @IsOptional()
  @ValidateNested()
  @IsInstance(WorkUnitMetadata)
  workUnitMetadata: WorkUnitMetadata;
}