Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
- Chg #414: Rename `DMLQueryBuilder::insertWithReturningPks()` to `DMLQueryBuilder::insertReturningPks()` (@Tigrov)
- Enh #415: Implement `CaseExpressionBuilder` class (@Tigrov)
- Enh #420: Provide `yiisoft/db-implementation` virtual package (@vjik)
- Enh #424: Adapt to specific condition interfaces removing in `yiisoft/db` package (@vjik)
- Enh #424, #425: Adapt to conditions refactoring in `yiisoft/db` package (@vjik)

## 1.3.0 March 21, 2024

Expand Down
20 changes: 14 additions & 6 deletions src/Builder/ArrayOverlapsConditionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,24 @@
use Yiisoft\Db\Exception\InvalidConfigException;
use Yiisoft\Db\Exception\NotSupportedException;
use Yiisoft\Db\Expression\ArrayExpression;
use Yiisoft\Db\Expression\ExpressionBuilderInterface;
use Yiisoft\Db\Expression\ExpressionInterface;
use Yiisoft\Db\Expression\JsonExpression;
use Yiisoft\Db\QueryBuilder\Condition\ArrayOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\Builder\AbstractOverlapsConditionBuilder;
use Yiisoft\Db\QueryBuilder\Condition\Overlaps\ArrayOverlapsCondition;
use Yiisoft\Db\QueryBuilder\QueryBuilderInterface;

/**
* Builds expressions for {@see ArrayOverlapsCondition} for PostgreSQL Server.
*
* @extends AbstractOverlapsConditionBuilder<ArrayOverlapsCondition>
* @implements ExpressionBuilderInterface<ArrayOverlapsCondition>
*/
final class ArrayOverlapsConditionBuilder extends AbstractOverlapsConditionBuilder
final class ArrayOverlapsConditionBuilder implements ExpressionBuilderInterface
{
public function __construct(
private readonly QueryBuilderInterface $queryBuilder,
) {
}

/**
* Build SQL for {@see ArrayOverlapsCondition}.
*
Expand All @@ -33,8 +39,10 @@ final class ArrayOverlapsConditionBuilder extends AbstractOverlapsConditionBuild
*/
public function build(ExpressionInterface $expression, array &$params = []): string
{
$column = $this->prepareColumn($expression->getColumn());
$values = $expression->getValues();
$column = $expression->column instanceof ExpressionInterface
? $this->queryBuilder->buildExpression($expression->column)
: $this->queryBuilder->getQuoter()->quoteColumnName($expression->column);
$values = $expression->values;

if ($values instanceof JsonExpression) {
/** @psalm-suppress MixedArgument */
Expand Down
20 changes: 14 additions & 6 deletions src/Builder/JsonOverlapsConditionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,24 @@
use Yiisoft\Db\Exception\InvalidConfigException;
use Yiisoft\Db\Exception\NotSupportedException;
use Yiisoft\Db\Expression\ArrayExpression;
use Yiisoft\Db\Expression\ExpressionBuilderInterface;
use Yiisoft\Db\Expression\ExpressionInterface;
use Yiisoft\Db\Expression\JsonExpression;
use Yiisoft\Db\QueryBuilder\Condition\Builder\AbstractOverlapsConditionBuilder;
use Yiisoft\Db\QueryBuilder\Condition\JsonOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\Overlaps\JsonOverlapsCondition;
use Yiisoft\Db\QueryBuilder\QueryBuilderInterface;

/**
* Builds expressions for {@see JsonOverlapsCondition} for PostgreSQL Server.
*
* @extends AbstractOverlapsConditionBuilder<JsonOverlapsCondition>
* @implements ExpressionBuilderInterface<JsonOverlapsCondition>
*/
final class JsonOverlapsConditionBuilder extends AbstractOverlapsConditionBuilder
final class JsonOverlapsConditionBuilder implements ExpressionBuilderInterface
{
public function __construct(
private readonly QueryBuilderInterface $queryBuilder,
) {
}

/**
* Build SQL for {@see JsonOverlapsCondition}.
*
Expand All @@ -33,8 +39,10 @@ final class JsonOverlapsConditionBuilder extends AbstractOverlapsConditionBuilde
*/
public function build(ExpressionInterface $expression, array &$params = []): string
{
$column = $this->prepareColumn($expression->getColumn());
$values = $expression->getValues();
$column = $expression->column instanceof ExpressionInterface
? $this->queryBuilder->buildExpression($expression->column)
: $this->queryBuilder->getQuoter()->quoteColumnName($expression->column);
$values = $expression->values;

if ($values instanceof JsonExpression) {
/** @psalm-suppress MixedArgument */
Expand Down
4 changes: 2 additions & 2 deletions src/Builder/LikeConditionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
/**
* Build an object of {@see LikeCondition} into SQL expressions for PostgreSQL Server.
*/
final class LikeConditionBuilder extends \Yiisoft\Db\QueryBuilder\Condition\Builder\LikeConditionBuilder
final class LikeConditionBuilder extends \Yiisoft\Db\QueryBuilder\Condition\LikeConditionBuilder
{
protected function parseOperator(LikeCondition $expression): array
{
[$andor, $not, $operator] = parent::parseOperator($expression);

$operator = match ($expression->getCaseSensitive()) {
$operator = match ($expression->caseSensitive) {
true => 'LIKE',
false => 'ILIKE',
default => $operator,
Expand Down
4 changes: 2 additions & 2 deletions src/DQLQueryBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
use Yiisoft\Db\Pgsql\Builder\StructuredExpressionBuilder;
use Yiisoft\Db\Pgsql\Builder\JsonExpressionBuilder;
use Yiisoft\Db\QueryBuilder\AbstractDQLQueryBuilder;
use Yiisoft\Db\QueryBuilder\Condition\ArrayOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\JsonOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\LikeCondition;
use Yiisoft\Db\QueryBuilder\Condition\Overlaps\ArrayOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\Overlaps\JsonOverlapsCondition;

/**
* Implements a DQL (Data Query Language) SQL statements for PostgreSQL Server.
Expand Down
4 changes: 2 additions & 2 deletions tests/QueryBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
use Yiisoft\Db\Pgsql\Tests\Support\TestTrait;
use Yiisoft\Db\Query\Query;
use Yiisoft\Db\Query\QueryInterface;
use Yiisoft\Db\QueryBuilder\Condition\ArrayOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\JsonOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\Overlaps\ArrayOverlapsCondition;
use Yiisoft\Db\QueryBuilder\Condition\Overlaps\JsonOverlapsCondition;
use Yiisoft\Db\Schema\Column\ColumnInterface;
use Yiisoft\Db\Tests\Common\CommonQueryBuilderTest;

Expand Down
Loading