Я использую io.leangen.graphql.spqr
версию библиотеки 0.9.6
, и мне нужно исключить мутации из узла Query
root в Do c.
Мой GraphQLController.kt
выглядит следующим образом:
@RestController
class GraphQLController {
private var graphQL: GraphQL? = null
@Autowired
fun GraphQLController(bookGraph: BookGraph) {
val schema = GraphQLSchemaGenerator()
.withResolverBuilders(
AnnotatedResolverBuilder(),
PublicResolverBuilder("com.example.graphql.spqr"))
.withOperationsFromSingleton(bookGraph)
.withValueMapperFactory(JacksonValueMapperFactory())
.generate()
graphQL = GraphQL.newGraphQL(schema)
.build()
}
@PostMapping(value = ["/graphql"], consumes = [MediaType.APPLICATION_JSON_UTF8_VALUE], produces = [MediaType.APPLICATION_JSON_UTF8_VALUE])
@ResponseBody
fun execute(@RequestBody request: Map<String?, Any?>): ExecutionResult? {
return graphQL!!.execute(ExecutionInput.newExecutionInput()
.query(request["query"] as String?)
.variables(request["variables"] as Map<String, Object>?)
.operationName(request["operationName"] as String?)
.build())
и мой BookGraph.kt
выглядит следующим образом:
@Component
class BookGraph {
@Autowired
private lateinit var bookService: BookService
@GraphQLQuery(name = "books")
fun books() : List<Book> {
return bookService.findAll()
}
@GraphQLMutation(name = "createBook")
fun createBook(@GraphQLInputField(name = "name") name: String) : Book {
return bookService.findAll()
}
}
Как я могу это сделать?
Я искал возможные решения как в StackOverflow, так и в SPQR выдает , но не может найти решение.
Пример узла запроса root ниже, я хочу исключить createBook
:
![enter image description here](https://i.stack.imgur.com/YhD4L.png)
Пока я хочу, чтобы узел Mutation root оставался нетронутым:
![enter image description here](https://i.stack.imgur.com/snmKI.png)