DefaultValue.php in GraphQL 8.4
File
src/GraphQL/Resolver/DefaultValue.php
View source
<?php
namespace Drupal\graphql\GraphQL\Resolver;
use Drupal\graphql\GraphQL\Execution\FieldContext;
use Drupal\graphql\GraphQL\Execution\ResolveContext;
use Drupal\graphql\GraphQL\Utility\DeferredUtility;
use GraphQL\Executor\Promise\Adapter\SyncPromise;
use GraphQL\Type\Definition\ResolveInfo;
class DefaultValue implements ResolverInterface {
protected $value;
protected $default;
public function __construct(ResolverInterface $value, ResolverInterface $default) {
$this->value = $value;
$this->default = $default;
}
public function resolve($value, $args, ResolveContext $context, ResolveInfo $info, FieldContext $field) {
$result = $this->value
->resolve($value, $args, $context, $info, $field);
if ($result === NULL) {
return $this->default
->resolve($value, $args, $context, $info, $field);
}
if ($result instanceof SyncPromise) {
return DeferredUtility::returnFinally($result, function ($current) use ($value, $args, $context, $info, $field) {
if ($current === NULL) {
return $this->default
->resolve($value, $args, $context, $info, $field);
}
return $current;
});
}
return $result;
}
}