Olá.
Identifiquei que ao alterar o endereço na verdade estava criando um novo endereço no banco de dados. Então quando criei o endereço 1 e associei ao adotante 1, ao alterar o endereço do adotante, aparecia no banco o endereço 2 associado ao adotante 1 e o endereço 1 fica perdido no limbo.
Pra solucionar criei InterfaceEnderecoRepository, EnderecoRepository e o método atualizaEnderecoAdotante em AdotanteRepository ficou:
async atualizaEnderecoAdotante(idAdotante: number, endereco: EnderecoEntity): Promise<{ success: boolean; message?: string }> {
const adotante = await this.repository.findOneBy({id:idAdotante});
if(!adotante){
return { success : false , message : "Adotante não encontrado!"};
}
if(!adotante.endereco){
const novoEndereco = new EnderecoEntity(endereco.cidade,endereco.estado);
adotante.endereco = novoEndereco;
await this.repository.save(adotante);
}else{
const enderecoAtualizar = await this.enderecoRepository.findOneBy({id:adotante.endereco.id});
if(!enderecoAtualizar){
return { success : false , message : "Endereço não localizado!"};
}
Object.assign(enderecoAtualizar,endereco);
await this.enderecoRepository.save(enderecoAtualizar);
}
return { success : true};
}
Agora funciona adequadamente, quando passo um endereço a API identifica se é pra atualizar ou incluir um novo, evitando lixo no banco de dados.
O interessante foi perceber que a InterfaceEnderecoRepository e a EnderecoRepository não precisam existir para funcionar a atualização do endereço dessa maneira.
Há outra solução para resolver esse problema do "endereço órfão"?