Rename types to Type suffix
Signed-off-by: davidarendsen <davidarendsen@hey.com>
This commit is contained in:
parent
a3bf698359
commit
923cb7dcb7
12 changed files with 63 additions and 41 deletions
|
|
@ -1,25 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Arendsen\FluxQueryBuilder;
|
|
||||||
|
|
||||||
use Arendsen\FluxQueryBuilder\Type\ArrayType;
|
|
||||||
use DateTime;
|
|
||||||
use Arendsen\FluxQueryBuilder\Type\Time;
|
|
||||||
|
|
||||||
class Formatters
|
|
||||||
{
|
|
||||||
public static function valueToString($value): string
|
|
||||||
{
|
|
||||||
return new Type($value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function toFluxArrayString(array $array): string
|
|
||||||
{
|
|
||||||
return new Type($array);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function dateTimeToString(DateTime $dateTime): string
|
|
||||||
{
|
|
||||||
return new Type($dateTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
namespace Arendsen\FluxQueryBuilder\Functions;
|
namespace Arendsen\FluxQueryBuilder\Functions;
|
||||||
|
|
||||||
use Arendsen\FluxQueryBuilder\Type\Record;
|
use Arendsen\FluxQueryBuilder\Type\RecordType;
|
||||||
|
|
||||||
class Reduce extends Base
|
class Reduce extends Base
|
||||||
{
|
{
|
||||||
|
|
@ -24,7 +24,7 @@ class Reduce extends Base
|
||||||
|
|
||||||
public function __toString()
|
public function __toString()
|
||||||
{
|
{
|
||||||
return '|> reduce(fn: (r, accumulator) => (' . new Record($this->settings) . '), ' .
|
return '|> reduce(fn: (r, accumulator) => (' . new RecordType($this->settings) . '), ' .
|
||||||
'identity: ' . new Record($this->identity) . ') ';
|
'identity: ' . new RecordType($this->identity) . ') ';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ namespace Arendsen\FluxQueryBuilder;
|
||||||
|
|
||||||
use Arendsen\FluxQueryBuilder\Type\ArrayType;
|
use Arendsen\FluxQueryBuilder\Type\ArrayType;
|
||||||
use Arendsen\FluxQueryBuilder\Type\BooleanType;
|
use Arendsen\FluxQueryBuilder\Type\BooleanType;
|
||||||
use Arendsen\FluxQueryBuilder\Type\Time;
|
use Arendsen\FluxQueryBuilder\Type\TimeType;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
|
||||||
class Type
|
class Type
|
||||||
|
|
@ -20,7 +20,7 @@ class Type
|
||||||
switch (gettype($this->value)) {
|
switch (gettype($this->value)) {
|
||||||
case 'object':
|
case 'object':
|
||||||
if ($this->value instanceof DateTime) {
|
if ($this->value instanceof DateTime) {
|
||||||
return new Time($this->value);
|
return new TimeType($this->value);
|
||||||
}
|
}
|
||||||
return $this->value->__toString();
|
return $this->value->__toString();
|
||||||
case 'string':
|
case 'string':
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class ArrayType implements TypeInterface
|
||||||
public function __toString(): string
|
public function __toString(): string
|
||||||
{
|
{
|
||||||
if (isset($this->settings['isRecord']) && $this->settings['isRecord']) {
|
if (isset($this->settings['isRecord']) && $this->settings['isRecord']) {
|
||||||
return new Record($this->value);
|
return new RecordType($this->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
$subArray = isset($this->settings['isNestedArray']) && $this->settings['isNestedArray'];
|
$subArray = isset($this->settings['isNestedArray']) && $this->settings['isNestedArray'];
|
||||||
|
|
|
||||||
16
src/Type/CustomType.php
Normal file
16
src/Type/CustomType.php
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Arendsen\FluxQueryBuilder\Type;
|
||||||
|
|
||||||
|
class CustomType implements TypeInterface
|
||||||
|
{
|
||||||
|
public function __construct(string $value)
|
||||||
|
{
|
||||||
|
$this->value = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __toString(): string
|
||||||
|
{
|
||||||
|
return $this->value;
|
||||||
|
}
|
||||||
|
}
|
||||||
16
src/Type/DurationType.php
Normal file
16
src/Type/DurationType.php
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Arendsen\FluxQueryBuilder\Type;
|
||||||
|
|
||||||
|
class DurationType implements TypeInterface
|
||||||
|
{
|
||||||
|
public function __construct(string $value)
|
||||||
|
{
|
||||||
|
$this->value = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __toString(): string
|
||||||
|
{
|
||||||
|
return $this->value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
namespace Arendsen\FluxQueryBuilder\Type;
|
namespace Arendsen\FluxQueryBuilder\Type;
|
||||||
|
|
||||||
class Math implements TypeInterface
|
class MathType implements TypeInterface
|
||||||
{
|
{
|
||||||
public function __construct(string $value)
|
public function __construct(string $value)
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,7 @@ namespace Arendsen\FluxQueryBuilder\Type;
|
||||||
|
|
||||||
use Arendsen\FluxQueryBuilder\Type;
|
use Arendsen\FluxQueryBuilder\Type;
|
||||||
|
|
||||||
class Record implements TypeInterface
|
class RecordType implements TypeInterface
|
||||||
{
|
{
|
||||||
public function __construct(array $value)
|
public function __construct(array $value)
|
||||||
{
|
{
|
||||||
|
|
@ -4,7 +4,7 @@ namespace Arendsen\FluxQueryBuilder\Type;
|
||||||
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
|
||||||
class Time implements TypeInterface
|
class TimeType implements TypeInterface
|
||||||
{
|
{
|
||||||
public function __construct(DateTime $dateTime)
|
public function __construct(DateTime $dateTime)
|
||||||
{
|
{
|
||||||
|
|
@ -5,14 +5,14 @@ declare(strict_types=1);
|
||||||
namespace Tests\Functions;
|
namespace Tests\Functions;
|
||||||
|
|
||||||
use Arendsen\FluxQueryBuilder\Functions\Reduce;
|
use Arendsen\FluxQueryBuilder\Functions\Reduce;
|
||||||
use Arendsen\FluxQueryBuilder\Type\Math;
|
use Arendsen\FluxQueryBuilder\Type\MathType;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
final class ReduceFunctionTest extends TestCase
|
final class ReduceFunctionTest extends TestCase
|
||||||
{
|
{
|
||||||
public function testSimpleReduce()
|
public function testSimpleReduce()
|
||||||
{
|
{
|
||||||
$expression = new Reduce(['sum' => new Math('r._value + accumulator.sum')], ['sum' => 0]);
|
$expression = new Reduce(['sum' => new MathType('r._value + accumulator.sum')], ['sum' => 0]);
|
||||||
|
|
||||||
$query = '|> reduce(fn: (r, accumulator) => ({sum: r._value + accumulator.sum}), identity: {sum: 0}) ';
|
$query = '|> reduce(fn: (r, accumulator) => ({sum: r._value + accumulator.sum}), identity: {sum: 0}) ';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ use Exception;
|
||||||
use Arendsen\FluxQueryBuilder\Expression\KeyValue;
|
use Arendsen\FluxQueryBuilder\Expression\KeyValue;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use Arendsen\FluxQueryBuilder\QueryBuilder;
|
use Arendsen\FluxQueryBuilder\QueryBuilder;
|
||||||
use Arendsen\FluxQueryBuilder\Type\Math;
|
use Arendsen\FluxQueryBuilder\Type\MathType;
|
||||||
|
|
||||||
final class QueryBuilderTest extends TestCase
|
final class QueryBuilderTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
@ -103,7 +103,7 @@ final class QueryBuilderTest extends TestCase
|
||||||
->addFilter(KeyValue::setEqualTo('_field', 'username'))
|
->addFilter(KeyValue::setEqualTo('_field', 'username'))
|
||||||
->addMap('r with name: r.user')
|
->addMap('r with name: r.user')
|
||||||
->addGroup(['_field', 'ip'])
|
->addGroup(['_field', 'ip'])
|
||||||
->addReduce(['count' => new Math('accumulator.count + 1')], ['count' => 0])
|
->addReduce(['count' => new MathType('accumulator.count + 1')], ['count' => 0])
|
||||||
->addFilter(KeyValue::setGreaterOrEqualTo('count', 1)->andGreaterOrEqualTo('count2', 2));
|
->addFilter(KeyValue::setGreaterOrEqualTo('count', 1)->andGreaterOrEqualTo('count2', 2));
|
||||||
|
|
||||||
$expectedQuery = 'from(bucket: "test_bucket") |> range(start: time(v: 2022-08-12T17:31:00Z)) ' .
|
$expectedQuery = 'from(bucket: "test_bucket") |> range(start: time(v: 2022-08-12T17:31:00Z)) ' .
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,10 @@ namespace Tests\Type;
|
||||||
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use Arendsen\FluxQueryBuilder\Type;
|
use Arendsen\FluxQueryBuilder\Type;
|
||||||
use Arendsen\FluxQueryBuilder\Type\Record;
|
use Arendsen\FluxQueryBuilder\Type\CustomType;
|
||||||
|
use Arendsen\FluxQueryBuilder\Type\DurationType;
|
||||||
|
use Arendsen\FluxQueryBuilder\Type\MathType;
|
||||||
|
use Arendsen\FluxQueryBuilder\Type\RecordType;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
final class FactoryTypeTest extends TestCase
|
final class FactoryTypeTest extends TestCase
|
||||||
|
|
@ -60,10 +63,22 @@ final class FactoryTypeTest extends TestCase
|
||||||
['hello' => ['test' => 'bar', 'foo' => 'hi']],
|
['hello' => ['test' => 'bar', 'foo' => 'hi']],
|
||||||
'hello: [test: "bar", foo: "hi"]'
|
'hello: [test: "bar", foo: "hi"]'
|
||||||
],
|
],
|
||||||
'Record' => [
|
'RecordType' => [
|
||||||
new Record(['foo' => 'bar', 'nested' => ['hello' => 'world']]),
|
new RecordType(['foo' => 'bar', 'nested' => ['hello' => 'world']]),
|
||||||
'{foo: "bar", nested: {hello: "world"}}'
|
'{foo: "bar", nested: {hello: "world"}}'
|
||||||
],
|
],
|
||||||
|
'DurationType' => [
|
||||||
|
new DurationType('5h'),
|
||||||
|
'5h',
|
||||||
|
],
|
||||||
|
'MathType' => [
|
||||||
|
new MathType('r.count + 1'),
|
||||||
|
'r.count + 1'
|
||||||
|
],
|
||||||
|
'CustomType' => [
|
||||||
|
new CustomType('this can be anything'),
|
||||||
|
'this can be anything'
|
||||||
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue