From 6418283e48820db193067efb0ef6dc0ce0f940dd Mon Sep 17 00:00:00 2001 From: Tigrov Date: Mon, 10 Feb 2025 10:25:27 +0700 Subject: [PATCH 1/4] Use constants from `ReferentialAction` class --- src/Column/ColumnDefinitionBuilder.php | 5 +++-- tests/Provider/QueryBuilderProvider.php | 7 +++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Column/ColumnDefinitionBuilder.php b/src/Column/ColumnDefinitionBuilder.php index 93384bb2..7228242c 100644 --- a/src/Column/ColumnDefinitionBuilder.php +++ b/src/Column/ColumnDefinitionBuilder.php @@ -5,6 +5,7 @@ namespace Yiisoft\Db\Oracle\Column; use Yiisoft\Db\Constant\ColumnType; +use Yiisoft\Db\Constant\ReferentialAction; use Yiisoft\Db\QueryBuilder\AbstractColumnDefinitionBuilder; use Yiisoft\Db\Schema\Column\ColumnInterface; @@ -51,8 +52,8 @@ public function build(ColumnInterface $column): string protected function buildOnDelete(string $onDelete): string { return match ($onDelete = strtoupper($onDelete)) { - 'CASCADE', - 'SET NULL' => " ON DELETE $onDelete", + ReferentialAction::CASCADE, + ReferentialAction::SET_NULL => " ON DELETE $onDelete", default => '', }; } diff --git a/tests/Provider/QueryBuilderProvider.php b/tests/Provider/QueryBuilderProvider.php index 9f4e2290..d46b444f 100644 --- a/tests/Provider/QueryBuilderProvider.php +++ b/tests/Provider/QueryBuilderProvider.php @@ -7,6 +7,7 @@ use Exception; use Yiisoft\Db\Constant\ColumnType; use Yiisoft\Db\Constant\PseudoType; +use Yiisoft\Db\Constant\ReferentialAction; use Yiisoft\Db\Constraint\ForeignKeyConstraint; use Yiisoft\Db\Expression\Expression; use Yiisoft\Db\Oracle\Column\ColumnBuilder; @@ -243,10 +244,12 @@ public static function buildColumnDefinition(): array $referenceRestrict = new ForeignKeyConstraint(); $referenceRestrict->foreignColumnNames(['id']); $referenceRestrict->foreignTableName('ref_table'); - $referenceRestrict->onDelete('restrict'); + $referenceRestrict->onDelete(ReferentialAction::RESTRICT); + $referenceRestrict->onUpdate(ReferentialAction::RESTRICT); $referenceSetNull = clone $referenceRestrict; - $referenceSetNull->onDelete('set null'); + $referenceSetNull->onDelete(ReferentialAction::SET_NULL); + $referenceRestrict->onUpdate(ReferentialAction::SET_NULL); $values = parent::buildColumnDefinition(); From 829f6a6ff21a03e1c0aaaabc7cc91a268777922b Mon Sep 17 00:00:00 2001 From: Tigrov Date: Mon, 10 Feb 2025 12:45:27 +0700 Subject: [PATCH 2/4] Fix psalm --- src/Schema.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Schema.php b/src/Schema.php index b7a0e7c9..ef88b5b3 100644 --- a/src/Schema.php +++ b/src/Schema.php @@ -58,8 +58,7 @@ * foreign_table_schema: string|null, * foreign_table_name: string|null, * foreign_column_name: string|null, - * on_update: string, - * on_delete: string, + * on_delete: ReferentialAction::*, * check_expr: string * } * > From f4b361f700506f6077d7b4619ccf91429b41aca2 Mon Sep 17 00:00:00 2001 From: Tigrov Date: Mon, 10 Feb 2025 12:48:03 +0700 Subject: [PATCH 3/4] Fix psalm --- src/Schema.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Schema.php b/src/Schema.php index ef88b5b3..20b2c9e4 100644 --- a/src/Schema.php +++ b/src/Schema.php @@ -7,6 +7,7 @@ use Throwable; use Yiisoft\Db\Cache\SchemaCache; use Yiisoft\Db\Connection\ConnectionInterface; +use Yiisoft\Db\Constant\ReferentialAction; use Yiisoft\Db\Constraint\CheckConstraint; use Yiisoft\Db\Constraint\Constraint; use Yiisoft\Db\Constraint\ForeignKeyConstraint; From 60c526dd8f12a74121338510d0f73b3f86121d97 Mon Sep 17 00:00:00 2001 From: Tigrov Date: Mon, 10 Feb 2025 13:01:03 +0700 Subject: [PATCH 4/4] Update CHANGELOG.md [skip ci] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ae088bb..5bbeac3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ - Enh #279: Separate column type constants (@Tigrov) - New #280, #291: Realize `ColumnBuilder` class (@Tigrov) - Enh #281: Update according changes in `ColumnSchemaInterface` (@Tigrov) -- New #282, #291, #299: Add `ColumnDefinitionBuilder` class (@Tigrov) +- New #282, #291, #299, #302: Add `ColumnDefinitionBuilder` class (@Tigrov) - Bug #285: Fix `DMLQueryBuilder::insertBatch()` method (@Tigrov) - Enh #283: Refactor `Dsn` class (@Tigrov) - Enh #286: Use constructor to create columns and initialize properties (@Tigrov)