From 174338f88e95d1d989a09de8578dc6cef0369a77 Mon Sep 17 00:00:00 2001
From: Paul Reichmuth
Date: Wed, 8 Oct 2025 16:39:56 +0200
Subject: [PATCH] various updates
---
.idea/misc.xml | 2 +-
.run/TimekeepBackendApplication.run.xml | 17 +++++
build.gradle.kts | 4 +-
.../controllers/TeamRestController.java | 27 +++++---
.../timekeep_backend/entities/Team.java | 2 -
.../repositories/RacerRepository.java | 4 +-
.../repositories/StationRepository.java | 9 +--
.../repositories/TeamRepository.java | 7 +-
.../services/TeamService.java | 67 +++++++++++++++++++
.../TimekeepBackendSecurityConfig.java | 2 +-
.../TimekeepBackendApplicationTests.java | 5 --
11 files changed, 119 insertions(+), 27 deletions(-)
create mode 100644 .run/TimekeepBackendApplication.run.xml
create mode 100644 src/main/java/de/pnreichmuth/timekeep_backend/services/TeamService.java
rename src/main/java/de/pnreichmuth/timekeep_backend/{ => spring_configs}/TimekeepBackendSecurityConfig.java (92%)
diff --git a/.idea/misc.xml b/.idea/misc.xml
index f5bc2cf..8fb11b1 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/.run/TimekeepBackendApplication.run.xml b/.run/TimekeepBackendApplication.run.xml
new file mode 100644
index 0000000..b51b764
--- /dev/null
+++ b/.run/TimekeepBackendApplication.run.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 15deac7..92ce243 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -36,11 +36,11 @@ publishing {
}
}
-tasks.withType() {
+tasks.withType {
options.encoding = "UTF-8"
}
-tasks.withType() {
+tasks.withType {
options.encoding = "UTF-8"
}
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 8057634..f15b694 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamRestController.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/controllers/TeamRestController.java
@@ -1,33 +1,42 @@
package de.pnreichmuth.timekeep_backend.controllers;
import de.pnreichmuth.timekeep_backend.entities.Team;
-import de.pnreichmuth.timekeep_backend.repositories.TeamRepository;
-import org.springframework.beans.factory.annotation.Autowired;
+import de.pnreichmuth.timekeep_backend.services.TeamService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
+import java.rmi.NoSuchObjectException;
import java.util.List;
@RestController
@RequestMapping("/teams")
+@Slf4j
public class TeamRestController {
- @Autowired
- private TeamRepository teamRepository;
+ TeamService teamService;
@PostMapping("createTeam")
- public Team createTeam(){
- Team team = new Team();
- teamRepository.save(team);
+ public Team createTeam(@RequestBody Team team){
+ teamService.createTeam(team);
return team;
}
@GetMapping("all")
public List findAllTeams(){
- return teamRepository.findAll();
+ return teamService.getTeams();
}
@DeleteMapping("all")
public void deleteAllTeams(){
- teamRepository.deleteAll();
+ teamService.deleteAllTeams();
+ }
+
+ @DeleteMapping("deleteTeam")
+ public void deleteTeam(@RequestBody Team team){
+ try{
+ teamService.deleteTeam(team.getTeamName());
+ } catch (NoSuchObjectException e) {
+ log.error(e.getMessage());
+ }
}
}
diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/entities/Team.java b/src/main/java/de/pnreichmuth/timekeep_backend/entities/Team.java
index 4745e61..ad63ede 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/entities/Team.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/entities/Team.java
@@ -8,8 +8,6 @@ import lombok.Setter;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Stream;
@Entity
@Getter
diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/repositories/RacerRepository.java b/src/main/java/de/pnreichmuth/timekeep_backend/repositories/RacerRepository.java
index 8db1397..8069c4c 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/repositories/RacerRepository.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/repositories/RacerRepository.java
@@ -1,14 +1,16 @@
package de.pnreichmuth.timekeep_backend.repositories;
import de.pnreichmuth.timekeep_backend.entities.Racer;
+import lombok.NonNull;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.UUID;
+@SuppressWarnings("ALL")
@Repository
-public interface RacerRepository extends JpaRepository {
+public interface RacerRepository extends JpaRepository<@NonNull Racer,@NonNull UUID> {
Racer findByName(String name);
List findAllByName(String name);
}
diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/repositories/StationRepository.java b/src/main/java/de/pnreichmuth/timekeep_backend/repositories/StationRepository.java
index e47b30e..07d2d5f 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/repositories/StationRepository.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/repositories/StationRepository.java
@@ -1,14 +1,15 @@
package de.pnreichmuth.timekeep_backend.repositories;
import de.pnreichmuth.timekeep_backend.entities.Station;
+import lombok.NonNull;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.UUID;
@Repository
-public interface StationRepository extends JpaRepository {
- public Station findByLocation(String location);
- public Station findByName(String name);
- public Station findByPasswordHash(String passwordHash);
+public interface StationRepository extends JpaRepository<@NonNull Station, @NonNull UUID> {
+ Station findByLocation(String location);
+ Station findByName(String name);
+ Station findByPasswordHash(String passwordHash);
}
diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/repositories/TeamRepository.java b/src/main/java/de/pnreichmuth/timekeep_backend/repositories/TeamRepository.java
index e4f73d0..a48d174 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/repositories/TeamRepository.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/repositories/TeamRepository.java
@@ -2,6 +2,7 @@ package de.pnreichmuth.timekeep_backend.repositories;
import de.pnreichmuth.timekeep_backend.entities.Station;
import de.pnreichmuth.timekeep_backend.entities.Team;
+import lombok.NonNull;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@@ -9,9 +10,11 @@ import java.util.List;
import java.util.UUID;
@Repository
-public interface TeamRepository extends JpaRepository {
- Team getTeamById(UUID id);
+public interface TeamRepository extends JpaRepository<@NonNull Team, @NonNull UUID> {
Team getTeamByTeamName(String name);
List getTeamsByFirstSemesterTeamIsTrue();
List getTeamsByPassedStationsContains(Station station);
+ void deleteTeamByTeamName(String name);
+
+ boolean existsByTeamName(String name);
}
diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/services/TeamService.java b/src/main/java/de/pnreichmuth/timekeep_backend/services/TeamService.java
new file mode 100644
index 0000000..dc4a853
--- /dev/null
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/services/TeamService.java
@@ -0,0 +1,67 @@
+package de.pnreichmuth.timekeep_backend.services;
+
+import de.pnreichmuth.timekeep_backend.entities.Team;
+import de.pnreichmuth.timekeep_backend.repositories.TeamRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.rmi.NoSuchObjectException;
+import java.util.List;
+import java.util.UUID;
+
+@SuppressWarnings("LoggingSimilarMessage")
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class TeamService {
+ private final TeamRepository teamRepository;
+
+ public Team getTeam(UUID id){
+ return teamRepository.findById(id).orElse(null);
+ }
+
+ public Team getTeam(String name){
+ return teamRepository.getTeamByTeamName(name);
+ }
+
+ public List getTeams(){
+ return teamRepository.findAll();
+ }
+
+ public void createTeam(){
+ Team team = new Team();
+ teamRepository.save(team);
+ log.info("Team created: {}", team);
+ }
+
+ public void createTeam(Team team){
+ teamRepository.save(team);
+ log.info("Team created: {}", team);
+ }
+
+ public void createTeam(String name){
+ Team tempTeam = new Team();
+ tempTeam.setTeamName(name);
+ teamRepository.save(tempTeam);
+ log.info("Team created: {}", tempTeam);
+ }
+
+ public void deleteTeam(UUID id) throws NoSuchObjectException{
+ if(!teamRepository.existsById(id)) throw new NoSuchObjectException("Team not found");
+ teamRepository.deleteById(id);
+ }
+
+ public void deleteTeam(String name) throws NoSuchObjectException{
+ if(!teamRepository.existsByTeamName(name)) throw new NoSuchObjectException("Team not found");
+ teamRepository.deleteTeamByTeamName(name);
+ }
+
+ /**
+ * DANGER ZONE
+ */
+ public void deleteAllTeams(){
+ teamRepository.deleteAll();
+ log.warn("All teams deleted. Database is now empty.");
+ }
+}
diff --git a/src/main/java/de/pnreichmuth/timekeep_backend/TimekeepBackendSecurityConfig.java b/src/main/java/de/pnreichmuth/timekeep_backend/spring_configs/TimekeepBackendSecurityConfig.java
similarity index 92%
rename from src/main/java/de/pnreichmuth/timekeep_backend/TimekeepBackendSecurityConfig.java
rename to src/main/java/de/pnreichmuth/timekeep_backend/spring_configs/TimekeepBackendSecurityConfig.java
index 7825dc1..78fd780 100644
--- a/src/main/java/de/pnreichmuth/timekeep_backend/TimekeepBackendSecurityConfig.java
+++ b/src/main/java/de/pnreichmuth/timekeep_backend/spring_configs/TimekeepBackendSecurityConfig.java
@@ -1,4 +1,4 @@
-package de.pnreichmuth.timekeep_backend;
+package de.pnreichmuth.timekeep_backend.spring_configs;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
diff --git a/src/test/java/de/pnreichmuth/timekeep_backend/TimekeepBackendApplicationTests.java b/src/test/java/de/pnreichmuth/timekeep_backend/TimekeepBackendApplicationTests.java
index af2aad4..45af715 100644
--- a/src/test/java/de/pnreichmuth/timekeep_backend/TimekeepBackendApplicationTests.java
+++ b/src/test/java/de/pnreichmuth/timekeep_backend/TimekeepBackendApplicationTests.java
@@ -1,13 +1,8 @@
package de.pnreichmuth.timekeep_backend;
-import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class TimekeepBackendApplicationTests {
- @Test
- void contextLoads() {
- }
-
}