Skip to content

Commit 558d810

Browse files
authored
refactor: Cleanup ArgumentTransformer (#133)
Makes `ArgumentTransformer` work with `__Schema`.
2 parents 7e6fc39 + e9ef708 commit 558d810

File tree

3 files changed

+14
-16
lines changed

3 files changed

+14
-16
lines changed

kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/execution/ArgumentTransformer.kt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,19 @@ package com.apurebase.kgraphql.schema.execution
33
import com.apurebase.kgraphql.Context
44
import com.apurebase.kgraphql.InvalidInputValueException
55
import com.apurebase.kgraphql.request.Variables
6-
import com.apurebase.kgraphql.schema.DefaultSchema
76
import com.apurebase.kgraphql.schema.introspection.TypeKind
7+
import com.apurebase.kgraphql.schema.introspection.__Schema
88
import com.apurebase.kgraphql.schema.introspection.typeReference
99
import com.apurebase.kgraphql.schema.model.ast.ArgumentNodes
1010
import com.apurebase.kgraphql.schema.model.ast.ValueNode
1111
import com.apurebase.kgraphql.schema.model.ast.ValueNode.ObjectValueNode
1212
import com.apurebase.kgraphql.schema.scalar.deserializeScalar
1313
import com.apurebase.kgraphql.schema.structure.InputValue
1414
import com.apurebase.kgraphql.schema.structure.Type
15-
import kotlin.reflect.KType
1615
import kotlin.reflect.full.primaryConstructor
1716
import kotlin.reflect.jvm.jvmErasure
1817

19-
open class ArgumentTransformer(val schema: DefaultSchema) {
18+
open class ArgumentTransformer(val schema: __Schema) {
2019

2120
fun transformArguments(
2221
funName: String,
@@ -120,7 +119,12 @@ open class ArgumentTransformer(val schema: DefaultSchema) {
120119
value
121120
)
122121

123-
params.getValue(valueField.name.value) to transformValue(paramType, valueField.value, variables, coerceSingleValueAsList)
122+
params.getValue(valueField.name.value) to transformValue(
123+
paramType,
124+
valueField.value,
125+
variables,
126+
coerceSingleValueAsList
127+
)
124128
}
125129

126130
val missingNonOptionalInputs = params.values.filter { !it.isOptional && !valueMap.containsKey(it) }
@@ -157,13 +161,11 @@ open class ArgumentTransformer(val schema: DefaultSchema) {
157161
}
158162
}
159163

160-
else -> transformString(value, kType)
164+
else -> transformString(value, type.unwrapped())
161165
}
162166
}
163167

164-
private fun transformString(value: ValueNode, kType: KType): Any {
165-
166-
val kClass = kType.jvmErasure
168+
private fun transformString(value: ValueNode, type: Type): Any {
167169

168170
fun throwInvalidEnumValue(enumType: Type.Enum<*>) {
169171
throw InvalidInputValueException(
@@ -172,19 +174,19 @@ open class ArgumentTransformer(val schema: DefaultSchema) {
172174
)
173175
}
174176

175-
schema.model.enums[kClass]?.let { enumType ->
177+
(type as? Type.Enum<*>)?.let { enumType ->
176178
return if (value is ValueNode.EnumValueNode) {
177-
enumType.values.find { it.name == value.value }?.value ?: throwInvalidEnumValue(enumType)
179+
enumType.values.firstOrNull { it.name == value.value }?.value ?: throwInvalidEnumValue(enumType)
178180
} else {
179181
throw InvalidInputValueException(
180182
"String literal '${value.valueNodeName}' is invalid value for enum type ${enumType.name}",
181183
value
182184
)
183185
}
184-
} ?: schema.model.scalars[kClass]?.let { scalarType ->
186+
} ?: (type as? Type.Scalar<*>)?.let { scalarType ->
185187
return deserializeScalar(scalarType, value)
186188
} ?: throw InvalidInputValueException(
187-
"Invalid argument value '${value.valueNodeName}' for type ${schema.model.inputTypes[kClass]?.name}",
189+
"Invalid argument value '${value.valueNodeName}' for type ${type.name}",
188190
value
189191
)
190192
}

kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/structure/SchemaCompilation.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ class SchemaCompilation(
8686
} else {
8787
subscriptionType
8888
},
89-
enums = enums,
90-
scalars = scalars,
9189
queryTypes = queryTypeProxies + enums + scalars,
9290
inputTypes = inputTypeProxies + enums + scalars,
9391
allTypes = queryTypeProxies.values

kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/structure/SchemaModel.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ data class SchemaModel(
1111
val query: Type,
1212
val mutation: Type?,
1313
val subscription: Type?,
14-
val enums: Map<KClass<out Enum<*>>, Type.Enum<out Enum<*>>>,
15-
val scalars: Map<KClass<*>, Type.Scalar<*>>,
1614
val allTypes: List<Type>,
1715
val queryTypes: Map<KClass<*>, Type>,
1816
val inputTypes: Map<KClass<*>, Type>,

0 commit comments

Comments
 (0)