From 937c440cdf7a4d8306ed0f8a196814e2af51a232 Mon Sep 17 00:00:00 2001 From: Simon Grimme <9295182+grimsi@users.noreply.github.com> Date: Sat, 16 Jul 2022 03:07:33 +0200 Subject: [PATCH] Added additional check if a game with a slug exists, so the user does not overwrite a mapping accidentally --- .../grimsi/gameyfin/repositories/DetectedGameRepository.java | 1 + src/main/java/de/grimsi/gameyfin/service/GameService.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/de/grimsi/gameyfin/repositories/DetectedGameRepository.java b/src/main/java/de/grimsi/gameyfin/repositories/DetectedGameRepository.java index 0122f07..78ac2d0 100644 --- a/src/main/java/de/grimsi/gameyfin/repositories/DetectedGameRepository.java +++ b/src/main/java/de/grimsi/gameyfin/repositories/DetectedGameRepository.java @@ -6,4 +6,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface DetectedGameRepository extends JpaRepository { boolean existsByPath(String path); + boolean existsBySlug(String slug); } diff --git a/src/main/java/de/grimsi/gameyfin/service/GameService.java b/src/main/java/de/grimsi/gameyfin/service/GameService.java index 6ff55f6..d9679ff 100644 --- a/src/main/java/de/grimsi/gameyfin/service/GameService.java +++ b/src/main/java/de/grimsi/gameyfin/service/GameService.java @@ -36,9 +36,13 @@ public class GameService { } public DetectedGame mapUnmappedFile(Long unmappedGameId, String igdbSlug) { + UnmappableFile unmappableFile = unmappableFileRepository.findById(unmappedGameId) .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Unmapped file with id '%d' does not exist.".formatted(unmappedGameId))); + if(detectedGameRepository.existsBySlug(igdbSlug)) + throw new ResponseStatusException(HttpStatus.CONFLICT, "Game with slug '%s' already exists in database.".formatted(igdbSlug)); + Igdb.Game igdbGame = igdbWrapper.getGameBySlug(igdbSlug) .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Game with slug '%s' does not exist on IGDB.".formatted(igdbSlug)));