diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt index c354e52bb..aeeff7b50 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt @@ -38,6 +38,19 @@ class ChapterType( val pageCount: Int, // val chapterCount: Int?, ) : Node { + companion object { + fun clearCacheFor( + chapterId: Int, + mangaId: Int, + dataFetchingEnvironment: DataFetchingEnvironment, + ) { + dataFetchingEnvironment.getDataLoader("ChapterDataLoader").clear(chapterId) + dataFetchingEnvironment.getDataLoader("ChaptersForMangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader").clear(mangaId) + } + } + constructor(row: ResultRow) : this( row[ChapterTable.id].value, row[ChapterTable.url], diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/DownloadType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/DownloadType.kt index f19218112..9036579bc 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/DownloadType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/DownloadType.kt @@ -15,6 +15,7 @@ import suwayomi.tachidesk.graphql.server.primitives.Edge import suwayomi.tachidesk.graphql.server.primitives.Node import suwayomi.tachidesk.graphql.server.primitives.NodeList import suwayomi.tachidesk.graphql.server.primitives.PageInfo +import suwayomi.tachidesk.graphql.types.DownloadState.FINISHED import suwayomi.tachidesk.manga.impl.download.model.DownloadChapter import suwayomi.tachidesk.manga.impl.download.model.DownloadStatus import suwayomi.tachidesk.manga.impl.download.model.Status @@ -57,10 +58,20 @@ class DownloadType( ) fun manga(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture { + val clearCache = state == FINISHED + if (clearCache) { + MangaType.clearCacheFor(mangaId, dataFetchingEnvironment) + } + return dataFetchingEnvironment.getValueFromDataLoader("MangaDataLoader", mangaId) } fun chapter(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture { + val clearCache = state == FINISHED + if (clearCache) { + ChapterType.clearCacheFor(chapterId, mangaId, dataFetchingEnvironment) + } + return dataFetchingEnvironment.getValueFromDataLoader("ChapterDataLoader", chapterId) } } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt index 75858e3dd..130c96f1c 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt @@ -46,16 +46,16 @@ class MangaType( mangaId: Int, dataFetchingEnvironment: DataFetchingEnvironment, ) { - dataFetchingEnvironment.getDataLoader, MangaNodeList>("MangaDataLoader").clear(listOf(mangaId)) - dataFetchingEnvironment.getDataLoader, MangaNodeList>("MangaForIdsDataLoader").clear(listOf(mangaId)) + dataFetchingEnvironment.getDataLoader("MangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("MangaForIdsDataLoader").clear(mangaId) dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader").clear(mangaId) dataFetchingEnvironment.getDataLoader("UnreadChapterCountForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader").clear(mangaId) dataFetchingEnvironment.getDataLoader( "ChaptersForMangaDataLoader", ).clear(mangaId) - dataFetchingEnvironment.getDataLoader("MangaMetaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("CategoriesForMangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader>("MangaMetaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("CategoriesForMangaDataLoader").clear(mangaId) } }