Files
GermanAirlinesVA-GraphQL/vendor/nuwave/lighthouse/src/Execution/BaseRequest.php
T
Kilian Hofmann d8c489c714 Vendor
2021-06-01 19:55:55 +02:00

99 lines
2.0 KiB
PHP

<?php
namespace Nuwave\Lighthouse\Execution;
use Illuminate\Http\Request;
abstract class BaseRequest implements GraphQLRequest
{
/**
* The current batch index.
*
* Is null if we are not resolving a batched query.
*
* @var int|null
*/
protected $batchIndex;
/**
* Get the contents of a field by key.
*
* This is expected to take batched requests into consideration.
*
* @param string $key
* @return array|string|null
*/
abstract protected function fieldValue(string $key);
/**
* Are there more batched queries to process?
*
* @return bool
*/
abstract protected function hasMoreBatches(): bool;
/**
* Construct this from a HTTP request.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
abstract public function __construct(Request $request);
/**
* Get the contained GraphQL query string.
*
* @return string
*/
public function query(): string
{
return $this->fieldValue('query');
}
/**
* Get the operationName of the current request.
*
* @return string|null
*/
public function operationName(): ?string
{
return $this->fieldValue('operationName');
}
/**
* Is the current query a batched query?
*
* @return bool
*/
public function isBatched(): bool
{
return ! is_null($this->batchIndex);
}
/**
* Get the index of the current batch.
*
* Returns null if we are not resolving a batched query.
*
* @return int|null
*/
public function batchIndex(): ?int
{
return $this->batchIndex;
}
/**
* Advance the batch index and indicate if there are more batches to process.
*
* @return bool
*/
public function advanceBatchIndex(): bool
{
if ($result = $this->hasMoreBatches()) {
$this->batchIndex++;
}
return $result;
}
}