From 714e59dfe734cca2780c5dd401545378f22c5ad6 Mon Sep 17 00:00:00 2001 From: Martin Korec <xkorec2@fi.muni.cz> Date: Sat, 18 Jun 2022 01:52:10 +0200 Subject: [PATCH] fix: add create and update validation for directors --- .../src/api/directors/directors.service.ts | 15 ++++++++++---- .../api/directors/dto/create-director.dto.ts | 20 ++++++++++++++++++- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/backend/src/api/directors/directors.service.ts b/backend/src/api/directors/directors.service.ts index 8a5374d..417b72b 100644 --- a/backend/src/api/directors/directors.service.ts +++ b/backend/src/api/directors/directors.service.ts @@ -2,14 +2,17 @@ import { Injectable } from '@nestjs/common'; import { CreateDirectorDto } from './dto/create-director.dto'; import { UpdateDirectorDto } from './dto/update-director.dto'; import { PrismaService } from '../../prisma.service'; +import { plainToClass } from 'class-transformer'; +import { DirectorEntity } from './entities/director.entity'; @Injectable() export class DirectorsService { constructor(private prisma: PrismaService) {} async create(createDirectorDto: CreateDirectorDto) { + const director = plainToClass(DirectorEntity, createDirectorDto); return await this.prisma.director.create({ - data: createDirectorDto, + data: director, }); } @@ -26,12 +29,16 @@ export class DirectorsService { } async update(id: string, updateDirectorDto: UpdateDirectorDto) { + const updatedDirector = { + ...await this.findOne(id), + ...plainToClass(DirectorEntity, updateDirectorDto), + }; return await this.prisma.director.update({ where: { id, }, data: { - ...updateDirectorDto, + ...updatedDirector, }, }); } @@ -43,8 +50,8 @@ export class DirectorsService { deletedAt: null, }, select: { - id: true - } + id: true, + }, }); if (directorMovie === undefined) { diff --git a/backend/src/api/directors/dto/create-director.dto.ts b/backend/src/api/directors/dto/create-director.dto.ts index f1c2bc8..35a268c 100644 --- a/backend/src/api/directors/dto/create-director.dto.ts +++ b/backend/src/api/directors/dto/create-director.dto.ts @@ -1,5 +1,23 @@ +import { + IsDate, + IsNotEmpty, + IsOptional, + IsString, + MaxDate, +} from 'class-validator'; + export class CreateDirectorDto { + @IsNotEmpty() + @IsString() readonly name: string; + + @IsNotEmpty() + @IsString() readonly surname: string; - readonly birthDate?: string; + + @IsNotEmpty() + @IsDate() + @IsOptional() + @MaxDate(new Date()) + readonly birthDate?: Date; } -- GitLab