Add addBottom function

Signed-off-by: David Arendsen <darendsen@gamepoint.com>
This commit is contained in:
David Arendsen 2023-03-08 19:20:26 +01:00
commit 9e2bde4217
5 changed files with 91 additions and 0 deletions

View file

@ -4,6 +4,7 @@ namespace Arendsen\FluxQueryBuilder\Builder;
use Arendsen\FluxQueryBuilder\Builder\QueryBuilderInterface;
use Arendsen\FluxQueryBuilder\Functions\AggregateWindow;
use Arendsen\FluxQueryBuilder\Functions\Bottom;
use Arendsen\FluxQueryBuilder\Functions\Count;
use Arendsen\FluxQueryBuilder\Functions\Duplicate;
use Arendsen\FluxQueryBuilder\Functions\First;
@ -30,6 +31,12 @@ trait Universe
return $this;
}
public function addBottom(int $n, array $columns = []): QueryBuilderInterface
{
$this->addToQuery(new Bottom($n, $columns));
return $this;
}
public function addCount(?string $column = null): QueryBuilderInterface
{
$this->addToQuery(

33
src/Functions/Bottom.php Normal file
View file

@ -0,0 +1,33 @@
<?php
namespace Arendsen\FluxQueryBuilder\Functions;
use Arendsen\FluxQueryBuilder\Type\ArrayType;
class Bottom extends Base
{
/**
* @var int $n
*/
private $n;
/**
* @var array $columns
*/
private $columns;
public function __construct($n, array $columns = [])
{
$this->n = $n;
$this->columns = $columns;
}
public function __toString()
{
$input = new ArrayType(array_filter([
'n' => $this->n,
'columns' => $this->columns ?: null,
]));
return '|> bottom(' . $input . ') ';
}
}