diff --git a/CHANGELOG.md b/CHANGELOG.md index df85c8d1..79972752 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/src/Builder/ArrayOverlapsConditionBuilder.php b/src/Builder/ArrayOverlapsConditionBuilder.php index a0d10c51..9738687d 100644 --- a/src/Builder/ArrayOverlapsConditionBuilder.php +++ b/src/Builder/ArrayOverlapsConditionBuilder.php @@ -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\QueryBuilderInterface; /** * Builds expressions for {@see ArrayOverlapsCondition} for PostgreSQL Server. * - * @extends AbstractOverlapsConditionBuilder + * @implements ExpressionBuilderInterface */ -final class ArrayOverlapsConditionBuilder extends AbstractOverlapsConditionBuilder +final class ArrayOverlapsConditionBuilder implements ExpressionBuilderInterface { + public function __construct( + private readonly QueryBuilderInterface $queryBuilder, + ) { + } + /** * Build SQL for {@see ArrayOverlapsCondition}. * @@ -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 */ diff --git a/src/Builder/JsonOverlapsConditionBuilder.php b/src/Builder/JsonOverlapsConditionBuilder.php index 60180eb6..9ce428bd 100644 --- a/src/Builder/JsonOverlapsConditionBuilder.php +++ b/src/Builder/JsonOverlapsConditionBuilder.php @@ -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\QueryBuilderInterface; /** * Builds expressions for {@see JsonOverlapsCondition} for PostgreSQL Server. * - * @extends AbstractOverlapsConditionBuilder + * @implements ExpressionBuilderInterface */ -final class JsonOverlapsConditionBuilder extends AbstractOverlapsConditionBuilder +final class JsonOverlapsConditionBuilder implements ExpressionBuilderInterface { + public function __construct( + private readonly QueryBuilderInterface $queryBuilder, + ) { + } + /** * Build SQL for {@see JsonOverlapsCondition}. * @@ -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 */ diff --git a/src/Builder/LikeConditionBuilder.php b/src/Builder/LikeConditionBuilder.php index cd4353fa..26251255 100644 --- a/src/Builder/LikeConditionBuilder.php +++ b/src/Builder/LikeConditionBuilder.php @@ -15,7 +15,7 @@ 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, diff --git a/src/DQLQueryBuilder.php b/src/DQLQueryBuilder.php index 2b37f166..54d37ab4 100644 --- a/src/DQLQueryBuilder.php +++ b/src/DQLQueryBuilder.php @@ -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\LikeCondition; use Yiisoft\Db\QueryBuilder\Condition\ArrayOverlapsCondition; use Yiisoft\Db\QueryBuilder\Condition\JsonOverlapsCondition; -use Yiisoft\Db\QueryBuilder\Condition\LikeCondition; /** * Implements a DQL (Data Query Language) SQL statements for PostgreSQL Server.