From 065aa19e9eaed26709b5516bc9da95001101c9bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 17 Nov 2024 12:50:33 -0500 Subject: [PATCH] Update graphqlkotlin to v8 (major) (#1143) * Update graphqlkotlin to v8 * Go back to JsonMapper * Add context to data loaders * Compile fixes --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Syer10 --- gradle/libs.versions.toml | 2 +- .../graphql/dataLoaders/CategoryDataLoader.kt | 7 ++-- .../graphql/dataLoaders/ChapterDataLoader.kt | 23 +++++++------ .../dataLoaders/ExtensionDataLoader.kt | 5 +-- .../graphql/dataLoaders/MangaDataLoader.kt | 9 ++--- .../graphql/dataLoaders/MetaDataLoader.kt | 11 +++--- .../graphql/dataLoaders/SourceDataLoader.kt | 5 +-- .../graphql/dataLoaders/TrackDataLoader.kt | 17 +++++----- .../server/JavalinGraphQLRequestParser.kt | 19 ++++++----- .../server/TachideskGraphQLContextFactory.kt | 10 +++--- .../GraphQLSubscriptionHandler.kt | 4 +-- .../tachidesk/graphql/types/ChapterType.kt | 8 ++--- .../tachidesk/graphql/types/MangaType.kt | 34 +++++++++---------- 13 files changed, 80 insertions(+), 74 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5f1d7062..e1631e0b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,7 +10,7 @@ dex2jar = "v64" # Stuck until https://github.com/ThexXTURBOXx/dex2jar/issues/27 rhino = "1.7.15" settings = "1.2.0" twelvemonkeys = "3.12.0" -graphqlkotlin = "6.8.5" +graphqlkotlin = "8.2.1" xmlserialization = "0.90.3" ktlint = "1.4.1" koin = "4.0.0" diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/CategoryDataLoader.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/CategoryDataLoader.kt index 6261ad2c..8af0b609 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/CategoryDataLoader.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/CategoryDataLoader.kt @@ -8,6 +8,7 @@ package suwayomi.tachidesk.graphql.dataLoaders import com.expediagroup.graphql.dataloader.KotlinDataLoader +import graphql.GraphQLContext import org.dataloader.DataLoader import org.dataloader.DataLoaderFactory import org.jetbrains.exposed.sql.Slf4jSqlDebugLogger @@ -24,7 +25,7 @@ import suwayomi.tachidesk.server.JavalinSetup.future class CategoryDataLoader : KotlinDataLoader { override val dataLoaderName = "CategoryDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -43,7 +44,7 @@ class CategoryDataLoader : KotlinDataLoader { class CategoryForIdsDataLoader : KotlinDataLoader, CategoryNodeList> { override val dataLoaderName = "CategoryForIdsDataLoader" - override fun getDataLoader(): DataLoader, CategoryNodeList> = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader, CategoryNodeList> = DataLoaderFactory.newDataLoader { categoryIds -> future { transaction { @@ -61,7 +62,7 @@ class CategoryForIdsDataLoader : KotlinDataLoader, CategoryNodeList> { class CategoriesForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "CategoriesForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ChapterDataLoader.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ChapterDataLoader.kt index e4e3281c..8e22d1cd 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ChapterDataLoader.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ChapterDataLoader.kt @@ -8,6 +8,7 @@ package suwayomi.tachidesk.graphql.dataLoaders import com.expediagroup.graphql.dataloader.KotlinDataLoader +import graphql.GraphQLContext import org.dataloader.DataLoader import org.dataloader.DataLoaderFactory import org.jetbrains.exposed.sql.Slf4jSqlDebugLogger @@ -26,7 +27,7 @@ import suwayomi.tachidesk.server.JavalinSetup.future class ChapterDataLoader : KotlinDataLoader { override val dataLoaderName = "ChapterDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -45,7 +46,7 @@ class ChapterDataLoader : KotlinDataLoader { class ChaptersForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "ChaptersForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -64,7 +65,7 @@ class ChaptersForMangaDataLoader : KotlinDataLoader { class DownloadedChapterCountForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "DownloadedChapterCountForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -84,7 +85,7 @@ class DownloadedChapterCountForMangaDataLoader : KotlinDataLoader { class UnreadChapterCountForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "UnreadChapterCountForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -104,7 +105,7 @@ class UnreadChapterCountForMangaDataLoader : KotlinDataLoader { class BookmarkedChapterCountForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "BookmarkedChapterCountForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -124,7 +125,7 @@ class BookmarkedChapterCountForMangaDataLoader : KotlinDataLoader { class HasDuplicateChaptersForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "HasDuplicateChaptersForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -146,7 +147,7 @@ class HasDuplicateChaptersForMangaDataLoader : KotlinDataLoader { class LastReadChapterForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "LastReadChapterForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -165,7 +166,7 @@ class LastReadChapterForMangaDataLoader : KotlinDataLoader { class LatestReadChapterForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "LatestReadChapterForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -184,7 +185,7 @@ class LatestReadChapterForMangaDataLoader : KotlinDataLoader class LatestFetchedChapterForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "LatestFetchedChapterForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -203,7 +204,7 @@ class LatestFetchedChapterForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "LatestUploadedChapterForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -222,7 +223,7 @@ class LatestUploadedChapterForMangaDataLoader : KotlinDataLoader { override val dataLoaderName = "FirstUnreadChapterForMangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ExtensionDataLoader.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ExtensionDataLoader.kt index 91280f15..177ffa2b 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ExtensionDataLoader.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ExtensionDataLoader.kt @@ -8,6 +8,7 @@ package suwayomi.tachidesk.graphql.dataLoaders import com.expediagroup.graphql.dataloader.KotlinDataLoader +import graphql.GraphQLContext import org.dataloader.DataLoader import org.dataloader.DataLoaderFactory import org.jetbrains.exposed.sql.Slf4jSqlDebugLogger @@ -22,7 +23,7 @@ import suwayomi.tachidesk.server.JavalinSetup.future class ExtensionDataLoader : KotlinDataLoader { override val dataLoaderName = "ExtensionDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -41,7 +42,7 @@ class ExtensionDataLoader : KotlinDataLoader { class ExtensionForSourceDataLoader : KotlinDataLoader { override val dataLoaderName = "ExtensionForSourceDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/MangaDataLoader.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/MangaDataLoader.kt index df15367d..5d76add1 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/MangaDataLoader.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/MangaDataLoader.kt @@ -8,6 +8,7 @@ package suwayomi.tachidesk.graphql.dataLoaders import com.expediagroup.graphql.dataloader.KotlinDataLoader +import graphql.GraphQLContext import org.dataloader.DataLoader import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderOptions @@ -27,7 +28,7 @@ import suwayomi.tachidesk.server.JavalinSetup.future class MangaDataLoader : KotlinDataLoader { override val dataLoaderName = "MangaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -46,7 +47,7 @@ class MangaDataLoader : KotlinDataLoader { class MangaForCategoryDataLoader : KotlinDataLoader { override val dataLoaderName = "MangaForCategoryDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -80,7 +81,7 @@ class MangaForCategoryDataLoader : KotlinDataLoader { class MangaForSourceDataLoader : KotlinDataLoader { override val dataLoaderName = "MangaForSourceDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -99,7 +100,7 @@ class MangaForSourceDataLoader : KotlinDataLoader { class MangaForIdsDataLoader : KotlinDataLoader, MangaNodeList> { override val dataLoaderName = "MangaForIdsDataLoader" - override fun getDataLoader(): DataLoader, MangaNodeList> = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader, MangaNodeList> = DataLoaderFactory.newDataLoader( { mangaIds -> future { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/MetaDataLoader.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/MetaDataLoader.kt index 9f2de6cc..e9023a74 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/MetaDataLoader.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/MetaDataLoader.kt @@ -1,6 +1,7 @@ package suwayomi.tachidesk.graphql.dataLoaders import com.expediagroup.graphql.dataloader.KotlinDataLoader +import graphql.GraphQLContext import org.dataloader.DataLoader import org.dataloader.DataLoaderFactory import org.jetbrains.exposed.sql.Slf4jSqlDebugLogger @@ -22,7 +23,7 @@ import suwayomi.tachidesk.server.JavalinSetup.future class GlobalMetaDataLoader : KotlinDataLoader { override val dataLoaderName = "GlobalMetaDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -41,7 +42,7 @@ class GlobalMetaDataLoader : KotlinDataLoader { class ChapterMetaDataLoader : KotlinDataLoader> { override val dataLoaderName = "ChapterMetaDataLoader" - override fun getDataLoader(): DataLoader> = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader> = DataLoaderFactory.newDataLoader> { ids -> future { transaction { @@ -60,7 +61,7 @@ class ChapterMetaDataLoader : KotlinDataLoader> { class MangaMetaDataLoader : KotlinDataLoader> { override val dataLoaderName = "MangaMetaDataLoader" - override fun getDataLoader(): DataLoader> = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader> = DataLoaderFactory.newDataLoader> { ids -> future { transaction { @@ -79,7 +80,7 @@ class MangaMetaDataLoader : KotlinDataLoader> { class CategoryMetaDataLoader : KotlinDataLoader> { override val dataLoaderName = "CategoryMetaDataLoader" - override fun getDataLoader(): DataLoader> = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader> = DataLoaderFactory.newDataLoader> { ids -> future { transaction { @@ -98,7 +99,7 @@ class CategoryMetaDataLoader : KotlinDataLoader> { class SourceMetaDataLoader : KotlinDataLoader> { override val dataLoaderName = "SourceMetaDataLoader" - override fun getDataLoader(): DataLoader> = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader> = DataLoaderFactory.newDataLoader> { ids -> future { transaction { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/SourceDataLoader.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/SourceDataLoader.kt index d41a77da..5cd0658a 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/SourceDataLoader.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/SourceDataLoader.kt @@ -8,6 +8,7 @@ package suwayomi.tachidesk.graphql.dataLoaders import com.expediagroup.graphql.dataloader.KotlinDataLoader +import graphql.GraphQLContext import org.dataloader.DataLoader import org.dataloader.DataLoaderFactory import org.jetbrains.exposed.sql.Slf4jSqlDebugLogger @@ -24,7 +25,7 @@ import suwayomi.tachidesk.server.JavalinSetup.future class SourceDataLoader : KotlinDataLoader { override val dataLoaderName = "SourceDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -43,7 +44,7 @@ class SourceDataLoader : KotlinDataLoader { class SourcesForExtensionDataLoader : KotlinDataLoader { override val dataLoaderName = "SourcesForExtensionDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/TrackDataLoader.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/TrackDataLoader.kt index 77e17f82..176d9c30 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/TrackDataLoader.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/TrackDataLoader.kt @@ -8,6 +8,7 @@ package suwayomi.tachidesk.graphql.dataLoaders import com.expediagroup.graphql.dataloader.KotlinDataLoader +import graphql.GraphQLContext import org.dataloader.DataLoader import org.dataloader.DataLoaderFactory import org.jetbrains.exposed.sql.Slf4jSqlDebugLogger @@ -27,7 +28,7 @@ import suwayomi.tachidesk.server.JavalinSetup.future class TrackerDataLoader : KotlinDataLoader { override val dataLoaderName = "TrackerDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { ids.map { id -> @@ -40,7 +41,7 @@ class TrackerDataLoader : KotlinDataLoader { class TrackerStatusesDataLoader : KotlinDataLoader> { override val dataLoaderName = "TrackerStatusesDataLoader" - override fun getDataLoader(): DataLoader> = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader> = DataLoaderFactory.newDataLoader { ids -> future { ids.map { id -> @@ -57,7 +58,7 @@ class TrackerStatusesDataLoader : KotlinDataLoader> { class TrackerScoresDataLoader : KotlinDataLoader> { override val dataLoaderName = "TrackerScoresDataLoader" - override fun getDataLoader(): DataLoader> = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader> = DataLoaderFactory.newDataLoader { ids -> future { ids.map { id -> @@ -70,7 +71,7 @@ class TrackerScoresDataLoader : KotlinDataLoader> { class TrackerTokenExpiredDataLoader : KotlinDataLoader { override val dataLoaderName = "TrackerTokenExpiredDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { ids.map { id -> @@ -83,7 +84,7 @@ class TrackerTokenExpiredDataLoader : KotlinDataLoader { class TrackRecordsForMangaIdDataLoader : KotlinDataLoader { override val dataLoaderName = "TrackRecordsForMangaIdDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -102,7 +103,7 @@ class TrackRecordsForMangaIdDataLoader : KotlinDataLoader { override val dataLoaderName = "DisplayScoreForTrackRecordDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -124,7 +125,7 @@ class DisplayScoreForTrackRecordDataLoader : KotlinDataLoader { class TrackRecordsForTrackerIdDataLoader : KotlinDataLoader { override val dataLoaderName = "TrackRecordsForTrackerIdDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { @@ -143,7 +144,7 @@ class TrackRecordsForTrackerIdDataLoader : KotlinDataLoader { override val dataLoaderName = "TrackRecordDataLoader" - override fun getDataLoader(): DataLoader = + override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> future { transaction { diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt index e59bc9fb..56639f51 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt @@ -13,11 +13,7 @@ import com.expediagroup.graphql.server.types.GraphQLRequest import com.expediagroup.graphql.server.types.GraphQLServerRequest import io.javalin.http.Context import io.javalin.http.UploadedFile -import kotlinx.serialization.builtins.ListSerializer -import kotlinx.serialization.builtins.MapSerializer -import kotlinx.serialization.builtins.serializer -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.decodeFromStream +import io.javalin.plugin.json.jsonMapper import java.io.IOException class JavalinGraphQLRequestParser : GraphQLRequestParser { @@ -33,18 +29,23 @@ class JavalinGraphQLRequestParser : GraphQLRequestParser { context.formParam("operations") ?: throw IllegalArgumentException("Cannot find 'operations' body") } else { - return Json.decodeFromStream(context.bodyAsInputStream()) + return context.bodyAsClass(GraphQLServerRequest::class.java) } val request = - Json.decodeFromString(formParam) + context.jsonMapper().fromJsonString( + formParam, + GraphQLServerRequest::class.java, + ) + + @Suppress("UNCHECKED_CAST") val map = context .formParam("map") ?.let { - Json.decodeFromString( - MapSerializer(String.serializer(), ListSerializer(String.serializer())), + context.jsonMapper().fromJsonString( it, + Map::class.java as Class>>, ) }.orEmpty() diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskGraphQLContextFactory.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskGraphQLContextFactory.kt index 679c1c65..bb7c2d91 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskGraphQLContextFactory.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskGraphQLContextFactory.kt @@ -5,20 +5,18 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -@file:Suppress("DEPRECATION") - package suwayomi.tachidesk.graphql.server -import com.expediagroup.graphql.generator.execution.GraphQLContext import com.expediagroup.graphql.server.execution.GraphQLContextFactory +import graphql.GraphQLContext import io.javalin.http.Context import io.javalin.websocket.WsContext /** * Custom logic for how Suwayomi-Server should create its context given the [Context] */ -class TachideskGraphQLContextFactory : GraphQLContextFactory { - override suspend fun generateContextMap(request: Context): Map<*, Any> = emptyMap() +class TachideskGraphQLContextFactory : GraphQLContextFactory { + override suspend fun generateContext(request: Context): GraphQLContext = emptyMap().toGraphQLContext() // mutableMapOf( // "user" to User( // email = "fake@site.com", @@ -30,7 +28,7 @@ class TachideskGraphQLContextFactory : GraphQLContextFactory // map["customHeader"] = customHeader // } -// } +// }.toGraphQLContext() fun generateContextMap( @Suppress("UNUSED_PARAMETER") request: WsContext, diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/GraphQLSubscriptionHandler.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/GraphQLSubscriptionHandler.kt index 6f54ed0a..cb58e097 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/GraphQLSubscriptionHandler.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/GraphQLSubscriptionHandler.kt @@ -29,8 +29,8 @@ open class GraphQLSubscriptionHandler( graphQLRequest: GraphQLRequest, graphQLContext: GraphQLContext = GraphQLContext.of(emptyMap()), ): Flow> { - val dataLoaderRegistry = dataLoaderRegistryFactory?.generate() - val input = graphQLRequest.toExecutionInput(dataLoaderRegistry, graphQLContext) + val dataLoaderRegistry = dataLoaderRegistryFactory?.generate(graphQLContext) + val input = graphQLRequest.toExecutionInput(graphQLContext, dataLoaderRegistry) val res = graphQL.execute(input) val data = res.getData>() 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 3319ceda..2520dcac 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt @@ -44,10 +44,10 @@ class ChapterType( mangaId: Int, dataFetchingEnvironment: DataFetchingEnvironment, ) { - dataFetchingEnvironment.getDataLoader("ChapterDataLoader").clear(chapterId) - dataFetchingEnvironment.getDataLoader("ChaptersForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("ChapterDataLoader")?.clear(chapterId) + dataFetchingEnvironment.getDataLoader("ChaptersForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader")?.clear(mangaId) } } 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 03448c19..b96c9b74 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt @@ -57,31 +57,31 @@ class MangaType( mangaId: Int, dataFetchingEnvironment: DataFetchingEnvironment, ) { - dataFetchingEnvironment.getDataLoader("MangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("MangaDataLoader")?.clear(mangaId) val mangaForIdsDataLoader = dataFetchingEnvironment.getDataLoader, MangaNodeList>("MangaForIdsDataLoader") @Suppress("UNCHECKED_CAST") - (mangaForIdsDataLoader.cacheMap as CustomCacheMap, MangaNodeList>) - .getKeys() - .filter { it.contains(mangaId) } - .forEach { mangaForIdsDataLoader.clear(it) } + (mangaForIdsDataLoader?.cacheMap as? CustomCacheMap, MangaNodeList>?) + ?.getKeys() + ?.filter { it.contains(mangaId) } + ?.forEach { mangaForIdsDataLoader.clear(it) } - dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("UnreadChapterCountForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("BookmarkedChapterCountForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("HasDuplicateChaptersForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LatestReadChapterForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LatestFetchedChapterForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LatestUploadedChapterForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("FirstUnreadChapterForMangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("UnreadChapterCountForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("BookmarkedChapterCountForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("HasDuplicateChaptersForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LatestReadChapterForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LatestFetchedChapterForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LatestUploadedChapterForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("FirstUnreadChapterForMangaDataLoader")?.clear(mangaId) dataFetchingEnvironment .getDataLoader( "ChaptersForMangaDataLoader", - ).clear(mangaId) - dataFetchingEnvironment.getDataLoader>("MangaMetaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("CategoriesForMangaDataLoader").clear(mangaId) + )?.clear(mangaId) + dataFetchingEnvironment.getDataLoader>("MangaMetaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("CategoriesForMangaDataLoader")?.clear(mangaId) } }