Add basic graphql implementation with manga and chapters loading with data loaders

This commit is contained in:
Valter Martinek
2022-11-10 22:42:12 +01:00
committed by Syer10
parent f2a650ba02
commit 21719f4408
15 changed files with 535 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
package suwayomi.tachidesk.graphql.controller
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import io.javalin.http.HttpCode
import suwayomi.tachidesk.graphql.impl.getGraphQLServer
import suwayomi.tachidesk.server.JavalinSetup.future
import suwayomi.tachidesk.server.util.handler
import suwayomi.tachidesk.server.util.withOperation
object GraphQLController {
private val mapper = jacksonObjectMapper()
private val tachideskGraphQLServer = getGraphQLServer(mapper)
/** execute graphql query */
val execute = handler(
documentWith = {
withOperation {
summary("GraphQL endpoint")
description("Endpoint for GraphQL endpoints")
}
},
behaviorOf = { ctx ->
ctx.future(
future {
tachideskGraphQLServer.execute(ctx)
}
)
},
withResults = {
json<Any>(HttpCode.OK)
}
)
}