From fca00d8ff476d8eb603cc1e52dd501575039edf7 Mon Sep 17 00:00:00 2001 From: Paul Reichmuth Date: Wed, 4 Feb 2026 16:19:45 +0100 Subject: [PATCH] add deleteRacer mapping --- .../controllers/RacerRestController.java | 18 +++++++++++++++--- .../services/RacerService.java | 10 +++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/RacerRestController.java b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/RacerRestController.java index a176d8c..da2862e 100644 --- a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/RacerRestController.java +++ b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/RacerRestController.java @@ -3,6 +3,7 @@ package de.pnreichmuth.timekeep_backend.controllers; import de.pnreichmuth.timekeep_backend.entities.Racer; import de.pnreichmuth.timekeep_backend.entities.Team; import de.pnreichmuth.timekeep_backend.exceptions.RacerExistsException; +import de.pnreichmuth.timekeep_backend.exceptions.RacerNotFoundException; import de.pnreichmuth.timekeep_backend.exceptions.TeamNotFoundException; import de.pnreichmuth.timekeep_backend.services.RacerService; import de.pnreichmuth.timekeep_backend.services.TeamService; @@ -49,7 +50,7 @@ public class RacerRestController { } @GetMapping("singleRacer") - public ResponseEntity<@NonNull RacerWSTO> getSingleRacers(@RequestParam Racer requestRacer){ + public ResponseEntity<@NonNull RacerWSTO> getSingleRacers(@RequestBody Racer requestRacer){ Racer actualRacer = racerService.getRacer(requestRacer.getFirstName(), requestRacer.getLastName()); if (actualRacer == null){ return ResponseEntity.of( @@ -65,7 +66,7 @@ public class RacerRestController { } @GetMapping("byTeam") - public ResponseEntity<@NonNull List> getByTeam(@RequestParam Team requestTeam){ + public ResponseEntity<@NonNull List> getByTeam(@RequestBody Team requestTeam){ UUID teamID = requestTeam.getId(); String teamName = requestTeam.getTeamName(); Team dbTeam; @@ -81,6 +82,17 @@ public class RacerRestController { } // ////////////////////////////////////////////////BEGIN DELETE MAPPINGS/////////////////////////////////////////////////// - + @DeleteMapping("/removeRacer") + public ResponseEntity removeRacer(@RequestBody Racer racer){ + try { + racerService.deleteRacer(racer); + return ResponseEntity.ok(racer); + } + catch (IllegalArgumentException e) { + return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, e.getMessage())).build(); + } catch (RacerNotFoundException e) { + return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND, e.getMessage())).build(); + } + } } diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/services/RacerService.java b/src/main/java/de/pnreichmuth/timekeep_backend/services/RacerService.java index 3a7d456..6288752 100644 --- a/src/main/java/de/pnreichmuth/timekeep_backend/services/RacerService.java +++ b/src/main/java/de/pnreichmuth/timekeep_backend/services/RacerService.java @@ -72,9 +72,13 @@ public class RacerService { return racerRepository.save(racer); } - public void deleteRacer(UUID id) throws RacerNotFoundException { - Racer racer = racerRepository.findById(id).orElse(null); - if(racer == null) throw new RacerNotFoundException("Racer not found"); + public void deleteRacer(Racer racer) throws RacerNotFoundException { + Racer dbRacer; + if(racer.getRacerID() != null) dbRacer = racerRepository.getRacerByFirstNameAndLastName(racer.getFirstName(),racer.getLastName()).orElse(null); + else if(racer.getFirstName() != null && racer.getLastName() != null) dbRacer = racerRepository.getRacerByFirstNameAndLastName(racer.getFirstName(),racer.getLastName()).orElse(null); + else throw new IllegalArgumentException("Must provide either Racer ID or full Racer name"); + if(dbRacer == null) throw new RacerNotFoundException("Racer not found"); + racerRepository.delete(dbRacer); } public void updateRacer(Racer racer) throws RacerExistsException{