Rename types to Type suffix

Signed-off-by: davidarendsen <davidarendsen@hey.com>
This commit is contained in:
davidarendsen 2022-08-16 15:49:06 +00:00
commit 923cb7dcb7
12 changed files with 63 additions and 41 deletions

View file

@ -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);
}
}

View file

@ -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) . ') ';
} }
} }

View file

@ -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':

View file

@ -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
View 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
View 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;
}
}

View file

@ -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)
{ {

View file

@ -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)
{ {

View file

@ -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)
{ {

View file

@ -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}) ';

View file

@ -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)) ' .

View file

@ -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'
],
]; ];
} }
} }