Automattic\WooCommerce\Vendor\GraphQL

GraphQL::promiseToExecutepublic staticWC 1.0

Same as executeQuery(), but requires PromiseAdapter and always returns a Promise. Useful for Async PHP platforms.

Method of the class: GraphQL{}

No Hooks.

Returns

null. Nothing (null).

Usage

$result = GraphQL::promiseToExecute( $promiseAdapter, $schema, $source, $rootValue, $context, ?array $variableValues, ?string $operationName, ?callable $fieldResolver, ?array $validationRules ): Promise;
$promiseAdapter(PromiseAdapter) (required)
.
$schema(SchemaType) (required)
.
$source(string|DocumentNode) (required)
.
$rootValue(mixed)
.
Default: null
$context(mixed)
.
Default: null
?array $variableValues
.
Default: null
?string $operationName
.
Default: null
?callable $fieldResolver
.
Default: null
?array $validationRules
.
Default: null

GraphQL::promiseToExecute() code WC 11.0.1

public static function promiseToExecute(
    PromiseAdapter $promiseAdapter,
    SchemaType $schema,
    $source,
    $rootValue = null,
    $context = null,
    ?array $variableValues = null,
    ?string $operationName = null,
    ?callable $fieldResolver = null,
    ?array $validationRules = null
): Promise {
    try {
        $documentNode = $source instanceof DocumentNode
            ? $source
            : Parser::parse(new Source($source, 'GraphQL'));

        if ($validationRules === null) {
            $queryComplexity = DocumentValidator::getRule(QueryComplexity::class);
            assert($queryComplexity instanceof QueryComplexity, 'should not register a different rule for QueryComplexity');

            $queryComplexity->setRawVariableValues($variableValues);
        } else {
            foreach ($validationRules as $rule) {
                if ($rule instanceof QueryComplexity) {
                    $rule->setRawVariableValues($variableValues);
                }
            }
        }

        $validationErrors = DocumentValidator::validate($schema, $documentNode, $validationRules);

        if ($validationErrors !== []) {
            return $promiseAdapter->createFulfilled(
                new ExecutionResult(null, $validationErrors)
            );
        }

        return Executor::promiseToExecute(
            $promiseAdapter,
            $schema,
            $documentNode,
            $rootValue,
            $context,
            $variableValues,
            $operationName,
            $fieldResolver
        );
    } catch (Error $e) {
        return $promiseAdapter->createFulfilled(
            new ExecutionResult(null, [$e])
        );
    }
}