-
Notifications
You must be signed in to change notification settings - Fork 371
Closed
Description
I have a field directive like this:
override fun onField(environment: KotlinFieldDirectiveEnvironment): GraphQLFieldDefinition {
val field = environment.element
val originalDataFetcher: DataFetcher<*> = environment.getDataFetcher()
val newFetcher = DataFetcher<Any> { dataEnv ->
val fourDigitNumber: String? = dataEnv.getArgument(environment.element.arguments[0].name) as String?
if (fourDigitNumber?.length != 4 || fourDigitNumber.toLongOrNull() == null) {
throw Exception("Must only contain 4 numerical characters")
}
originalDataFetcher.get(dataEnv)
}
environment.setDataFetcher(newFetcher)
return field
}
This works great on arguments, but it does not work on an input object field. My first thought was to do the same thing overriding onInputObjectField, but the get/set datafetcher methods don't exist:
override fun onInputObjectField(environment: KotlinSchemaDirectiveEnvironment<GraphQLInputObjectField>): GraphQLInputObjectField {
val field = environment.element
val originalDataFetcher: DataFetcher<*> = environment.getDataFetcher() //THIS METHOD DOESN'T EXIST
val newFetcher = DataFetcher<Any> { dataEnv ->
val fourDigitNumber: String? = dataEnv.getArgument(environment.element.arguments[0].name) as String?
if (fourDigitNumber?.length != 4 || fourDigitNumber.toLongOrNull() == null) {
throw Exception("Must only contain 4 numerical characters")
}
originalDataFetcher.get(dataEnv)
}
environment.setDataFetcher(newFetcher) //THIS METHOD DOESN'T EXIST
return field
}
Is there a way to do this on the fields of input objects? Or will this only work on arguments?
Metadata
Metadata
Assignees
Labels
No labels