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(){