public function ComposableSchemaExampleExtension::registerResolvers in GraphQL 8.4
Registers type and field resolvers in the shared registry.
Parameters
\Drupal\graphql\GraphQL\ResolverRegistryInterface $registry: The resolver registry.
Overrides SchemaExtensionPluginInterface::registerResolvers
File
- examples/
graphql_composable/ src/ Plugin/ GraphQL/ SchemaExtension/ ComposableSchemaExampleExtension.php, line 24
Class
- ComposableSchemaExampleExtension
- Plugin annotation @SchemaExtension( id = "composable_extension", name = "Composable Example extension", description = "A simple extension that adds node related fields.", schema = "composable" )
Namespace
Drupal\graphql_composable\Plugin\GraphQL\SchemaExtensionCode
public function registerResolvers(ResolverRegistryInterface $registry) : void {
$builder = new ResolverBuilder();
$registry
->addFieldResolver('Query', 'article', $builder
->produce('entity_load')
->map('type', $builder
->fromValue('node'))
->map('bundles', $builder
->fromValue([
'article',
]))
->map('id', $builder
->fromArgument('id')));
// Create article mutation.
$registry
->addFieldResolver('Mutation', 'createArticle', $builder
->produce('create_article')
->map('data', $builder
->fromArgument('data')));
$registry
->addFieldResolver('ArticleResponse', 'article', $builder
->callback(function (ArticleResponse $response) {
return $response
->article();
}));
$registry
->addFieldResolver('ArticleResponse', 'errors', $builder
->callback(function (ArticleResponse $response) {
return $response
->getViolations();
}));
$registry
->addFieldResolver('Article', 'id', $builder
->produce('entity_id')
->map('entity', $builder
->fromParent()));
$registry
->addFieldResolver('Article', 'title', $builder
->compose($builder
->produce('entity_label')
->map('entity', $builder
->fromParent())));
$registry
->addFieldResolver('Article', 'author', $builder
->compose($builder
->produce('entity_owner')
->map('entity', $builder
->fromParent()), $builder
->produce('entity_label')
->map('entity', $builder
->fromParent())));
// Response type resolver.
$registry
->addTypeResolver('Response', [
__CLASS__,
'resolveResponse',
]);
}