Add addUnique function
Signed-off-by: David Arendsen <darendsen@gamepoint.com>
This commit is contained in:
parent
fc99922700
commit
483e67a2e8
6 changed files with 110 additions and 0 deletions
|
|
@ -24,6 +24,7 @@ or [addRangeInBetween()](functions/addRangeInBetween.md)
|
||||||
* [addReduce()](functions/addReduce.md)
|
* [addReduce()](functions/addReduce.md)
|
||||||
* [addSort()](functions/addSort.md)
|
* [addSort()](functions/addSort.md)
|
||||||
* [addSum()](functions/addSum.md)
|
* [addSum()](functions/addSum.md)
|
||||||
|
* [addUnique()](functions/addUnique.md)
|
||||||
* [addUnwindow()](functions/addUnwindow.md)
|
* [addUnwindow()](functions/addUnwindow.md)
|
||||||
* [addWindow()](functions/addWindow.md)
|
* [addWindow()](functions/addWindow.md)
|
||||||
|
|
||||||
|
|
|
||||||
39
docs/functions/addUnique.md
Normal file
39
docs/functions/addUnique.md
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Flux Query Builder Docs
|
||||||
|
|
||||||
|
## Functions » addUnique()
|
||||||
|
|
||||||
|
### Parameters:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Required</th>
|
||||||
|
<th>Data type</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>column</td>
|
||||||
|
<td>No</td>
|
||||||
|
<td>string</td>
|
||||||
|
<td>Column to search for unique values. Default is _value.</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```php
|
||||||
|
->addUnique("_value")
|
||||||
|
```
|
||||||
|
|
||||||
|
This will result in the following Flux function part:
|
||||||
|
|
||||||
|
```
|
||||||
|
|> unique(column: "_value")
|
||||||
|
```
|
||||||
|
|
||||||
|
### Extra resources
|
||||||
|
|
||||||
|
* [Flux documentation](https://docs.influxdata.com/flux/v0.x/stdlib/universe/unique/)
|
||||||
|
|
@ -17,6 +17,7 @@ use Arendsen\FluxQueryBuilder\Functions\Min;
|
||||||
use Arendsen\FluxQueryBuilder\Functions\Reduce;
|
use Arendsen\FluxQueryBuilder\Functions\Reduce;
|
||||||
use Arendsen\FluxQueryBuilder\Functions\Sort;
|
use Arendsen\FluxQueryBuilder\Functions\Sort;
|
||||||
use Arendsen\FluxQueryBuilder\Functions\Sum;
|
use Arendsen\FluxQueryBuilder\Functions\Sum;
|
||||||
|
use Arendsen\FluxQueryBuilder\Functions\Unique;
|
||||||
use Arendsen\FluxQueryBuilder\Functions\Window;
|
use Arendsen\FluxQueryBuilder\Functions\Window;
|
||||||
|
|
||||||
trait Universe
|
trait Universe
|
||||||
|
|
@ -133,6 +134,14 @@ trait Universe
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function addUnique(?string $column = null): QueryBuilderInterface
|
||||||
|
{
|
||||||
|
$this->addToQuery(
|
||||||
|
new Unique($column)
|
||||||
|
);
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function addUnWindow(): QueryBuilderInterface
|
public function addUnWindow(): QueryBuilderInterface
|
||||||
{
|
{
|
||||||
$this->addToQuery(
|
$this->addToQuery(
|
||||||
|
|
|
||||||
27
src/Functions/Unique.php
Normal file
27
src/Functions/Unique.php
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Arendsen\FluxQueryBuilder\Functions;
|
||||||
|
|
||||||
|
use Arendsen\FluxQueryBuilder\Type;
|
||||||
|
|
||||||
|
class Unique extends Base
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var string|null $column
|
||||||
|
*/
|
||||||
|
private $column;
|
||||||
|
|
||||||
|
public function __construct(?string $column = null)
|
||||||
|
{
|
||||||
|
$this->column = $column;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __toString()
|
||||||
|
{
|
||||||
|
$params = new Type(array_filter([
|
||||||
|
'column' => $this->column
|
||||||
|
]));
|
||||||
|
|
||||||
|
return '|> unique(' . $params . ') ';
|
||||||
|
}
|
||||||
|
}
|
||||||
29
tests/Functions/UniqueFunctionTest.php
Normal file
29
tests/Functions/UniqueFunctionTest.php
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Tests\Functions;
|
||||||
|
|
||||||
|
use Arendsen\FluxQueryBuilder\Functions\Unique;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
final class UniqueunctionTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testSimpleUnique()
|
||||||
|
{
|
||||||
|
$expression = new Unique();
|
||||||
|
|
||||||
|
$query = '|> unique() ';
|
||||||
|
|
||||||
|
$this->assertEquals($query, $expression->__toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUniqueWithColumn()
|
||||||
|
{
|
||||||
|
$expression = new Unique('something');
|
||||||
|
|
||||||
|
$query = '|> unique(column: "something") ';
|
||||||
|
|
||||||
|
$this->assertEquals($query, $expression->__toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -126,6 +126,11 @@ final class QueryBuilderTest extends TestCase
|
||||||
['something'],
|
['something'],
|
||||||
'|> sum(column: "something") '
|
'|> sum(column: "something") '
|
||||||
],
|
],
|
||||||
|
'addUnique' => [
|
||||||
|
'addUnique',
|
||||||
|
['something'],
|
||||||
|
'|> unique(column: "something") '
|
||||||
|
],
|
||||||
'addUnwindow' => [
|
'addUnwindow' => [
|
||||||
'addUnwindow',
|
'addUnwindow',
|
||||||
[],
|
[],
|
||||||
|
|
|
||||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue