From 90d12c1e9167446385e6f29baf3f3a8f28020ae8 Mon Sep 17 00:00:00 2001
From: Jonas <jonas.fischer14@gmx.de>
Date: Mon, 18 Dec 2023 15:36:23 +0100
Subject: [PATCH] 18.12.2023 - create controller class and endpoints #22

---
 .../controller/TournamentController.java      | 65 +++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java

diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java b/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java
new file mode 100644
index 0000000..074bd86
--- /dev/null
+++ b/sth-backend/src/main/java/hdm/mi/sthbackend/controller/TournamentController.java
@@ -0,0 +1,65 @@
+package hdm.mi.sthbackend.controller;
+
+
+import hdm.mi.sthbackend.exeptions.PlayerIdNotFoundException;
+import hdm.mi.sthbackend.exeptions.TournamentIdNotFoundException;
+import hdm.mi.sthbackend.model.Player;
+import hdm.mi.sthbackend.model.Team;
+import hdm.mi.sthbackend.model.Tournament;
+import hdm.mi.sthbackend.service.TournamentService;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.UUID;
+
+@RestController
+@RequestMapping("/api/v1/tournaments")
+@AllArgsConstructor
+public class TournamentController {
+
+    private final TournamentService service;
+
+    /**
+     * Player Endpoints
+     **/
+    @PatchMapping("/{tournamentId}/teams/{teamId}/players/{playerId}")
+    public UUID updatePlayerName(@PathVariable UUID tournamentId,
+                                 @PathVariable UUID teamId,
+                                 @PathVariable UUID playerId,
+                                 @RequestBody String newPlayerName) throws Exception {
+        return service.updatePlayerName(tournamentId, teamId, playerId, newPlayerName);
+    }
+
+    /**
+     * Team Endpoints
+     **/
+    @PostMapping("/{tournamentId}/teams")
+    public Team createTeam(@PathVariable UUID tournamentId,
+                           @RequestBody String teamName) throws TournamentIdNotFoundException {
+        return service.createTeam(tournamentId, teamName);
+    }
+
+    @PostMapping("/{tournamentId}/teams/{teamId}/addPlayer")
+    public Player addPlayerToTeam(@PathVariable UUID tournamentId,
+                                  @PathVariable UUID teamId,
+                                  @RequestBody String playerName) throws Exception {
+        return service.addPlayerToTeam(tournamentId, teamId, playerName);
+    }
+
+    @DeleteMapping("/{tournamentId}/teams/{teamId}/players/{playerId}")
+    public Player removePlayerFromTeam(@PathVariable UUID tournamentId,
+                                       @PathVariable UUID teamId,
+                                       @PathVariable UUID playerId) throws PlayerIdNotFoundException, TournamentIdNotFoundException {
+        return service.removePlayerFromTeam(tournamentId, teamId, playerId);
+    }
+
+
+    /**
+     * Tournament Endpoints
+     */
+    @PostMapping
+    public Tournament createTournament(@RequestBody String tournamentName) {
+        return service.createTournament(tournamentName);
+    }
+
+}
-- 
GitLab