From ec30cb6950c862401796ff4ab2f5e6585d1dfdb3 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Wed, 26 Nov 2025 00:06:14 +0300 Subject: [PATCH 1/5] Add `ColumnDefinitionParser` class --- CHANGELOG.md | 1 + src/Column/ColumnDefinitionParser.php | 31 +++++++++++++++++++++++++++ src/Column/ColumnFactory.php | 7 ++++++ tests/ColumnDefinitionParserTest.php | 18 ++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 src/Column/ColumnDefinitionParser.php create mode 100644 tests/ColumnDefinitionParserTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bc33563..f37dd3e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,7 @@ - Enh #406: Adapt to `DQLQueryBuilderInterface::buildWithQueries()` signature changes in `yiisoft/db` package (@vjik) - Bug #408, #409: Add `identity` support in `Schema::loadResultColumn()` (@vjik) - Chg #413: Throw exception on "unsigned" column usage (@vjik) +- Chg #416: Add `ColumnDefinitionParser` class (@vjik) ## 1.2.0 March 21, 2024 diff --git a/src/Column/ColumnDefinitionParser.php b/src/Column/ColumnDefinitionParser.php new file mode 100644 index 00000000..5c20f250 --- /dev/null +++ b/src/Column/ColumnDefinitionParser.php @@ -0,0 +1,31 @@ + $this->parseSizeInfo($params), + default => [], + }; + } +} diff --git a/src/Column/ColumnFactory.php b/src/Column/ColumnFactory.php index 698e0eb5..fca955fb 100644 --- a/src/Column/ColumnFactory.php +++ b/src/Column/ColumnFactory.php @@ -10,6 +10,8 @@ use Yiisoft\Db\Schema\Column\AbstractColumnFactory; use Yiisoft\Db\Schema\Column\ColumnInterface; +use Yiisoft\Db\Syntax\ColumnDefinitionParserInterface; + use function hex2bin; use function str_starts_with; use function substr; @@ -117,4 +119,9 @@ protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnInte return parent::normalizeNotNullDefaultValue($defaultValue, $column); } + + protected function columnDefinitionParser(): ColumnDefinitionParserInterface + { + return new ColumnDefinitionParser(); + } } diff --git a/tests/ColumnDefinitionParserTest.php b/tests/ColumnDefinitionParserTest.php new file mode 100644 index 00000000..5a0b80f3 --- /dev/null +++ b/tests/ColumnDefinitionParserTest.php @@ -0,0 +1,18 @@ + Date: Tue, 25 Nov 2025 21:14:42 +0000 Subject: [PATCH 2/5] Apply PHP CS Fixer and Rector changes (CI) --- src/Column/ColumnFactory.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Column/ColumnFactory.php b/src/Column/ColumnFactory.php index fca955fb..f08eb06e 100644 --- a/src/Column/ColumnFactory.php +++ b/src/Column/ColumnFactory.php @@ -9,7 +9,6 @@ use Yiisoft\Db\Expression\Expression; use Yiisoft\Db\Schema\Column\AbstractColumnFactory; use Yiisoft\Db\Schema\Column\ColumnInterface; - use Yiisoft\Db\Syntax\ColumnDefinitionParserInterface; use function hex2bin; From 155bc81c62970db5a5cede08f0ccb8dc44fe2ed3 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Wed, 26 Nov 2025 00:27:05 +0300 Subject: [PATCH 3/5] fix ci --- .github/workflows/mutation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mutation.yml b/.github/workflows/mutation.yml index 2aacbd3e..547990de 100644 --- a/.github/workflows/mutation.yml +++ b/.github/workflows/mutation.yml @@ -78,6 +78,6 @@ jobs: - name: Run infection. run: | - vendor/bin/roave-infection-static-analysis-plugin --threads=2 --ignore-msi-with-no-mutations --only-covered + vendor/bin/roave-infection-static-analysis-plugin --threads=2 --ignore-msi-with-no-mutations env: STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }} From 32294b983e5175f0359e24a8ff7b93b35a7ab84d Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Wed, 26 Nov 2025 00:33:18 +0300 Subject: [PATCH 4/5] fix --- tests/ColumnDefinitionParserTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/ColumnDefinitionParserTest.php b/tests/ColumnDefinitionParserTest.php index 5a0b80f3..1751a8b8 100644 --- a/tests/ColumnDefinitionParserTest.php +++ b/tests/ColumnDefinitionParserTest.php @@ -2,6 +2,8 @@ declare(strict_types=1); +namespace Yiisoft\Db\Mssql\Tests; + use Yiisoft\Db\Mssql\Column\ColumnDefinitionParser; use Yiisoft\Db\Syntax\ColumnDefinitionParserInterface; use Yiisoft\Db\Tests\Common\CommonColumnDefinitionParserTest; From 3c101983746443f417f3c7e2149fd493e44b2911 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Wed, 26 Nov 2025 00:34:51 +0300 Subject: [PATCH 5/5] improve --- src/Column/ColumnDefinitionParser.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Column/ColumnDefinitionParser.php b/src/Column/ColumnDefinitionParser.php index 5c20f250..5e8da0a6 100644 --- a/src/Column/ColumnDefinitionParser.php +++ b/src/Column/ColumnDefinitionParser.php @@ -11,6 +11,7 @@ final class ColumnDefinitionParser extends AbstractColumnDefinitionParser protected function parseTypeParams(string $type, string $params): array { return match ($type) { + 'bigint', 'binary', 'char', 'datetime2', @@ -21,8 +22,10 @@ protected function parseTypeParams(string $type, string $params): array 'nchar', 'numeric', 'nvarchar', + 'smallint', 'string', 'time', + 'tinyint', 'varbinary', 'varchar' => $this->parseSizeInfo($params), default => [],