From f30ca03c47feaeb2951670d9af5a56d4121867a3 Mon Sep 17 00:00:00 2001 From: Ziedelth Date: Thu, 12 Sep 2024 15:59:58 +0200 Subject: [PATCH] fix: remove image not in database --- .../controllers/admin/AdminController.kt | 6 ----- .../fr/shikkanime/services/ImageService.kt | 22 +++++++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/fr/shikkanime/controllers/admin/AdminController.kt b/src/main/kotlin/fr/shikkanime/controllers/admin/AdminController.kt index 66d92c86..7584bd51 100644 --- a/src/main/kotlin/fr/shikkanime/controllers/admin/AdminController.kt +++ b/src/main/kotlin/fr/shikkanime/controllers/admin/AdminController.kt @@ -36,12 +36,6 @@ class AdminController { @Inject private lateinit var animeService: AnimeService - @Inject - private lateinit var episodeMappingService: EpisodeMappingService - - @Inject - private lateinit var episodeVariantService: EpisodeVariantService - @Path @Get private fun home(@QueryParam("error") error: String?): Response { diff --git a/src/main/kotlin/fr/shikkanime/services/ImageService.kt b/src/main/kotlin/fr/shikkanime/services/ImageService.kt index 212880a1..1b07e62f 100644 --- a/src/main/kotlin/fr/shikkanime/services/ImageService.kt +++ b/src/main/kotlin/fr/shikkanime/services/ImageService.kt @@ -305,6 +305,28 @@ object ImageService { get() = toHumanReadable(cache.toList().sumOf { it.size }) fun invalidate() { + Constant.injector.getInstance(Database::class.java).entityManager.use { + val query = it.createNativeQuery( + """ + SELECT uuid + FROM anime + UNION + SELECT uuid + FROM episode_mapping + UNION + SELECT uuid + FROM member + """, + UUID::class.java + ) + + val uuids = (query.resultList as List) // NOSONAR + .map { uuid -> uuid.toString() } + .toSet() + + cache.removeIf { img -> img.uuid !in uuids } + } + addAll(true) }