From a87a5a6198519aa401a658a3f68612e25f008a2b Mon Sep 17 00:00:00 2001
From: Paul Reichmuth
Date: Wed, 4 Feb 2026 21:14:41 +0100
Subject: [PATCH] refactor pure objects as request body into WSTOs
---
.../controllers/RacerRestController.java | 33 ++++++++++---------
.../controllers/TeamMemberRestController.java | 7 ++--
.../controllers/TeamRestController.java | 13 +++++---
3 files changed, 30 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 81b5150..8fe423d 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/RacerRestController.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/RacerRestController.java
@@ -8,6 +8,7 @@ import de.pnreichmuth.timekeep_backend.exceptions.TeamNotFoundException;
import de.pnreichmuth.timekeep_backend.services.RacerService;
import de.pnreichmuth.timekeep_backend.services.TeamService;
import de.pnreichmuth.timekeep_backend.wsto.RacerWSTO;
+import de.pnreichmuth.timekeep_backend.wsto.TeamWSTO;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -28,7 +29,8 @@ public class RacerRestController {
private final TeamService teamService;
// ///////////////////////////////////////////////BEGIN POST MAPPINGS///////////////////////////////////////////////////
@PostMapping("createRacer")
- public ResponseEntity<@NonNull RacerWSTO> createRacer(@RequestBody Racer racer) {
+ public ResponseEntity<@NonNull RacerWSTO> createRacer(@RequestBody RacerWSTO racerWSTO) {
+ Racer racer = RacerWSTO.toEntity(racerWSTO);
try {
racerService.updateRacer(racer);
return new ResponseEntity<>(RacerWSTO.of(racer), HttpStatus.CREATED);
@@ -49,26 +51,24 @@ public class RacerRestController {
}
@GetMapping("singleRacer")
- public ResponseEntity<@NonNull RacerWSTO> getSingleRacers(@RequestBody Racer requestRacer){
- Racer actualRacer = racerService.getRacer(requestRacer);
- if (actualRacer == null){
- return ResponseEntity.of(
- ProblemDetail.forStatusAndDetail(
- HttpStatus.NOT_FOUND,
- String.format("Racer with name %s %s not found",
- requestRacer.getFirstName(), requestRacer.getLastName()
- )
- )
- ).build();
+ public ResponseEntity<@NonNull RacerWSTO> getSingleRacers(@RequestBody RacerWSTO requestRacerWSTO){
+ try{
+ Racer actualRacer = racerService.getRacer(RacerWSTO.toEntity(requestRacerWSTO));
+ return ResponseEntity.ok(RacerWSTO.of(actualRacer));
+ }
+ catch (RacerNotFoundException 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();
}
- return ResponseEntity.ok(RacerWSTO.of(actualRacer));
}
@GetMapping("byTeam")
- public ResponseEntity<@NonNull List> getByTeam(@RequestBody Team requestTeam){
+ public ResponseEntity<@NonNull List> getByTeam(@RequestBody TeamWSTO requestTeamWSTO){
Team dbTeam;
try {
- dbTeam = teamService.getTeam(requestTeam);
+ dbTeam = teamService.getTeam(TeamWSTO.toEntity(requestTeamWSTO));
} catch (TeamNotFoundException e) {
return ResponseEntity.of(ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND, e.getMessage())).build();
}
@@ -81,7 +81,8 @@ public class RacerRestController {
// ////////////////////////////////////////////////BEGIN DELETE MAPPINGS///////////////////////////////////////////////////
@DeleteMapping("/removeRacer")
- public ResponseEntity> removeRacer(@RequestBody Racer racer){
+ public ResponseEntity> removeRacer(@RequestBody RacerWSTO racerWSTO){
+ Racer racer = RacerWSTO.toEntity(racerWSTO);
try {
racerService.deleteRacer(racer);
return ResponseEntity.ok(racer);
diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamMemberRestController.java b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamMemberRestController.java
index 4507355..86cdc49 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamMemberRestController.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamMemberRestController.java
@@ -5,6 +5,7 @@ import de.pnreichmuth.timekeep_backend.entities.Team;
import de.pnreichmuth.timekeep_backend.exceptions.ExistsException;
import de.pnreichmuth.timekeep_backend.exceptions.NotFoundException;
import de.pnreichmuth.timekeep_backend.services.TeamService;
+import de.pnreichmuth.timekeep_backend.wsto.RacerWSTO;
import de.pnreichmuth.timekeep_backend.wsto.TeamWSTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -23,9 +24,10 @@ public class TeamMemberRestController {
// ///////////////////////////////////////////////BEGIN POST MAPPINGS///////////////////////////////////////////////////
@PostMapping("/addMemberToTeam")
- public ResponseEntity> addMemberToTeam(@RequestParam("teamName") String teamName, @RequestBody Racer racer) {
+ public ResponseEntity> addMemberToTeam(@RequestParam("teamName") String teamName, @RequestBody RacerWSTO racerWsto) {
Team mockTeam = new Team();
mockTeam.setTeamName(teamName);
+ Racer racer = RacerWSTO.toEntity(racerWsto);
try{
this.teamService.addMember(mockTeam,racer);
}
@@ -39,9 +41,10 @@ public class TeamMemberRestController {
}
// ///////////////////////////////////////////////BEGIN DELETE MAPPINGS///////////////////////////////////////////////////
@DeleteMapping("/removeMemberFromTeam")
- public ResponseEntity> removeMemberFromTeam(@RequestParam("teamName") String teamName, @RequestBody Racer racer) {
+ public ResponseEntity> removeMemberFromTeam(@RequestParam("teamName") String teamName, @RequestBody RacerWSTO racerWsto) {
Team mockTeam = new Team();
mockTeam.setTeamName(teamName);
+ Racer racer = RacerWSTO.toEntity(racerWsto);
try{
this.teamService.removeMember(mockTeam,racer);
}
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 d24c30b..3c564f3 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamRestController.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamRestController.java
@@ -34,7 +34,8 @@ public class TeamRestController {
* either containing a TeamWSTO if a team was successfully created or a HttpStatus.CONFLICT if the team already existed beforehand
*/
@PostMapping("createTeam")
- public ResponseEntity<@NonNull TeamWSTO> createTeam(@RequestBody Team team){
+ public ResponseEntity<@NonNull TeamWSTO> createTeam(@RequestBody TeamWSTO teamwsto){
+ Team team = TeamWSTO.toEntity(teamwsto);
try {
teamService.createTeam(team);
return new ResponseEntity<>(TeamWSTO.of(team), HttpStatus.CREATED);
@@ -65,11 +66,12 @@ public class TeamRestController {
/**
* Gets all the information pertaining to a given team via the API
- * @param reqTeam the team to query all information about with either a name or an id field set
+ * @param reqTeamWSTO the teamWSTO to query all information about with either a name or an id field set
* @return a ResponseEntity containing the team in WSTO form, or a ResponseEntity containing either BAD_REQUEST or NOT_FOUND.
*/
@GetMapping("single-team")
- public ResponseEntity<@NonNull TeamWSTO> getSingleTeam(@RequestBody Team reqTeam){
+ public ResponseEntity<@NonNull TeamWSTO> getSingleTeam(@RequestBody TeamWSTO reqTeamWSTO){
+ Team reqTeam = TeamWSTO.toEntity(reqTeamWSTO);
UUID id = reqTeam.getId();
String name = reqTeam.getTeamName();
Team actualTeam;
@@ -100,12 +102,13 @@ public class TeamRestController {
/**
* Deletes a team via its name or id
- * @param team the team to query all information about with either a name or an id field set
+ * @param teamWSTO the teamWSTO to query all information about with either a name or an id field set
* @return a ResponseEntity containing HttpStatus.OK if deletion was successful,
* or a ResponseEntity containing either BAD_REQUEST or NOT_FOUND.
*/
@DeleteMapping("single-team")
- public ResponseEntity<@NonNull String> deleteTeam(@RequestBody Team team){
+ public ResponseEntity<@NonNull String> deleteTeam(@RequestBody TeamWSTO teamWSTO){
+ Team team = TeamWSTO.toEntity(teamWSTO);
String name = team.getTeamName();
UUID id = team.getId();
try {