Minicurso NestJs

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

View on GitHub

Voltar

Aula 12 - Finalização do CRUD de usuário, edição e testes finais.

Edição no Service

Para a edição do cadastro de usuário, devemos alterar os arquivos usuario.service.ts e usuario.controller.ts.

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

...
update(id: number, updateUsuarioDto: UpdateUsuarioDto) {
  return this.usuarioServiceRepository.update(id, updateUsuarioDto);
}
...

Validação de usuário já cadastrado

Necessitamos, assim como na criação, a validação se esse usuário que está sendo editado teve seu e-mail alterado e informado o e-mail de outro usuário já existente.

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

import { ..., Not } from 'typeorm';
...
getRepeatedUsuario(id: number, email: string) {
  return this.usuarioServiceRepository.findOneBy({
    email: email,
    id: Not(id),
  });
}
...

Este método usa uma função do TypeORM not que usamos lá no CRUD de pessoa.

No arquivo usuario.controller.ts podemos usar este método para validar a alteração no cadastro do usuário alterando o método update.

...
async update(@Param('id') id: string, @Body() updateUsuarioDto: UpdateUsuarioDto) {
  delete updateUsuarioDto.password;
  delete updateUsuarioDto.verify_password;

  let usuarioExiste = await this.usuarioService.getRepeatedUsuario(+id, updateUsuarioDto.email);
  if (null != usuarioExiste)
    throw new HttpException(
      'Já existe um usuário com este e-mail',
      HttpStatus.BAD_REQUEST,
    );

  return this.usuarioService.update(+id, updateUsuarioDto);
}
...

Para testarmos, incluí um novo usuário e 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 12, terminamos o CRUD do usuário e testamos a edição do usuário com uma validação.

Referências