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