ExMoveetting the required flux query parts intohe Basics trait
Signed-off-by: davidarendsen <davidarendsen@hey.com>
This commit is contained in:
parent
fea5fee010
commit
ee0ae4ca20
2 changed files with 26 additions and 12 deletions
|
|
@ -17,9 +17,12 @@ trait Basics
|
|||
{
|
||||
public function from(array $from): QueryBuilderInterface
|
||||
{
|
||||
$this->setRequirements();
|
||||
|
||||
$this->addToQuery(
|
||||
new From($from)
|
||||
);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
|
@ -30,6 +33,8 @@ trait Basics
|
|||
|
||||
public function fromMeasurement(string $measurement): QueryBuilderInterface
|
||||
{
|
||||
$this->setRequirements();
|
||||
|
||||
$this->addToQuery(
|
||||
new Measurement($measurement)
|
||||
);
|
||||
|
|
@ -44,6 +49,8 @@ trait Basics
|
|||
*/
|
||||
public function addFilter(KeyValue $keyValue): QueryBuilderInterface
|
||||
{
|
||||
$this->setRequirements();
|
||||
|
||||
$this->addToQuery(
|
||||
new Filter($keyValue)
|
||||
);
|
||||
|
|
@ -52,6 +59,8 @@ trait Basics
|
|||
|
||||
public function addKeyFilter(KeyFilter $keyFilter): QueryBuilderInterface
|
||||
{
|
||||
$this->setRequirements();
|
||||
|
||||
$this->addToQuery(
|
||||
new Filter($keyFilter)
|
||||
);
|
||||
|
|
@ -60,6 +69,8 @@ trait Basics
|
|||
|
||||
public function addFieldFilter(array $fields): QueryBuilderInterface
|
||||
{
|
||||
$this->setRequirements();
|
||||
|
||||
$this->addToQuery(
|
||||
new Filter($fields)
|
||||
);
|
||||
|
|
@ -68,6 +79,8 @@ trait Basics
|
|||
|
||||
public function addRange(DateTime $start, ?DateTime $stop = null): QueryBuilderInterface
|
||||
{
|
||||
$this->setRequirements();
|
||||
|
||||
$this->addToQuery(
|
||||
new Range($start, $stop)
|
||||
);
|
||||
|
|
@ -93,4 +106,13 @@ trait Basics
|
|||
);
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function setRequirements()
|
||||
{
|
||||
$this->requiredFluxQueryParts = [
|
||||
From::class,
|
||||
Range::class,
|
||||
Measurement::class,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,9 +6,6 @@ use Exception;
|
|||
use Arendsen\FluxQueryBuilder\Builder\QueryBuilderInterface;
|
||||
use Arendsen\FluxQueryBuilder\Builder\Basics;
|
||||
use Arendsen\FluxQueryBuilder\Builder\Universe;
|
||||
use Arendsen\FluxQueryBuilder\Functions\From;
|
||||
use Arendsen\FluxQueryBuilder\Functions\Measurement;
|
||||
use Arendsen\FluxQueryBuilder\Functions\Range;
|
||||
|
||||
class QueryBuilder implements QueryBuilderInterface
|
||||
{
|
||||
|
|
@ -16,14 +13,9 @@ class QueryBuilder implements QueryBuilderInterface
|
|||
use Universe;
|
||||
|
||||
/**
|
||||
* The required Flux query parts and the correct order.
|
||||
* Depends on Basics trait
|
||||
* @var array $requiredFluxQueryParts
|
||||
*/
|
||||
public const REQUIRED_FLUX_QUERY_PARTS = [
|
||||
From::class,
|
||||
Range::class,
|
||||
Measurement::class,
|
||||
];
|
||||
private $requiredFluxQueryParts = [];
|
||||
|
||||
/**
|
||||
* @var array $fluxQueryParts
|
||||
|
|
@ -39,7 +31,7 @@ class QueryBuilder implements QueryBuilderInterface
|
|||
{
|
||||
$this->fluxQueryParts[] = $query;
|
||||
|
||||
foreach (self::REQUIRED_FLUX_QUERY_PARTS as $input) {
|
||||
foreach ($this->requiredFluxQueryParts as $input) {
|
||||
if ($query instanceof $input) {
|
||||
$this->requiredData[] = $query;
|
||||
}
|
||||
|
|
@ -61,7 +53,7 @@ class QueryBuilder implements QueryBuilderInterface
|
|||
|
||||
protected function checkRequired()
|
||||
{
|
||||
foreach (self::REQUIRED_FLUX_QUERY_PARTS as $key => $input) {
|
||||
foreach ($this->requiredFluxQueryParts as $key => $input) {
|
||||
if (isset($this->requiredData[$key]) && !$this->requiredData[$key] instanceof $input) {
|
||||
throw new Exception('You need to put the "' . $input . '" part of the query in the correct order!');
|
||||
} elseif (!isset($this->requiredData[$key])) {
|
||||
|
|
|
|||
Loading…
Add table
editor.link_modal.header
Reference in a new issue