mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-08-25 05:42:27 +00:00
36 lines
1.6 KiB
TypeScript
36 lines
1.6 KiB
TypeScript
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
|
import { Transform } from 'class-transformer';
|
|
import { IsArray, IsDateString, IsNotEmpty, IsNumber, IsOptional, IsString, IsUUID } from 'class-validator';
|
|
import { i18nValidationMessage as i18n } from 'nestjs-i18n';
|
|
export class CreateGoalRequestDto {
|
|
@ApiProperty()
|
|
@IsString({ message: i18n('validation.IsString', { path: 'general', property: 'goal.name' }) })
|
|
@IsNotEmpty({ message: i18n('validation.IsNotEmpty', { path: 'general', property: 'goal.name' }) })
|
|
name!: string;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsString({ message: i18n('validation.IsString', { path: 'general', property: 'goal.description' }) })
|
|
@IsOptional()
|
|
description?: string;
|
|
|
|
@ApiProperty({ example: '2021-12-31' })
|
|
@IsDateString({}, { message: i18n('validation.IsDateString', { path: 'general', property: 'goal.dueDate' }) })
|
|
dueDate!: string;
|
|
|
|
@ApiProperty()
|
|
@IsNumber({}, { message: i18n('validation.IsNumber', { path: 'general', property: 'goal.targetAmount' }) })
|
|
@IsNotEmpty({ message: i18n('validation.IsNotEmpty', { path: 'general', property: 'goal.targetAmount' }) })
|
|
targetAmount!: number;
|
|
|
|
@ApiProperty()
|
|
@IsArray({ message: i18n('validation.IsArray', { path: 'general', property: 'goal.categoryIds' }) })
|
|
@IsUUID('4', { each: true, message: i18n('validation.IsUUID', { path: 'general', property: 'goal.categoryIds' }) })
|
|
@Transform(({ value }) => (typeof value === 'string' ? [value] : value))
|
|
categoryIds!: string[];
|
|
|
|
@ApiPropertyOptional()
|
|
@IsUUID('4', { message: i18n('validation.IsUUID', { path: 'general', property: 'goal.imageId' }) })
|
|
@IsOptional()
|
|
imageId?: string;
|
|
}
|