From a81d01d2e3f1f8b6ba89d99a1206d538cebf1672 Mon Sep 17 00:00:00 2001 From: Mitchell Syer Date: Fri, 26 May 2023 19:39:31 -0400 Subject: [PATCH] Don't use data fetchers in mutations (#559) --- .../graphql/mutations/ChapterMutation.kt | 33 +++++++++---------- .../graphql/mutations/MangaMutation.kt | 31 ++++++++--------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ChapterMutation.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ChapterMutation.kt index fcf059aa..7142519c 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ChapterMutation.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ChapterMutation.kt @@ -1,8 +1,5 @@ package suwayomi.tachidesk.graphql.mutations -import com.expediagroup.graphql.server.extensions.getValueFromDataLoader -import com.expediagroup.graphql.server.extensions.getValuesFromDataLoader -import graphql.schema.DataFetchingEnvironment import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq import org.jetbrains.exposed.sql.and import org.jetbrains.exposed.sql.deleteWhere @@ -71,35 +68,37 @@ class ChapterMutation { } fun updateChapter( - dataFetchingEnvironment: DataFetchingEnvironment, input: UpdateChapterInput - ): CompletableFuture { + ): UpdateChapterPayload { val (clientMutationId, id, patch) = input updateChapters(listOf(id), patch) - return dataFetchingEnvironment.getValueFromDataLoader("ChapterDataLoader", id).thenApply { chapter -> - UpdateChapterPayload( - clientMutationId = clientMutationId, - chapter = chapter - ) + val chapter = transaction { + ChapterType(ChapterTable.select { ChapterTable.id eq id }.first()) } + + return UpdateChapterPayload( + clientMutationId = clientMutationId, + chapter = chapter + ) } fun updateChapters( - dataFetchingEnvironment: DataFetchingEnvironment, input: UpdateChaptersInput - ): CompletableFuture { + ): UpdateChaptersPayload { val (clientMutationId, ids, patch) = input updateChapters(ids, patch) - return dataFetchingEnvironment.getValuesFromDataLoader("ChapterDataLoader", ids).thenApply { chapters -> - UpdateChaptersPayload( - clientMutationId = clientMutationId, - chapters = chapters - ) + val chapters = transaction { + ChapterTable.select { ChapterTable.id inList ids }.map { ChapterType(it) } } + + return UpdateChaptersPayload( + clientMutationId = clientMutationId, + chapters = chapters + ) } data class FetchChaptersInput( diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/MangaMutation.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/MangaMutation.kt index 71618f73..f0d19622 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/MangaMutation.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/MangaMutation.kt @@ -1,8 +1,5 @@ package suwayomi.tachidesk.graphql.mutations -import com.expediagroup.graphql.server.extensions.getValueFromDataLoader -import com.expediagroup.graphql.server.extensions.getValuesFromDataLoader -import graphql.schema.DataFetchingEnvironment import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq import org.jetbrains.exposed.sql.and import org.jetbrains.exposed.sql.deleteWhere @@ -61,30 +58,34 @@ class MangaMutation { } } - fun updateManga(dataFetchingEnvironment: DataFetchingEnvironment, input: UpdateMangaInput): CompletableFuture { + fun updateManga(input: UpdateMangaInput): UpdateMangaPayload { val (clientMutationId, id, patch) = input updateMangas(listOf(id), patch) - return dataFetchingEnvironment.getValueFromDataLoader("MangaDataLoader", id).thenApply { manga -> - UpdateMangaPayload( - clientMutationId = clientMutationId, - manga = manga - ) + val manga = transaction { + MangaType(MangaTable.select { MangaTable.id eq id }.first()) } + + return UpdateMangaPayload( + clientMutationId = clientMutationId, + manga = manga + ) } - fun updateMangas(dataFetchingEnvironment: DataFetchingEnvironment, input: UpdateMangasInput): CompletableFuture { + fun updateMangas(input: UpdateMangasInput): UpdateMangasPayload { val (clientMutationId, ids, patch) = input updateMangas(ids, patch) - return dataFetchingEnvironment.getValuesFromDataLoader("MangaDataLoader", ids).thenApply { mangas -> - UpdateMangasPayload( - clientMutationId = clientMutationId, - mangas = mangas - ) + val mangas = transaction { + MangaTable.select { MangaTable.id inList ids }.map { MangaType(it) } } + + return UpdateMangasPayload( + clientMutationId = clientMutationId, + mangas = mangas + ) } data class FetchMangaInput(