kobylynskyi / graphql-java-codegen

Make your GraphQL Java application schema-driven.
https://kobylynskyi.github.io/graphql-java-codegen/
MIT License
270 stars 114 forks source link

Support ArgumentValue wrapper for input parameters in Kotlin generator #1575

Open bczerwinski-equinix opened 4 weeks ago

bczerwinski-equinix commented 4 weeks ago

Kotlin input parameters generation does not support useWrapperForNullableInputTypes configuration property (https://github.com/kobylynskyi/graphql-java-codegen/blob/main/src/main/java/com/kobylynskyi/graphql/codegen/kotlin/KotlinGraphQLTypeMapper.java#L193). Looking at the comments mentioned below I am not sure if adding support for this flag is planned? Kotlin does not provide org.springframework.graphql.data.ArgumentValue functionality - only kind of an equivalent of the optional pattern. ArgumentValue provides both nullable optional and omitted flag features that could be very useful in input parameters.

The optional specification of Java SE8 is not applicable to scala and kotlin. In the functional programming, the data class has accurately described the data type. Therefore, I think only Java needs it.

Originally posted by @jxnu-liguobin in https://github.com/kobylynskyi/graphql-java-codegen/issues/1450#issuecomment-1893922940

rwo-trackunit commented 3 weeks ago

I omitted Kotlin, when implementing, because of the above comment, and because there is no build-in wrapper like ArgumentValue to wrap it with.

ArgumentValue is specifically supported in graphql-java project, which means the serializer knows how to handle it. If we make our own, it will not be able to (de)serialize it. So that is not an option.