Skip to content

Commit 52adac6

Browse files
committed
Add RangeValueInterface
1 parent 6cf8bfe commit 52adac6

9 files changed

Lines changed: 52 additions & 17 deletions

‎src/Column/AbstractMultiRangeColumn.php‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Yiisoft\Db\Exception\NotSupportedException;
88
use Yiisoft\Db\Expression\ExpressionInterface;
99
use Yiisoft\Db\Pgsql\Expression\MultiRangeValue;
10+
use Yiisoft\Db\Pgsql\Expression\RangeValueInterface;
1011
use Yiisoft\Db\Schema\Column\AbstractColumn;
1112
use Yiisoft\Db\Schema\Column\ColumnInterface;
1213

@@ -15,7 +16,7 @@
1516
use function is_string;
1617

1718
/**
18-
* @template T of ExpressionInterface
19+
* @template T of RangeValueInterface
1920
*/
2021
abstract class AbstractMultiRangeColumn extends AbstractColumn
2122
{
@@ -53,7 +54,7 @@ public function dbTypecast(mixed $value): mixed
5354
/**
5455
* @inheritDoc
5556
*
56-
* @return ?ExpressionInterface[]
57+
* @return ?RangeValueInterface[]
5758
*
5859
* @psalm-return ?T[]
5960
*/

‎src/Column/AbstractRangeColumn.php‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use InvalidArgumentException;
88
use Yiisoft\Db\Exception\NotSupportedException;
99
use Yiisoft\Db\Expression\ExpressionInterface;
10+
use Yiisoft\Db\Pgsql\Expression\RangeValueInterface;
1011
use Yiisoft\Db\Schema\Column\AbstractColumn;
1112
use Yiisoft\Db\Schema\Column\ColumnInterface;
1213

@@ -16,7 +17,7 @@
1617
use function sprintf;
1718

1819
/**
19-
* @template T of ExpressionInterface
20+
* @template T of RangeValueInterface
2021
*/
2122
abstract class AbstractRangeColumn extends AbstractColumn
2223
{
@@ -56,7 +57,7 @@ public function dbTypecast(mixed $value): mixed
5657
/**
5758
* @inheritDoc
5859
*
59-
* @return ?ExpressionInterface
60+
* @return ?RangeValueInterface
6061
*
6162
* @psalm-return ?T
6263
*/
@@ -88,6 +89,8 @@ abstract protected function getBoundColumn(): ColumnInterface;
8889
/**
8990
* @throws NotSupportedException
9091
*
92+
* @return RangeValueInterface
93+
*
9194
* @psalm-return T
9295
*/
9396
abstract protected function createRangeValue(

‎src/Expression/DateRangeValue.php‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
namespace Yiisoft\Db\Pgsql\Expression;
66

77
use DateTimeImmutable;
8-
use Yiisoft\Db\Expression\ExpressionInterface;
98

10-
final class DateRangeValue implements ExpressionInterface
9+
/**
10+
* @implements RangeValueInterface<DateTimeImmutable>
11+
*/
12+
final class DateRangeValue implements RangeValueInterface
1113
{
1214
public function __construct(
1315
public readonly ?DateTimeImmutable $lower = null,

‎src/Expression/Int4RangeValue.php‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
namespace Yiisoft\Db\Pgsql\Expression;
66

7-
use Yiisoft\Db\Expression\ExpressionInterface;
8-
9-
final class Int4RangeValue implements ExpressionInterface
7+
/**
8+
* @implements RangeValueInterface<int>
9+
*/
10+
final class Int4RangeValue implements RangeValueInterface
1011
{
1112
public function __construct(
1213
public readonly ?int $lower = null,

‎src/Expression/Int8RangeValue.php‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44

55
namespace Yiisoft\Db\Pgsql\Expression;
66

7-
use Yiisoft\Db\Expression\ExpressionInterface;
87
use InvalidArgumentException;
98

109
use const PHP_INT_MAX;
1110
use const PHP_INT_MIN;
1211

13-
final class Int8RangeValue implements ExpressionInterface
12+
/**
13+
* @implements RangeValueInterface<int|string>
14+
*/
15+
final class Int8RangeValue implements RangeValueInterface
1416
{
1517
public function __construct(
1618
public readonly int|string|null $lower = null,

‎src/Expression/NumRangeValue.php‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44

55
namespace Yiisoft\Db\Pgsql\Expression;
66

7-
use Yiisoft\Db\Expression\ExpressionInterface;
87
use RuntimeException;
98

10-
final class NumRangeValue implements ExpressionInterface
9+
/**
10+
* @implements RangeValueInterface<int|float>
11+
*/
12+
final class NumRangeValue implements RangeValueInterface
1113
{
1214
public function __construct(
1315
public readonly int|float|null $lower = null,
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Yiisoft\Db\Pgsql\Expression;
6+
7+
use Yiisoft\Db\Expression\ExpressionInterface;
8+
9+
/**
10+
* @template T
11+
*/
12+
interface RangeValueInterface extends ExpressionInterface
13+
{
14+
/**
15+
* Returns the lower and upper bounds of a range, inclusive.
16+
*
17+
* @psalm-return array{0: ?T, 1: ?T}
18+
*/
19+
public function getBounds(): array;
20+
}

‎src/Expression/TsRangeValue.php‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
namespace Yiisoft\Db\Pgsql\Expression;
66

77
use DateTimeImmutable;
8-
use Yiisoft\Db\Expression\ExpressionInterface;
98

10-
final class TsRangeValue implements ExpressionInterface
9+
/**
10+
* @implements RangeValueInterface<DateTimeImmutable>
11+
*/
12+
final class TsRangeValue implements RangeValueInterface
1113
{
1214
public function __construct(
1315
public readonly ?DateTimeImmutable $lower = null,

‎src/Expression/TsTzRangeValue.php‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
namespace Yiisoft\Db\Pgsql\Expression;
66

77
use DateTimeImmutable;
8-
use Yiisoft\Db\Expression\ExpressionInterface;
98

10-
final class TsTzRangeValue implements ExpressionInterface
9+
/**
10+
* @implements RangeValueInterface<DateTimeImmutable>
11+
*/
12+
final class TsTzRangeValue implements RangeValueInterface
1113
{
1214
public function __construct(
1315
public readonly ?DateTimeImmutable $lower = null,

0 commit comments

Comments
 (0)