From 9bad9847514d4e5769b18f3f4cfbe40c142714e6 Mon Sep 17 00:00:00 2001 From: Paul Reichmuth Date: Wed, 4 Feb 2026 17:48:56 +0100 Subject: [PATCH] refactor getTeam() to be more universal --- .../controllers/RacerRestController.java | 9 ++++----- .../controllers/TeamRestController.java | 14 +++++--------- .../services/TeamService.java | 19 ++++++++++--------- 3 files changed, 19 insertions(+), 23 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 da2862e..e2ce77e 100644 --- a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/RacerRestController.java +++ b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/RacerRestController.java @@ -67,14 +67,13 @@ public class RacerRestController { @GetMapping("byTeam") public ResponseEntity<@NonNull List> getByTeam(@RequestBody Team requestTeam){ - UUID teamID = requestTeam.getId(); - String teamName = requestTeam.getTeamName(); Team dbTeam; try { - if (teamID != null) dbTeam = teamService.getTeam(teamID); - else if (teamName != null) dbTeam = teamService.getTeam(teamName); - else return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, "Must provide either id or name")).build(); + dbTeam = teamService.getTeam(requestTeam); } catch (TeamNotFoundException e) { + return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND, e.getMessage())).build(); + } + catch (IllegalArgumentException e) { return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, e.getMessage())).build(); } List returnList = List.copyOf(dbTeam.getMembers().stream().map(RacerWSTO::of).toList()); diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamRestController.java b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamRestController.java index 5aace9f..7f8c356 100644 --- a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamRestController.java +++ b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamRestController.java @@ -74,19 +74,15 @@ public class TeamRestController { String name = reqTeam.getTeamName(); Team actualTeam; try{ - if(id != null){ - actualTeam = teamService.getTeam(id); //prefer uuid over name, as it is the most reliable way to find a JPA object - } - else if (name != null){ - actualTeam = teamService.getTeam(name); - } - else return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, "Must provide either id or name")).build(); + actualTeam = teamService.getTeam(reqTeam); return new ResponseEntity<>(TeamWSTO.of(actualTeam), HttpStatus.OK); } catch(TeamNotFoundException e){ if(id != null) return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND,"Team with id "+ id +" not found")).build(); - if (name != null) return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND,"Team with name "+ name +" not found")).build(); - return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, "Must provide either id or name.")).build(); + else return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND,"Team with name "+ name +" not found")).build(); + } + catch (IllegalArgumentException e){ + return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST,e.getMessage())).build(); } } diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/services/TeamService.java b/src/main/java/de/pnreichmuth/timekeep_backend/services/TeamService.java index fc57f42..c75af46 100644 --- a/src/main/java/de/pnreichmuth/timekeep_backend/services/TeamService.java +++ b/src/main/java/de/pnreichmuth/timekeep_backend/services/TeamService.java @@ -27,16 +27,17 @@ public class TeamService { } } - public Team getTeam(UUID id){ - Team team = teamRepository.findById(id).orElse(null); - if(team == null) throw new TeamNotFoundException("Team with id "+id+" not found"); - return team; - } + public Team getTeam(Team team){ + Team dbTeam; + if(team.getId()!=null) dbTeam = teamRepository.findById(team.getId()).orElse(null); + else if (team.getTeamName() != null) dbTeam = teamRepository.getTeamByTeamName(team.getTeamName()).orElse(null); + else throw new IllegalArgumentException("Must provide either team id or team name"); - public Team getTeam(String name){ - Team team = teamRepository.getTeamByTeamName(name).orElse(null); - if(team == null) throw new TeamNotFoundException("Team with name "+name+" not found"); - return team; + if (dbTeam == null){ + if(team.getId() != null) throw new TeamNotFoundException("Team with id "+team.getId()+" not found"); + else throw new TeamNotFoundException("Team with id "+team.getTeamName()+" not found"); + } + return dbTeam; } public List getTeams(){