Lists
kotlin.collections.List is automatically mapped to the GraphQL List type. Type arguments provided to Kotlin collections
are used as the type arguments in the GraphQL List type.
class SimpleQuery {
fun generateList(): List<String> {
// some logic here that generates list
}
fun doSomethingWithIntList(ints: List<Int>): String {
// some logic here that processes list
}
}
The above Kotlin class would produce the following GraphQL schema:
type Query {
generateList: [String!]!
doSomethingWithIntList(ints: [Int!]!): String!
}
Arrays and Unsupported Collection Types
Currently, the GraphQL spec only supports Lists. Therefore, even though Java and Kotlin support number of other collection
types, graphql-kotlin-schema-generator only explicitly supports Lists. Other collection types such as Sets (see #201)
and arbitrary Map data structures are not supported out of the box. While we do not recommend using Map or Set in the schema,
they could be supported with the use of the schema hooks.
Due to the argument deserialization issues, arrays are currently not supported
override fun willResolveMonad(type: KType): KType = when (type.classifier) {
Set::class -> List::class.createType(type.arguments)
else -> type
}
See Discussion #1110 for more details.