refactor getRacer to be more universal

This commit is contained in:
2026-02-04 17:55:36 +01:00
parent 43ccc44db8
commit 0a65a47749
2 changed files with 11 additions and 2 deletions

View File

@@ -51,7 +51,7 @@ public class RacerRestController {
@GetMapping("singleRacer") @GetMapping("singleRacer")
public ResponseEntity<@NonNull RacerWSTO> getSingleRacers(@RequestBody Racer requestRacer){ public ResponseEntity<@NonNull RacerWSTO> getSingleRacers(@RequestBody Racer requestRacer){
Racer actualRacer = racerService.getRacer(requestRacer.getFirstName(), requestRacer.getLastName()); Racer actualRacer = racerService.getRacer(requestRacer);
if (actualRacer == null){ if (actualRacer == null){
return ResponseEntity.of( return ResponseEntity.of(
ProblemDetail.forStatusAndDetail( ProblemDetail.forStatusAndDetail(

View File

@@ -52,6 +52,15 @@ public class RacerService {
return racer; return racer;
} }
public Racer getRacer(Racer racer) throws RacerNotFoundException {
Racer dbRacer;
if(racer.getRacerID() != null) dbRacer = racerRepository.getRacerByRacerID(racer.getRacerID()).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");
return dbRacer;
}
public UUID getRacerIdByName(String firstName, String lastName) throws RacerNotFoundException { public UUID getRacerIdByName(String firstName, String lastName) throws RacerNotFoundException {
Racer racer = racerRepository.getRacerByFirstNameAndLastName(firstName,lastName).orElse(null); Racer racer = racerRepository.getRacerByFirstNameAndLastName(firstName,lastName).orElse(null);
if(racer == null) throw new RacerNotFoundException(String.format("Racer with name %s %s not found", firstName, lastName)); if(racer == null) throw new RacerNotFoundException(String.format("Racer with name %s %s not found", firstName, lastName));
@@ -74,7 +83,7 @@ public class RacerService {
public void deleteRacer(Racer racer) throws RacerNotFoundException { public void deleteRacer(Racer racer) throws RacerNotFoundException {
Racer dbRacer; Racer dbRacer;
if(racer.getRacerID() != null) dbRacer = racerRepository.getRacerByFirstNameAndLastName(racer.getFirstName(),racer.getLastName()).orElse(null); if(racer.getRacerID() != null) dbRacer = racerRepository.getRacerByRacerID(racer.getRacerID()).orElse(null);
else if(racer.getFirstName() != null && racer.getLastName() != 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"); else throw new IllegalArgumentException("Must provide either Racer ID or full Racer name");
if(dbRacer == null) throw new RacerNotFoundException("Racer not found"); if(dbRacer == null) throw new RacerNotFoundException("Racer not found");