Skip to content
Snippets Groups Projects
Commit 4508fb2c authored by Alberto Silva's avatar Alberto Silva
Browse files

Add support for persisted queries [Issue 3161807]

parent c6590329
No related branches found
No related tags found
No related merge requests found
...@@ -7,12 +7,18 @@ use Drupal\Core\Cache\Context\CacheContextsManager; ...@@ -7,12 +7,18 @@ use Drupal\Core\Cache\Context\CacheContextsManager;
use Drupal\graphql\GraphQL\Execution\QueryProcessor as BaseQueryProcessor; use Drupal\graphql\GraphQL\Execution\QueryProcessor as BaseQueryProcessor;
use Drupal\graphql\Plugin\SchemaPluginManager; use Drupal\graphql\Plugin\SchemaPluginManager;
use Drupal\graphql_fragment_include\GraphQL\Fragment\GraphQLFragmentLoaderInterface; use Drupal\graphql_fragment_include\GraphQL\Fragment\GraphQLFragmentLoaderInterface;
use GraphQL\Executor\Promise\PromiseAdapter;
use GraphQL\Language\AST\DocumentNode;
use GraphQL\Server\OperationParams; use GraphQL\Server\OperationParams;
use GraphQL\Server\ServerConfig; use GraphQL\Server\ServerConfig;
use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\RequestStack;
/** /**
* QueryProcessor service overriding BaseQueryProcessor. * QueryProcessor service overriding BaseQueryProcessor.
*
* This class overrides both executeCacheableOperation() and
* executeUncacheableOperation() to be able to support persisted and
* non-persisted querries.
*/ */
class QueryProcessor extends BaseQueryProcessor { class QueryProcessor extends BaseQueryProcessor {
...@@ -49,23 +55,27 @@ class QueryProcessor extends BaseQueryProcessor { ...@@ -49,23 +55,27 @@ class QueryProcessor extends BaseQueryProcessor {
} }
/** /**
* Preprocesses and execute a single query. * {@inheritdoc}
* */
* @param \GraphQL\Server\ServerConfig $config protected function executeCacheableOperation(PromiseAdapter $adapter, ServerConfig $config, OperationParams $params, DocumentNode $document, $validate = TRUE) {
* ServerConfig. // Load GraphQL fragments.
* @param \GraphQL\Server\OperationParams $params if ($params->query) {
* OperationParams. $params->query = $this->graphQLFragmentLoader->loadFragments($params->query);
* }
* @return mixed
* The result. return parent::executeCacheableOperation($adapter, $config, $params, $document, $validate);
}
/**
* {@inheritdoc}
*/ */
public function executeSingle(ServerConfig $config, OperationParams $params) { protected function executeUncachableOperation(PromiseAdapter $adapter, ServerConfig $config, OperationParams $params, DocumentNode $document, $validate = TRUE) {
// Load GraphQL fragments. // Load GraphQL fragments.
if ($params->query) { if ($params->query) {
$params->query = $this->graphQLFragmentLoader->loadFragments($params->query); $params->query = $this->graphQLFragmentLoader->loadFragments($params->query);
} }
return parent::executeSingle($config, $params); return parent::executeUncachableOperation($adapter, $config, $params, $document, $validate);
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment