Skip to content

Commit 5d3a320

Browse files
authored
[client] set default null value for input arguments (#810)
When generating client we can set default `null` value to the optional nullable input arguments. Related: #781
1 parent 3ba13a8 commit 5d3a320

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

plugins/graphql-kotlin-plugin-core/src/main/kotlin/com/expediagroup/graphql/plugin/generator/types/generateGraphQLInputObjectTypeSpec.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package com.expediagroup.graphql.plugin.generator.types
1919
import com.expediagroup.graphql.plugin.generator.GraphQLClientGeneratorContext
2020
import com.squareup.kotlinpoet.FunSpec
2121
import com.squareup.kotlinpoet.KModifier
22+
import com.squareup.kotlinpoet.ParameterSpec
2223
import com.squareup.kotlinpoet.PropertySpec
2324
import com.squareup.kotlinpoet.TypeSpec
2425
import graphql.language.InputObjectTypeDefinition
@@ -46,7 +47,12 @@ internal fun generateGraphQLInputObjectTypeSpec(context: GraphQLClientGeneratorC
4647

4748
val inputPropertySpec = inputPropertySpecBuilder.build()
4849
inputObjectTypeSpecBuilder.addProperty(inputPropertySpec)
49-
constructorBuilder.addParameter(inputPropertySpec.name, inputPropertySpec.type)
50+
51+
val inputParameterSpec = ParameterSpec.builder(inputPropertySpec.name, inputPropertySpec.type)
52+
if (inputPropertySpec.type.isNullable) {
53+
inputParameterSpec.defaultValue("null")
54+
}
55+
constructorBuilder.addParameter(inputParameterSpec.build())
5056
}
5157
inputObjectTypeSpecBuilder.primaryConstructor(constructorBuilder.build())
5258

plugins/graphql-kotlin-plugin-core/src/main/kotlin/com/expediagroup/graphql/plugin/generator/types/generateVariableTypeSpec.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package com.expediagroup.graphql.plugin.generator.types
1919
import com.expediagroup.graphql.plugin.generator.GraphQLClientGeneratorContext
2020
import com.squareup.kotlinpoet.FunSpec
2121
import com.squareup.kotlinpoet.KModifier
22+
import com.squareup.kotlinpoet.ParameterSpec
2223
import com.squareup.kotlinpoet.PropertySpec
2324
import com.squareup.kotlinpoet.TypeSpec
2425
import graphql.language.VariableDefinition
@@ -34,7 +35,11 @@ internal fun generateVariableTypeSpec(context: GraphQLClientGeneratorContext, va
3435
variableDefinitions.forEach { variableDef ->
3536
val kotlinTypeName = generateTypeName(context, variableDef.type)
3637

37-
constructorSpec.addParameter(variableDef.name, kotlinTypeName)
38+
val parameterBuilder = ParameterSpec.builder(variableDef.name, kotlinTypeName)
39+
if (kotlinTypeName.isNullable) {
40+
parameterBuilder.defaultValue("null")
41+
}
42+
constructorSpec.addParameter(parameterBuilder.build())
3843
variableTypeSpec.addProperty(
3944
PropertySpec.builder(variableDef.name, kotlinTypeName)
4045
.initializer(variableDef.name)

plugins/graphql-kotlin-plugin-core/src/test/kotlin/com/expediagroup/graphql/plugin/generator/types/GenerateVariableTypeSpecIT.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class GenerateVariableTypeSpecIT {
4949
requestBuilder)
5050
5151
data class Variables(
52-
val criteria: TestQueryWithVariables.SimpleArgumentInput?
52+
val criteria: TestQueryWithVariables.SimpleArgumentInput? = null
5353
)
5454
5555
/**
@@ -59,15 +59,15 @@ class GenerateVariableTypeSpecIT {
5959
/**
6060
* Maximum value for test criteria
6161
*/
62-
val max: Float?,
62+
val max: Float? = null,
6363
/**
6464
* Minimum value for test criteria
6565
*/
66-
val min: Float?,
66+
val min: Float? = null,
6767
/**
6868
* New value to be set
6969
*/
70-
val newName: String?
70+
val newName: String? = null
7171
)
7272
7373
data class Result(

0 commit comments

Comments
 (0)