No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Borrando registros

9/25
Recursos

Aportes 7

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Continuando con las buenas practicas (try-catch, http-notfound)

    @DeleteMapping("/{idPizza}")
    public ResponseEntity<?> delete(@PathVariable int idPizza){
        try {
            if (this.pizzaService.exists(idPizza)) {
                this.pizzaService.delete(idPizza);
                return ResponseEntity.ok().build();
            }
            return ResponseEntity.status(HttpStatus.NOT_FOUND).body("La Pizza no Existe!");
        } catch (Exception e) {
            log.error(e.getMessage());
            return ResponseEntity.internalServerError().build();
        }
    }

Para no tener doble return:

@DeleteMapping("/{id}")
public ResponseEntity<Void> delete(@PathVariable int id) {
    ResponseEntity<Void> responseEntity = ResponseEntity.notFound().build();
    if (this.pizzaService.exists(id)) {
        this.pizzaService.delete(id);
        responseEntity = ResponseEntity.ok().build();
    }
    return responseEntity;
}

✨ Detalles ✨

Hoy en día, ningún registro se debe de eliminar en una base de datos, en lugar de desaparecerlo, debemos "desactivar el registro", es decir, hacer que ya no aparezca en nuestra consulta o que ya no tenga las funcionalidades que tenía en la base de datos. Es una mejor práctica.
El metodo delete ya hace un select para verificar si existe o no el registro. Al hacer un if exist estamos duplicando la cantidad de verficaciones y aumentando las consultas a la BD. No mejor usar try-catch para validar si hubo algun tipo de error al eliminar y manejar la validación desde el error en el Service? propongo este manejo, para el Service ```js public boolean delete(int idPizza) { try { this.pizzaRepository.deleteById(idPizza); return true; } catch (Exception e) { return false; } } ```Para el controller ```js @DeleteMapping("/{idPizza}") public ResponseEntity<Void> delete(@PathVariable int idPizza) { return (this.pizzaService.delete(idPizza)) ? ResponseEntity.ok().build() : ResponseEntity.badRequest().build(); } ```

No seria mejor que en el endpoint de get pizzas lanzar un error 404 Not Found sino se encuentra la pizza, en lugar de retornar algo ok y vacio

Venia trabajando de lo mas bien, apague la pc, y luego cuando retome estoy con este problema, y no se como solucionarlo,,alguin poderia ayudarme? ![](https://static.platzi.com/media/user_upload/image-04715489-f68e-4bb6-9637-73ad669de514.jpg)![](https://static.platzi.com/media/user_upload/image-01f892e9-6389-434a-9524-1b55b30d66c3.jpg)

Yo realice el proceso de eliminar asi (se que faltan excepciones y eso)

Service:

public boolean delete(int idPizza){
        if (exists(idPizza)){
            this.pizzaRepository.deleteById(idPizza);
            return true;
        }
        return false;
    }

Controller:

@DeleteMapping("/{idPizza}")
    public ResponseEntity<String> delete(@PathVariable(name = "idPizza") int idPizza) {
        if (this.pizzaService.delete(idPizza)){
            return ResponseEntity.ok("Pizza with ID: " + idPizza + " Deleted");
        }
        return ResponseEntity.notFound().build();
    }