All files / goals dto.ts

100% Statements 13/13
100% Branches 0/0
100% Functions 0/0
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 481x   1x     1x     1x       1x       1x       1x     1x       1x         1x         1x       1x       1x    
import { IsArray, IsIn, IsOptional, IsString, Length } from 'class-validator';
 
export const GOAL_STATUSES = ['not_started', 'on_track', 'at_risk', 'achieved', 'abandoned'] as const;
export type GoalStatusValue = (typeof GOAL_STATUSES)[number];
 
export class CreateGoalDto {
  @IsString()
  @Length(1, 500)
  horizon!: string;
 
  @IsString()
  @Length(1, 500)
  metric!: string;
 
  @IsString()
  @Length(1, 1000)
  target!: string;
 
  @IsOptional()
  @IsArray()
  milestones?: unknown[];
}
 
export class UpdateGoalDto {
  @IsOptional()
  @IsString()
  @Length(1, 500)
  horizon?: string;
 
  @IsOptional()
  @IsString()
  @Length(1, 500)
  metric?: string;
 
  @IsOptional()
  @IsString()
  @Length(1, 1000)
  target?: string;
 
  @IsOptional()
  @IsArray()
  milestones?: unknown[];
 
  @IsOptional()
  @IsIn(GOAL_STATUSES as unknown as string[])
  status?: GoalStatusValue;
}