1
resposta

Como retornar o id que não existe no banco de dados

oi, abri um tópico sobre, mas nao tive mais retorno, mas o colega me ensinou com o código abaixo. Eu queria que, além de verificar se o id existe no banco, sendo que eu tenho uma lista de ids, assim que ele for verificando, quando se deparar com um id que não existe, pega o valor dele e lança uma exception com a mensagem (id(aqui vem o id que não existe) não existe no database) pro exemplo, tem como? tentei mas ele só lançou a exception no console e não consegui pegar o id específico, eu quero que ele retorne na response no postman

public Mono<Boolean> existsAll(List<Integer> lojasIds) {
    return Flux.fromIterable(lojasIds)
        .flatMap(id -> repository.existsByLojaId(id))
        .all(Boolean::booleanValue);
}
1 resposta

Oi, Jade, tudo bem ?

Para isso, você pode modificar um pouco o seu código para lançar uma exceção quando o método existsByLojaId(id) retornar false. Aqui está um exemplo de como você pode fazer isso:

public Flux<Boolean> existsAll(List<Integer> lojasIds) {
    return Flux.fromIterable(lojasIds)
        .flatMap(id -> repository.existsByLojaId(id))
        .flatMap(exists -> {
            if (!exists) {
                throw new ResponseStatusException(
                    HttpStatus.NOT_FOUND, "ID " + id + " não existe no database");
            }
            return Mono.just(true);
        })
        .all(Boolean::booleanValue);
}

No exemplo acima, o código verifica se todas as lojas com os "IDs" fornecidos existem no banco de dados. Se qualquer uma delas não existir, ele lança uma exceção, e o resultado é false. Caso contrário, se todas existirem, o resultado é true. Além disso, a classe ResponseStatusException do Spring para lançar uma exceção com o status "HTTP 404 (Not Found)" e a mensagem personalizada que você gostaria de retornar. A exceção será lançada assim que um "ID" que não existe no banco de dados for encontrado.

Todavia, vale ressaltar que como não tenho acesso ao cenário completo do projeto outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!