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)
|
||||
* [addSort()](functions/addSort.md)
|
||||
* [addSum()](functions/addSum.md)
|
||||
* [addUnique()](functions/addUnique.md)
|
||||
* [addUnwindow()](functions/addUnwindow.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\Sort;
|
||||
use Arendsen\FluxQueryBuilder\Functions\Sum;
|
||||
use Arendsen\FluxQueryBuilder\Functions\Unique;
|
||||
use Arendsen\FluxQueryBuilder\Functions\Window;
|
||||
|
||||
trait Universe
|
||||
|
|
@ -133,6 +134,14 @@ trait Universe
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function addUnique(?string $column = null): QueryBuilderInterface
|
||||
{
|
||||
$this->addToQuery(
|
||||
new Unique($column)
|
||||
);
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function addUnWindow(): QueryBuilderInterface
|
||||
{
|
||||
$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'],
|
||||
'|> sum(column: "something") '
|
||||
],
|
||||
'addUnique' => [
|
||||
'addUnique',
|
||||
['something'],
|
||||
'|> unique(column: "something") '
|
||||
],
|
||||
'addUnwindow' => [
|
||||
'addUnwindow',
|
||||
[],
|
||||
|
|
|
|||
Loading…
Add table
editor.link_modal.header
Reference in a new issue