Minicurso NestJs

Minicurso NestJs desenvolvido na cadeira de tópicos avançados em tecnologia da informação

View on GitHub

Voltar

Aula 8 - - Finalização do CRUD de pessoa, edição da pessoa.

Edição no Service

Para a edição do cadastro de pessoa, devemos alterar os arquivos pessoa.service.ts e pessoa.controller.ts.

No arquivo pessoa.service.ts iremos editar o método update, que deverá ficar da seguinte forma:

...
update(id: number, updatePessoaDto: UpdatePessoaDto) {
  return this.pessoaServiceRepository.update(id, updatePessoaDto);
}
...

Validação de pessoa já cadastrada

Necessitamos, assim como na criação, a validação se essa pessoa que está sendo editada teve seu CPF alterado e informado o CPF de outra pessoa já existente.

Para isso vamos adicionar um novo método dentro do arquivo pessoa.service.ts, ficando da seguinte forma:

import { ..., Not } from 'typeorm';
...
getRepeatedPessoa(id: number, cpf: string) {
  return this.pessoaServiceRepository.findOneBy({
    cpf: cpf,
    id: Not(id),
  });
}
...

Este método usa uma função do TypeORM que não usamos ainda, o not, neste exemplo a query irá buscar todas as pessoas que tem o CPF informado, menos a pessoa que está sendo editada, representada pelo campo id.

No arquivo pessoa.controller.ts podemos usar este método para validar a alteração no cadastro da pessoa alterando o método update.

...
@Patch(':id')
async update(@Param('id') id: string, @Body() updatePessoaDto: UpdatePessoaDto) {
  let pessoaExiste = await this.pessoaService.getRepeatedPessoa(+id, updatePessoaDto.cpf);
  if(null != pessoaExiste)
    throw new HttpException(
      'Já existe uma pessoa com este CPF',
      HttpStatus.BAD_REQUEST,
    );

  return this.pessoaService.update(+id, updatePessoaDto);
}
...

Para testarmos, deixei o banco de dados da seguinte forma:

Banco de dados

Dessa forma, executando uma URL no Bruno para tentar editar um registro inserindo o CPF que já existe em outro registro, irá retornar uma mensagem de erro, conforme observado:

Retorno do cadastro

Fim da aula 8, terminamos o CRUD de pessoa e testamos a edição da pessoa com uma validação.

Referências