utility
delegate
Resolver
A resolver which delegates to another query, mutation, or property. This enables complex resolver mappings to be reused throughout the schema while maintaining a DRYer schema.
name
Type
string!
Values
delegate
to
Type
string!
Description
A reference to a property, query, or mutation to delegate to. For example Query.getPostList
or stripe:Query.listProducts
.
args
Type
results
Type
options
Type
object
Option Descriptions
selectionSet
Optional string. When delegating to a GraphQL query, the default behavior is to use the same selection set for the delegated query as was provided to the delegate resolver. If the delegate resolver's return Shape is not the same as the to
query return Shape, specifying selectionSet
will be necessary.
For example, let's start with this query:
character(id:"123") {
name
episode {
name
air_date
}
}
What if you wanted to make a query that gets the first episode a character appeared in? You could achieve that with a delegate resolver like this one.
"getFirstCharacterEpisode": {
"shape": "Rick_Episode",
"args": {
"type": "object",
"properties": {"characterId": {"type": "string"}}
},
"resolver": {
"name": "delegate",
"to": "rick:Query.character",
"args": {"ops": [{"path": "id", "mapping": "$args.characterId"}]},
"results": {
"ops": [{"path": "$", "mapping": "$finalResolver.episode[0]"}]
},
"options": {
"selectionSet": "{episode {..._parentFragment}}",
"unboxParentSelectionSet": false
}
}
}
You could then write a query like this:
{
getFirstCharacterEpisode(characterId: "123") {
name
air_date
}
}
unboxParentSelectionSet
Same behavior as the option with the same name in the GraphQL resolver.
Misc Resolvers
Some simple utilities. Mostly for internal use and debugging.
name
Type
string!
Values
util:noop
util:wrap