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