diff --git a/CHANGELOG.md b/CHANGELOG.md index d5a427a7..6694d907 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, #425: Adapt to conditions refactoring in `yiisoft/db` package (@vjik) +- Enh #424, #425, #428: 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/ArrayOverlapsBuilder.php similarity index 78% rename from src/Builder/ArrayOverlapsConditionBuilder.php rename to src/Builder/ArrayOverlapsBuilder.php index 9738687d..b44a9560 100644 --- a/src/Builder/ArrayOverlapsConditionBuilder.php +++ b/src/Builder/ArrayOverlapsBuilder.php @@ -12,15 +12,15 @@ 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\ArrayOverlaps; use Yiisoft\Db\QueryBuilder\QueryBuilderInterface; /** - * Builds expressions for {@see ArrayOverlapsCondition} for PostgreSQL Server. + * Builds expressions for {@see ArrayOverlaps} for PostgreSQL Server. * - * @implements ExpressionBuilderInterface + * @implements ExpressionBuilderInterface */ -final class ArrayOverlapsConditionBuilder implements ExpressionBuilderInterface +final class ArrayOverlapsBuilder implements ExpressionBuilderInterface { public function __construct( private readonly QueryBuilderInterface $queryBuilder, @@ -28,9 +28,9 @@ public function __construct( } /** - * Build SQL for {@see ArrayOverlapsCondition}. + * Build SQL for {@see ArrayOverlaps}. * - * @param ArrayOverlapsCondition $expression The {@see ArrayOverlapsCondition} to be built. + * @param ArrayOverlaps $expression The {@see ArrayOverlaps} to be built. * * @throws Exception * @throws InvalidArgumentException diff --git a/src/Builder/JsonOverlapsConditionBuilder.php b/src/Builder/JsonOverlapsBuilder.php similarity index 78% rename from src/Builder/JsonOverlapsConditionBuilder.php rename to src/Builder/JsonOverlapsBuilder.php index 9ce428bd..68c4677d 100644 --- a/src/Builder/JsonOverlapsConditionBuilder.php +++ b/src/Builder/JsonOverlapsBuilder.php @@ -12,15 +12,15 @@ use Yiisoft\Db\Expression\ExpressionBuilderInterface; use Yiisoft\Db\Expression\ExpressionInterface; use Yiisoft\Db\Expression\JsonExpression; -use Yiisoft\Db\QueryBuilder\Condition\JsonOverlapsCondition; +use Yiisoft\Db\QueryBuilder\Condition\JsonOverlaps; use Yiisoft\Db\QueryBuilder\QueryBuilderInterface; /** - * Builds expressions for {@see JsonOverlapsCondition} for PostgreSQL Server. + * Builds expressions for {@see JsonOverlaps} for PostgreSQL Server. * - * @implements ExpressionBuilderInterface + * @implements ExpressionBuilderInterface */ -final class JsonOverlapsConditionBuilder implements ExpressionBuilderInterface +final class JsonOverlapsBuilder implements ExpressionBuilderInterface { public function __construct( private readonly QueryBuilderInterface $queryBuilder, @@ -28,9 +28,9 @@ public function __construct( } /** - * Build SQL for {@see JsonOverlapsCondition}. + * Build SQL for {@see JsonOverlaps}. * - * @param JsonOverlapsCondition $expression The {@see JsonOverlapsCondition} to be built. + * @param JsonOverlaps $expression The {@see JsonOverlaps} to be built. * * @throws Exception * @throws InvalidArgumentException diff --git a/src/Builder/LikeConditionBuilder.php b/src/Builder/LikeBuilder.php similarity index 54% rename from src/Builder/LikeConditionBuilder.php rename to src/Builder/LikeBuilder.php index 26251255..850cfac3 100644 --- a/src/Builder/LikeConditionBuilder.php +++ b/src/Builder/LikeBuilder.php @@ -4,14 +4,14 @@ namespace Yiisoft\Db\Pgsql\Builder; -use Yiisoft\Db\QueryBuilder\Condition\LikeCondition; +use Yiisoft\Db\QueryBuilder\Condition\Like; /** - * Build an object of {@see LikeCondition} into SQL expressions for PostgreSQL Server. + * Build an object of {@see Like} into SQL expressions for PostgreSQL Server. */ -final class LikeConditionBuilder extends \Yiisoft\Db\QueryBuilder\Condition\Builder\LikeConditionBuilder +final class LikeBuilder extends \Yiisoft\Db\QueryBuilder\Condition\Builder\LikeBuilder { - protected function parseOperator(LikeCondition $expression): array + protected function parseOperator(Like $expression): array { [$andor, $not, $operator] = parent::parseOperator($expression); diff --git a/src/DQLQueryBuilder.php b/src/DQLQueryBuilder.php index 54d37ab4..15bc80be 100644 --- a/src/DQLQueryBuilder.php +++ b/src/DQLQueryBuilder.php @@ -9,16 +9,16 @@ use Yiisoft\Db\Expression\JsonExpression; use Yiisoft\Db\Expression\StructuredExpression; use Yiisoft\Db\Pgsql\Builder\ArrayExpressionBuilder; -use Yiisoft\Db\Pgsql\Builder\ArrayOverlapsConditionBuilder; +use Yiisoft\Db\Pgsql\Builder\ArrayOverlapsBuilder; use Yiisoft\Db\Pgsql\Builder\CaseExpressionBuilder; -use Yiisoft\Db\Pgsql\Builder\JsonOverlapsConditionBuilder; -use Yiisoft\Db\Pgsql\Builder\LikeConditionBuilder; +use Yiisoft\Db\Pgsql\Builder\JsonOverlapsBuilder; +use Yiisoft\Db\Pgsql\Builder\LikeBuilder; 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\Like; +use Yiisoft\Db\QueryBuilder\Condition\ArrayOverlaps; +use Yiisoft\Db\QueryBuilder\Condition\JsonOverlaps; /** * Implements a DQL (Data Query Language) SQL statements for PostgreSQL Server. @@ -36,10 +36,10 @@ protected function defaultConditionClasses(): array { return [ ...parent::defaultConditionClasses(), - 'ILIKE' => LikeCondition::class, - 'NOT ILIKE' => LikeCondition::class, - 'OR ILIKE' => LikeCondition::class, - 'OR NOT ILIKE' => LikeCondition::class, + 'ILIKE' => Like::class, + 'NOT ILIKE' => Like::class, + 'OR ILIKE' => Like::class, + 'OR NOT ILIKE' => Like::class, ]; } @@ -48,11 +48,11 @@ protected function defaultExpressionBuilders(): array return [ ...parent::defaultExpressionBuilders(), ArrayExpression::class => ArrayExpressionBuilder::class, - ArrayOverlapsCondition::class => ArrayOverlapsConditionBuilder::class, + ArrayOverlaps::class => ArrayOverlapsBuilder::class, JsonExpression::class => JsonExpressionBuilder::class, - JsonOverlapsCondition::class => JsonOverlapsConditionBuilder::class, + JsonOverlaps::class => JsonOverlapsBuilder::class, StructuredExpression::class => StructuredExpressionBuilder::class, - LikeCondition::class => LikeConditionBuilder::class, + Like::class => LikeBuilder::class, CaseExpression::class => CaseExpressionBuilder::class, ]; } diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index 1a573a41..094a74be 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -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\ArrayOverlaps; +use Yiisoft\Db\QueryBuilder\Condition\JsonOverlaps; use Yiisoft\Db\Schema\Column\ColumnInterface; use Yiisoft\Db\Tests\Common\CommonQueryBuilderTest; @@ -456,20 +456,20 @@ public function testSelectScalar(array|bool|float|int|string $columns, string $e parent::testSelectScalar($columns, $expected); } - public function testArrayOverlapsConditionBuilder(): void + public function testArrayOverlapsBuilder(): void { $db = $this->getConnection(); $qb = $db->getQueryBuilder(); $params = []; - $sql = $qb->buildExpression(new ArrayOverlapsCondition('column', [1, 2, 3]), $params); + $sql = $qb->buildExpression(new ArrayOverlaps('column', [1, 2, 3]), $params); $this->assertSame('"column"::text[] && ARRAY[1,2,3]::text[]', $sql); $this->assertSame([], $params); // Test column as Expression $params = []; - $sql = $qb->buildExpression(new ArrayOverlapsCondition(new Expression('column'), [1, 2, 3]), $params); + $sql = $qb->buildExpression(new ArrayOverlaps(new Expression('column'), [1, 2, 3]), $params); $this->assertSame('column::text[] && ARRAY[1,2,3]::text[]', $sql); $this->assertSame([], $params); @@ -477,13 +477,13 @@ public function testArrayOverlapsConditionBuilder(): void $db->close(); } - public function testJsonOverlapsConditionBuilder(): void + public function testJsonOverlapsBuilder(): void { $db = $this->getConnection(); $qb = $db->getQueryBuilder(); $params = []; - $sql = $qb->buildExpression(new JsonOverlapsCondition('column', [1, 2, 3]), $params); + $sql = $qb->buildExpression(new JsonOverlaps('column', [1, 2, 3]), $params); $this->assertSame( 'ARRAY(SELECT jsonb_array_elements_text("column"::jsonb)) && ARRAY[1,2,3]::text[]', @@ -502,21 +502,21 @@ public function testOverlapsCondition(iterable|ExpressionInterface $values, int $count = $query ->from('array_and_json_types') - ->where(new ArrayOverlapsCondition('intarray_col', $values)) + ->where(new ArrayOverlaps('intarray_col', $values)) ->count(); $this->assertSame($expectedCount, $count); $count = $query ->from('array_and_json_types') - ->setWhere(new JsonOverlapsCondition('json_col', $values)) + ->setWhere(new JsonOverlaps('json_col', $values)) ->count(); $this->assertSame($expectedCount, $count); $count = $query ->from('array_and_json_types') - ->setWhere(new JsonOverlapsCondition('jsonb_col', $values)) + ->setWhere(new JsonOverlaps('jsonb_col', $values)) ->count(); $this->assertSame($expectedCount, $count);