From 944eb18e5c5cdb994a3ae88efdd2e391300ac951 Mon Sep 17 00:00:00 2001 From: gsd Date: Mon, 28 Apr 2025 00:04:53 +0300 Subject: [PATCH] preview via files --- src/main/java/app/controllers/FileController.java | 8 ++++++++ .../java/app/repositories/FileRepository.java | 3 +++ src/main/java/app/updates/PreviewUpdater.java | 15 +++++++++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/app/controllers/FileController.java b/src/main/java/app/controllers/FileController.java index d313519..5f18cd2 100644 --- a/src/main/java/app/controllers/FileController.java +++ b/src/main/java/app/controllers/FileController.java @@ -140,4 +140,12 @@ public class FileController { throw new RuntimeException("Cannot find: " + tags); return endpoint+"/"+dbFile.getId(); } + + public String getUrlWithNameAndTag(String filename, String tag) { + logger.info("Search {} with tag: {} in files", filename, tag); + DbFile dbFile = fileRepository.getDbFileByFilenameAndTag(filename + ".%", tag); + if (dbFile == null) + throw new RuntimeException("Cannot find: " + filename); + return endpoint+"/"+dbFile.getId(); + } } diff --git a/src/main/java/app/repositories/FileRepository.java b/src/main/java/app/repositories/FileRepository.java index fb0ac07..c01d528 100644 --- a/src/main/java/app/repositories/FileRepository.java +++ b/src/main/java/app/repositories/FileRepository.java @@ -10,4 +10,7 @@ import java.util.UUID; public interface FileRepository extends CrudRepository { @Query("select f from DbFile f where position(:tags in f.tags) > 0 order by f.timestamp desc limit 1") DbFile getDbFilesByTag(@Param(value = "tags") String tags); + + @Query("select f from DbFile f where f.filename like :filename and position(:tag in f.tags) > 0 order by f.timestamp desc limit 1") + DbFile getDbFileByFilenameAndTag(@Param(value = "filename") String filename, @Param(value = "tag") String tag); } diff --git a/src/main/java/app/updates/PreviewUpdater.java b/src/main/java/app/updates/PreviewUpdater.java index 61a9f3f..69a3d2b 100644 --- a/src/main/java/app/updates/PreviewUpdater.java +++ b/src/main/java/app/updates/PreviewUpdater.java @@ -1,5 +1,6 @@ package app.updates; +import app.controllers.FileController; import app.entities.Stats; import app.entities.server.Server; import jakarta.annotation.PostConstruct; @@ -24,12 +25,14 @@ public class PreviewUpdater extends BaseUpdater{ //@Value("${backend.updates.a2s}") private boolean update = true; private HashMap preview_cache; + private FileController fileController; @Autowired - public PreviewUpdater(Stats stats) { + public PreviewUpdater(Stats stats, FileController fileController) { this.stats = stats; restTemplate = new RestTemplate(); preview_cache = new HashMap(); + this.fileController = fileController; } @PostConstruct @@ -68,6 +71,10 @@ public class PreviewUpdater extends BaseUpdater{ public String getPreview(String map) { String url; + //Check dbfile + try { + url = fileController.getUrlWithNameAndTag(map, "map"); + } catch (Exception ignored) {} //Check jpg url = preview.formatted(domain, map, "jpg"); @@ -75,19 +82,19 @@ public class PreviewUpdater extends BaseUpdater{ logger.info("Request: {}", url); restTemplate.headForHeaders(url); return url; - } catch (RestClientException err) {} + } catch (RestClientException ignored) {} //Check txt contained url url = preview.formatted(domain, map, "url"); try { logger.info("Request: {}", url); return restTemplate.getForEntity(url, String.class).getBody().replace("\n", ""); - } catch (RestClientException err) {} + } catch (RestClientException ignored) {} return null; } public String not_found() { - return preview.formatted(domain, "_default", "jpg"); + return fileController.getUrlWithNameAndTag("_default", "map"); } }