[GH-61] Fix manual mapping leading to duplicates in DB

This commit is contained in:
Simon
2022-10-21 23:08:48 +03:00
committed by GitHub
4 changed files with 17 additions and 29 deletions
+8 -26
View File
@@ -4,8 +4,6 @@
<p align="center">A simple game library manager.</p>
</div>
<img />
# Overview
Name and functionality inspired by [Jellyfin](https://jellyfin.org/).
@@ -16,15 +14,17 @@ Click [this link](https://youtu.be/BSaccEm0tpo) to watch how to install and set
## Features
* Automatically scans your game library folder
* Load additional information about the games from IGDB
* Display your library in a modern web frontend
* Automatically scans your game library folder and downloads additional metadata from IGDB
* Access your library via your Web-Browser
* Download games directly from your browser
* Search and filter your game library
* Offline-friendly (once the library has been scanned everything is cached locally)
* Easy to host yourself thanks to native Docker support (alternatively it's only one .jar file to run on bare metal)
* LAN-friendly (everything is cached locally)
* Native Docker support (alternatively it's only one .jar file to run on bare metal)
* Light and dark theme
## Preview
https://user-images.githubusercontent.com/9295182/197277953-d69464a4-d280-407b-9274-ae62e6917981.mp4
## Installation
### General
@@ -44,21 +44,3 @@ Since Gameyfin loads information from IGDB, you need to register yourself there.
3. Edit the config options in the `gameyfin.properties` file
4. Use the following command to start Gameyfin: `java -jar gameyfin.jar`
5. Open the address of your Gameyfin host in your browser, Gameyfin runs under port 8080 by default
## Screenshots
### Game library screen in light mode (top) and dark mode (bottom)
![Game library](assets/library_overview.png)
### Game detail view
![Game detail screen](assets/game_detail_view.png)
### Automatic library scanning
![Library scan hint](assets/scan_library.png)
### Admin interface
![Admin interface](assets/game_mappings.png)
### Manually fix incorrect mappings (with autocomplete suggestions)
![Fix mapping dialog](assets/fix_game_mapping.png)
@@ -105,6 +105,8 @@ public class GameService {
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Game with slug '%s' does not exist on IGDB.".formatted(slug)));
DetectedGame game = gameMapper.toDetectedGame(igdbGame, Path.of(unmappableFile.getPath()));
game.setConfirmedMatch(true);
game = detectedGameRepository.save(game);
unmappableFileRepository.delete(unmappableFile);
@@ -117,8 +119,12 @@ public class GameService {
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Game with slug '%s' does not exist on IGDB.".formatted(slug)));
DetectedGame game = gameMapper.toDetectedGame(igdbGame, Path.of(existingGame.getPath()));
game.setConfirmedMatch(true);
game = detectedGameRepository.save(game);
detectedGameRepository.delete(existingGame);
return game;
}
}
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "frontend",
"version": "1.2.4-SNAPSHOT",
"version": "1.2.5-SNAPSHOT",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "frontend",
"version": "1.2.4-SNAPSHOT",
"version": "1.2.5-SNAPSHOT",
"dependencies": {
"@angular/animations": "^14.0.0",
"@angular/cdk": "^14.1.0",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "frontend",
"version": "1.2.4-SNAPSHOT",
"version": "1.2.5-SNAPSHOT",
"scripts": {
"ng": "ng",
"start": "ng serve",