Skip to content

Commit 04dc38a

Browse files
committed
Allow using GraphQL experimental Coroutine executor
1 parent aa8ea89 commit 04dc38a

File tree

7 files changed

+15
-1
lines changed

7 files changed

+15
-1
lines changed

.travis.yml

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ jobs:
4141
env: SYMFONY_VERSION=4.2.*
4242
- php: 7.3
4343
env: SYMFONY_VERSION=4.3.* SYMFONY_DEPRECATIONS_HELPER=max[total]=0
44+
- php: 7.3
45+
env: SYMFONY_VERSION=4.3.* USE_EXPERIMENTAL_EXECUTOR=1 SYMFONY_DEPRECATIONS_HELPER=max[total]=0
4446
- php: 7.3
4547
env: SYMFONY_VERSION=4.4.* STABILITY=dev SYMFONY_DEPRECATIONS_HELPER=max[total]=0
4648
- php: 7.3

phpunit.xml.dist

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<php>
3030
<ini name="error_reporting" value="-1" />
3131
<env name="SYMFONY_DEPRECATIONS_HELPER" value="999999" />
32+
<env name="USE_EXPERIMENTAL_EXECUTOR" value="0" />
3233
</php>
3334
<listeners>
3435
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />

src/DependencyInjection/Configuration.php

+1
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ private function definitionsSection()
118118
->addDefaultsIfNotSet()
119119
->children()
120120
->scalarNode('argument_class')->defaultValue(Argument::class)->end()
121+
->scalarNode('use_experimental_executor')->defaultFalse()->end()
121122
->variableNode('default_resolver')->defaultValue([Resolver::class, 'defaultResolveFn'])->end()
122123
->scalarNode('class_namespace')->defaultValue('Overblog\\GraphQLBundle\\__DEFINITIONS__')->end()
123124
->scalarNode('cache_dir')->defaultNull()->end()

src/DependencyInjection/OverblogGraphQLExtension.php

+1
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ private function setDefinitionParameters(array $config, ContainerBuilder $contai
121121
$container->setParameter($this->getAlias().'.cache_dir', $config['definitions']['cache_dir']);
122122
$container->setParameter($this->getAlias().'.cache_dir_permissions', $config['definitions']['cache_dir_permissions']);
123123
$container->setParameter($this->getAlias().'.argument_class', $config['definitions']['argument_class']);
124+
$container->setParameter($this->getAlias().'.use_experimental_executor', $config['definitions']['use_experimental_executor']);
124125
}
125126

126127
private function setBatchingMethod(array $config, ContainerBuilder $container): void

src/Request/Executor.php

+8-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use GraphQL\Executor\ExecutionResult;
88
use GraphQL\Executor\Promise\PromiseAdapter;
9+
use GraphQL\GraphQL;
910
use GraphQL\Type\Schema;
1011
use GraphQL\Validator\DocumentValidator;
1112
use GraphQL\Validator\Rules\DisableIntrospection;
@@ -34,16 +35,20 @@ class Executor
3435

3536
private $defaultFieldResolver;
3637

38+
private $useExperimentalExecutor;
39+
3740
public function __construct(
3841
ExecutorInterface $executor,
3942
PromiseAdapter $promiseAdapter,
4043
EventDispatcherInterface $dispatcher,
41-
?callable $defaultFieldResolver = null
44+
?callable $defaultFieldResolver = null,
45+
bool $useExperimental = false
4246
) {
4347
$this->executor = $executor;
4448
$this->promiseAdapter = $promiseAdapter;
4549
$this->dispatcher = $dispatcher;
4650
$this->defaultFieldResolver = $defaultFieldResolver;
51+
$this->useExperimentalExecutor = $useExperimental;
4752
}
4853

4954
public function setExecutor(ExecutorInterface $executor): self
@@ -122,6 +127,8 @@ public function disableIntrospectionQuery(): void
122127
*/
123128
public function execute(?string $schemaName, array $request, $rootValue = null): ExecutionResult
124129
{
130+
$this->useExperimentalExecutor ? GraphQL::useExperimentalExecutor() : GraphQL::useReferenceExecutor();
131+
125132
$executorArgumentsEvent = $this->preExecute(
126133
$this->getSchema($schemaName),
127134
$request[ParserInterface::PARAM_QUERY] ?? null,

src/Resources/config/services.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ services:
1515
- "@overblog_graphql.promise_adapter"
1616
- "@event_dispatcher"
1717
- '%overblog_graphql.default_resolver%'
18+
- "%overblog_graphql.use_experimental_executor%"
1819
calls:
1920
- ["setMaxQueryComplexity", ["%overblog_graphql.query_max_complexity%"]]
2021
- ["setMaxQueryDepth", ["%overblog_graphql.query_max_depth%"]]

tests/Functional/App/config/config.yml

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ overblog_graphql:
3030
errors_handler:
3131
debug: false
3232
definitions:
33+
use_experimental_executor: '%env(bool:USE_EXPERIMENTAL_EXECUTOR)%'
3334
config_validation: true
3435
mappings:
3536
auto_discover: false

0 commit comments

Comments
 (0)