Olá John!
Analisando o código que você compartilhou, parece que o método nomeExistente
está verificando se o nome do cliente já existe no transporte. No entanto, a lógica do if
dentro desse método parece estar invertida. Atualmente, ele lança um erro se o nome do cliente encontrado for igual ao nome que você está tentando verificar (if (achar === nome)
), mas pelo que você descreveu, você quer lançar um erro se o nome já existir, ou seja, quando você NÃO quer que exista um cliente com o mesmo nome.
Aqui está uma sugestão de como você pode refatorar o método nomeExistente
para lançar um erro se o nome já existir:
private async nomeExistente(id: string, nome: string) {
const transporte = await this.transporteRepository.findOneBy({ id });
if (transporte && transporte.cliente.nome === nome) {
throw new Error('Nome já existente para outro cliente neste transporte');
}
return false; // Retorna falso indicando que não existe um cliente com o mesmo nome
}
E no método criaCliente
, você precisa apenas verificar se a função nomeExistente
retorna true
ou false
. Se ela lançar um erro, o fluxo será interrompido e o erro será propagado. Caso contrário, você pode continuar com o processo de criação do cliente.
Lembre-se de ajustar o tratamento de erros conforme necessário e de testar bem o código para garantir que ele está funcionando como esperado.
Espero ter ajudado e bons estudos!