diff --git a/src/lib/ColumnToCode.php b/src/lib/ColumnToCode.php index fdbdfc72..a41567cf 100644 --- a/src/lib/ColumnToCode.php +++ b/src/lib/ColumnToCode.php @@ -165,22 +165,16 @@ public function getCode(bool $quoted = false):string array_unshift($parts, '$this'); return implode('->', array_filter(array_map('trim', $parts))); } - if ($this->rawParts['default'] === null) { - $default = ''; - } elseif (ApiGenerator::isPostgres() && $this->isEnum()) { - $default = - $this->rawParts['default'] !== null ? ' DEFAULT ' . trim($this->rawParts['default']) : ''; - } else { - $default = $this->rawParts['default'] !== null ? ' DEFAULT ' . trim($this->rawParts['default']) : ''; + + if (ApiGenerator::isPostgres() && $this->alterByXDbType) { + return $quoted ? VarDumper::export($this->rawParts['type']) : $this->rawParts['type']; } + $default = $this->rawParts['default'] !== null ? ' DEFAULT ' . trim($this->rawParts['default']) : ''; $code = $this->rawParts['type'] . ' ' . $this->rawParts['nullable'] . $default; if ((ApiGenerator::isMysql() || ApiGenerator::isMariaDb()) && $this->rawParts['position']) { $code .= ' ' . $this->rawParts['position']; } - if (ApiGenerator::isPostgres() && $this->alterByXDbType) { - return $quoted ? VarDumper::export($this->rawParts['type']) : $this->rawParts['type']; - } return $quoted ? VarDumper::export($code) : $code; } diff --git a/src/lib/migrations/MysqlMigrationBuilder.php b/src/lib/migrations/MysqlMigrationBuilder.php index 2a3f9642..8081d8e5 100644 --- a/src/lib/migrations/MysqlMigrationBuilder.php +++ b/src/lib/migrations/MysqlMigrationBuilder.php @@ -34,9 +34,6 @@ protected function buildColumnChanges(ColumnSchema $current, ColumnSchema $desir foreach ($changed as $attr) { $newColumn->$attr = $desired->$attr; } - if (static::isEnum($newColumn)) { - $newColumn->dbType = 'enum'; // TODO this is concretely not correct - } $this->migration->addUpCode($this->recordBuilder->alterColumn($this->model->getTableAlias(), $newColumn, $positionDesired)) ->addDownCode($this->recordBuilder->alterColumn($this->model->getTableAlias(), $current, $positionCurrent)); } @@ -127,13 +124,12 @@ protected function findTableIndexes():array public static function getColumnSchemaBuilderClass(): string { - if (ApiGenerator::isMysql()) { - return \yii\db\mysql\ColumnSchemaBuilder::class; - } elseif (ApiGenerator::isMariaDb()) { + if (ApiGenerator::isMariaDb()) { return \SamIT\Yii2\MariaDb\ColumnSchemaBuilder::class; } else { throw new \Exception('Unknown database'); } + return \yii\db\mysql\ColumnSchemaBuilder::class; } public function modifyCurrent(ColumnSchema $current): void diff --git a/tests/unit/EnumTest.php b/tests/unit/EnumTest.php index 8b48e249..79797d38 100644 --- a/tests/unit/EnumTest.php +++ b/tests/unit/EnumTest.php @@ -168,7 +168,6 @@ public function testChangeToAndFromEnum() // edit enum to string and vice versa $this->deleteTables(); } - // TODO ENH enum change is more work than just changing the eunm values. And for PgSQL it is even more // public function testEnumValuesChange() // { // $this->deleteTables(); @@ -201,7 +200,6 @@ public function testChangeToAndFromEnum() // edit enum to string and vice versa // public function testChangeEnumValues() // { - // // TODO // // add a value to list // // fix a typo in a enum value present in existing list // // remove a value from list