diff --git a/CHANGELOG.md b/CHANGELOG.md index d31a41d34..6f26ed1c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ - Enh #374: Use `ColumnDefinitionBuilder` to generate table column SQL representation (@Tigrov) - Enh #378: Improve loading schemas of views (@Tigrov) - Enh #379: Remove `ColumnInterface` (@Tigrov) +- Enh #380: Rename `ColumnSchemaInterface` to `ColumnInterface` (@Tigrov) ## 1.3.0 March 21, 2024 diff --git a/src/Builder/StructuredExpressionBuilder.php b/src/Builder/StructuredExpressionBuilder.php index 060f7e4b2..7f2e0c20f 100644 --- a/src/Builder/StructuredExpressionBuilder.php +++ b/src/Builder/StructuredExpressionBuilder.php @@ -13,7 +13,7 @@ use Yiisoft\Db\Expression\StructuredExpression; use Yiisoft\Db\QueryBuilder\QueryBuilderInterface; -use Yiisoft\Db\Schema\Column\ColumnSchemaInterface; +use Yiisoft\Db\Schema\Column\ColumnInterface; use function implode; @@ -62,7 +62,7 @@ public function build(ExpressionInterface $expression, array &$params = []): str * Builds a placeholder array out of $expression values. * * @param array|object $value The expression value. - * @param ColumnSchemaInterface[] $columns The structured type columns. + * @param ColumnInterface[] $columns The structured type columns. * @param array $params The binding parameters. * * @throws Exception diff --git a/src/Column/ArrayColumnSchema.php b/src/Column/ArrayColumn.php similarity index 66% rename from src/Column/ArrayColumnSchema.php rename to src/Column/ArrayColumn.php index 9c999973f..2d8d9805c 100644 --- a/src/Column/ArrayColumnSchema.php +++ b/src/Column/ArrayColumn.php @@ -5,10 +5,10 @@ namespace Yiisoft\Db\Pgsql\Column; use Yiisoft\Db\Pgsql\ArrayParser; -use Yiisoft\Db\Schema\Column\ArrayColumnSchema as BaseArrayColumnSchema; +use Yiisoft\Db\Schema\Column\ArrayColumn as BaseArrayColumn; use Yiisoft\Db\Syntax\ParserToArrayInterface; -final class ArrayColumnSchema extends BaseArrayColumnSchema +final class ArrayColumn extends BaseArrayColumn { protected function getParser(): ParserToArrayInterface { diff --git a/src/Column/BigIntColumn.php b/src/Column/BigIntColumn.php new file mode 100644 index 000000000..3f58caaf6 --- /dev/null +++ b/src/Column/BigIntColumn.php @@ -0,0 +1,12 @@ +buildType($column) . $this->buildNotNull($column) @@ -47,22 +47,22 @@ public function build(ColumnSchemaInterface $column): string . $this->buildExtra($column); } - public function buildAlter(ColumnSchemaInterface $column): string + public function buildAlter(ColumnInterface $column): string { return $this->buildType($column) . $this->buildExtra($column); } - protected function buildType(ColumnSchemaInterface $column): string + protected function buildType(ColumnInterface $column): string { - if ($column instanceof \Yiisoft\Db\Schema\Column\ArrayColumnSchema) { + if ($column instanceof \Yiisoft\Db\Schema\Column\ArrayColumn) { return $this->buildType($column->getColumn()) . str_repeat('[]', $column->getDimension()); } return parent::buildType($column); } - protected function getDbType(ColumnSchemaInterface $column): string + protected function getDbType(ColumnInterface $column): string { /** @psalm-suppress DocblockTypeContradiction */ return $column->getDbType() ?? match ($column->getType()) { diff --git a/src/Column/ColumnFactory.php b/src/Column/ColumnFactory.php index f03b4f62a..d79b960c3 100644 --- a/src/Column/ColumnFactory.php +++ b/src/Column/ColumnFactory.php @@ -8,7 +8,7 @@ use Yiisoft\Db\Constraint\ForeignKeyConstraint; use Yiisoft\Db\Expression\Expression; use Yiisoft\Db\Schema\Column\AbstractColumnFactory; -use Yiisoft\Db\Schema\Column\ColumnSchemaInterface; +use Yiisoft\Db\Schema\Column\ColumnInterface; use function preg_replace; use function str_starts_with; @@ -20,8 +20,8 @@ * @psalm-type ColumnInfo = array{ * auto_increment?: bool|string, * check?: string|null, - * column?: ColumnSchemaInterface, - * columns?: array, + * column?: ColumnInterface, + * columns?: array, * comment?: string|null, * computed?: bool|string, * db_type?: string|null, @@ -119,11 +119,11 @@ final class ColumnFactory extends AbstractColumnFactory 'jsonb' => ColumnType::JSON, ]; - public function fromType(string $type, array $info = []): ColumnSchemaInterface + public function fromType(string $type, array $info = []): ColumnInterface { $column = parent::fromType($type, $info); - if ($column instanceof StructuredColumnSchema) { + if ($column instanceof StructuredColumn) { /** @psalm-var array|null $defaultValue */ $defaultValue = $column->getDefaultValue(); @@ -142,22 +142,22 @@ public function fromType(string $type, array $info = []): ColumnSchemaInterface protected function getColumnClass(string $type, array $info = []): string { return match ($type) { - ColumnType::BOOLEAN => BooleanColumnSchema::class, - ColumnType::BIT => BitColumnSchema::class, - ColumnType::TINYINT => IntegerColumnSchema::class, - ColumnType::SMALLINT => IntegerColumnSchema::class, - ColumnType::INTEGER => IntegerColumnSchema::class, + ColumnType::BOOLEAN => BooleanColumn::class, + ColumnType::BIT => BitColumn::class, + ColumnType::TINYINT => IntegerColumn::class, + ColumnType::SMALLINT => IntegerColumn::class, + ColumnType::INTEGER => IntegerColumn::class, ColumnType::BIGINT => PHP_INT_SIZE !== 8 - ? BigIntColumnSchema::class - : IntegerColumnSchema::class, - ColumnType::BINARY => BinaryColumnSchema::class, - ColumnType::ARRAY => ArrayColumnSchema::class, - ColumnType::STRUCTURED => StructuredColumnSchema::class, + ? BigIntColumn::class + : IntegerColumn::class, + ColumnType::BINARY => BinaryColumn::class, + ColumnType::ARRAY => ArrayColumn::class, + ColumnType::STRUCTURED => StructuredColumn::class, default => parent::getColumnClass($type, $info), }; } - protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnSchemaInterface $column): mixed + protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnInterface $column): mixed { $value = preg_replace("/::[^:']+$/", '$1', $defaultValue); diff --git a/src/Column/IntegerColumn.php b/src/Column/IntegerColumn.php new file mode 100644 index 000000000..e2e066778 --- /dev/null +++ b/src/Column/IntegerColumn.php @@ -0,0 +1,12 @@ +quoter->quoteColumnName($column); $tableName = $this->quoter->quoteTableName($table); diff --git a/src/Schema.php b/src/Schema.php index f981663b9..4781f837e 100644 --- a/src/Schema.php +++ b/src/Schema.php @@ -18,9 +18,9 @@ use Yiisoft\Db\Exception\NotSupportedException; use Yiisoft\Db\Helper\DbArrayHelper; use Yiisoft\Db\Pgsql\Column\ColumnFactory; -use Yiisoft\Db\Pgsql\Column\SequenceColumnSchemaInterface; +use Yiisoft\Db\Pgsql\Column\SequenceColumnInterface; use Yiisoft\Db\Schema\Column\ColumnFactoryInterface; -use Yiisoft\Db\Schema\Column\ColumnSchemaInterface; +use Yiisoft\Db\Schema\Column\ColumnInterface; use Yiisoft\Db\Schema\TableSchemaInterface; use function array_change_key_case; @@ -80,7 +80,7 @@ * } * @psalm-type CreateInfo = array{ * dimension?: int|string, - * columns?: array + * columns?: array * } * * @psalm-suppress MissingClassConstType @@ -688,14 +688,14 @@ protected function findColumns(TableSchemaInterface $table): bool $info['table'] = $tableName; /** @psalm-var ColumnArray $info */ - $column = $this->loadColumnSchema($info); + $column = $this->loadColumn($info); $table->column($info['column_name'], $column); if ($column->isPrimaryKey()) { $table->primaryKey($info['column_name']); - if ($column instanceof SequenceColumnSchemaInterface && $table->getSequenceName() === null) { + if ($column instanceof SequenceColumnInterface && $table->getSequenceName() === null) { $table->sequenceName($column->getSequenceName()); } } @@ -705,13 +705,13 @@ protected function findColumns(TableSchemaInterface $table): bool } /** - * Loads the column information into a {@see ColumnSchemaInterface} object. + * Loads the column information into a {@see ColumnInterface} object. * * @psalm-param ColumnArray $info Column information. * - * @return ColumnSchemaInterface The column schema object. + * @return ColumnInterface The column object. */ - private function loadColumnSchema(array $info): ColumnSchemaInterface + private function loadColumn(array $info): ColumnInterface { $columnFactory = $this->getColumnFactory(); $dbType = $info['data_type']; diff --git a/tests/ColumnFactoryTest.php b/tests/ColumnFactoryTest.php index ec52392a7..5f6d887d4 100644 --- a/tests/ColumnFactoryTest.php +++ b/tests/ColumnFactoryTest.php @@ -6,7 +6,7 @@ use PHPUnit\Framework\Attributes\DataProviderExternal; use Yiisoft\Db\Constant\ColumnType; -use Yiisoft\Db\Pgsql\Column\ArrayColumnSchema; +use Yiisoft\Db\Pgsql\Column\ArrayColumn; use Yiisoft\Db\Pgsql\Tests\Provider\ColumnFactoryProvider; use Yiisoft\Db\Pgsql\Tests\Support\TestTrait; use Yiisoft\Db\Tests\AbstractColumnFactoryTest; @@ -29,7 +29,7 @@ public function testFromDbType(string $dbType, string $expectedType, string $exp // For array type $column = $columnFactory->fromType(ColumnType::ARRAY, ['dbType' => $dbType]); - $this->assertInstanceOf(ArrayColumnSchema::class, $column); + $this->assertInstanceOf(ArrayColumn::class, $column); $this->assertInstanceOf($expectedInstanceOf, $column->getColumn()); $this->assertSame($expectedType, $column->getColumn()->getType()); $this->assertSame($dbType, $column->getColumn()->getDbType()); @@ -68,7 +68,7 @@ public function testFromType(string $type, string $expectedType, string $expecte // For array type $column = $columnFactory->fromType(ColumnType::ARRAY, ['column' => $columnFactory->fromType($type)]); - $this->assertInstanceOf(ArrayColumnSchema::class, $column); + $this->assertInstanceOf(ArrayColumn::class, $column); $this->assertInstanceOf($expectedInstanceOf, $column->getColumn()); $this->assertSame($expectedType, $column->getColumn()->getType()); diff --git a/tests/ColumnSchemaTest.php b/tests/ColumnTest.php similarity index 86% rename from tests/ColumnSchemaTest.php rename to tests/ColumnTest.php index afefe4400..1b2d50fad 100644 --- a/tests/ColumnSchemaTest.php +++ b/tests/ColumnTest.php @@ -11,20 +11,20 @@ use Yiisoft\Db\Expression\ArrayExpression; use Yiisoft\Db\Expression\Expression; use Yiisoft\Db\Expression\JsonExpression; -use Yiisoft\Db\Pgsql\Column\ArrayColumnSchema; -use Yiisoft\Db\Pgsql\Column\BigIntColumnSchema; -use Yiisoft\Db\Pgsql\Column\BinaryColumnSchema; -use Yiisoft\Db\Pgsql\Column\BitColumnSchema; -use Yiisoft\Db\Pgsql\Column\BooleanColumnSchema; +use Yiisoft\Db\Pgsql\Column\ArrayColumn; +use Yiisoft\Db\Pgsql\Column\BigIntColumn; +use Yiisoft\Db\Pgsql\Column\BinaryColumn; +use Yiisoft\Db\Pgsql\Column\BitColumn; +use Yiisoft\Db\Pgsql\Column\BooleanColumn; use Yiisoft\Db\Pgsql\Column\ColumnBuilder; -use Yiisoft\Db\Pgsql\Column\IntegerColumnSchema; +use Yiisoft\Db\Pgsql\Column\IntegerColumn; use Yiisoft\Db\Pgsql\Tests\Support\TestTrait; use Yiisoft\Db\Query\Query; -use Yiisoft\Db\Schema\Column\ColumnSchemaInterface; -use Yiisoft\Db\Schema\Column\DoubleColumnSchema; -use Yiisoft\Db\Schema\Column\JsonColumnSchema; -use Yiisoft\Db\Schema\Column\StringColumnSchema; -use Yiisoft\Db\Tests\Common\CommonColumnSchemaTest; +use Yiisoft\Db\Schema\Column\ColumnInterface; +use Yiisoft\Db\Schema\Column\DoubleColumn; +use Yiisoft\Db\Schema\Column\JsonColumn; +use Yiisoft\Db\Schema\Column\StringColumn; +use Yiisoft\Db\Tests\Common\CommonColumnTest; use function stream_get_contents; @@ -33,7 +33,7 @@ * * @psalm-suppress PropertyNotSetInConstructor */ -final class ColumnSchemaTest extends CommonColumnSchemaTest +final class ColumnTest extends CommonColumnTest { use TestTrait; @@ -281,45 +281,45 @@ public function testStructuredType(): void $db->close(); } - public function testColumnSchemaInstance() + public function testColumnInstance() { $db = $this->getConnection(true); $schema = $db->getSchema(); $tableSchema = $schema->getTableSchema('type'); - $this->assertInstanceOf(IntegerColumnSchema::class, $tableSchema->getColumn('int_col')); - $this->assertInstanceOf(StringColumnSchema::class, $tableSchema->getColumn('char_col')); - $this->assertInstanceOf(DoubleColumnSchema::class, $tableSchema->getColumn('float_col')); - $this->assertInstanceOf(BinaryColumnSchema::class, $tableSchema->getColumn('blob_col')); - $this->assertInstanceOf(BooleanColumnSchema::class, $tableSchema->getColumn('bool_col')); - $this->assertInstanceOf(BitColumnSchema::class, $tableSchema->getColumn('bit_col')); - $this->assertInstanceOf(ArrayColumnSchema::class, $tableSchema->getColumn('intarray_col')); - $this->assertInstanceOf(IntegerColumnSchema::class, $tableSchema->getColumn('intarray_col')->getColumn()); - $this->assertInstanceOf(JsonColumnSchema::class, $tableSchema->getColumn('json_col')); + $this->assertInstanceOf(IntegerColumn::class, $tableSchema->getColumn('int_col')); + $this->assertInstanceOf(StringColumn::class, $tableSchema->getColumn('char_col')); + $this->assertInstanceOf(DoubleColumn::class, $tableSchema->getColumn('float_col')); + $this->assertInstanceOf(BinaryColumn::class, $tableSchema->getColumn('blob_col')); + $this->assertInstanceOf(BooleanColumn::class, $tableSchema->getColumn('bool_col')); + $this->assertInstanceOf(BitColumn::class, $tableSchema->getColumn('bit_col')); + $this->assertInstanceOf(ArrayColumn::class, $tableSchema->getColumn('intarray_col')); + $this->assertInstanceOf(IntegerColumn::class, $tableSchema->getColumn('intarray_col')->getColumn()); + $this->assertInstanceOf(JsonColumn::class, $tableSchema->getColumn('json_col')); $db->close(); } - /** @dataProvider \Yiisoft\Db\Pgsql\Tests\Provider\ColumnSchemaProvider::predefinedTypes */ + /** @dataProvider \Yiisoft\Db\Pgsql\Tests\Provider\ColumnProvider::predefinedTypes */ public function testPredefinedType(string $className, string $type, string $phpType) { parent::testPredefinedType($className, $type, $phpType); } - /** @dataProvider \Yiisoft\Db\Pgsql\Tests\Provider\ColumnSchemaProvider::dbTypecastColumns */ + /** @dataProvider \Yiisoft\Db\Pgsql\Tests\Provider\ColumnProvider::dbTypecastColumns */ public function testDbTypecastColumns(string $className, array $values) { parent::testDbTypecastColumns($className, $values); } - /** @dataProvider \Yiisoft\Db\Pgsql\Tests\Provider\ColumnSchemaProvider::phpTypecastColumns */ + /** @dataProvider \Yiisoft\Db\Pgsql\Tests\Provider\ColumnProvider::phpTypecastColumns */ public function testPhpTypecastColumns(string $className, array $values) { parent::testPhpTypecastColumns($className, $values); } - /** @dataProvider \Yiisoft\Db\Pgsql\Tests\Provider\ColumnSchemaProvider::phpTypecastArrayColumns */ - public function testPhpTypecastArrayColumnSchema(ColumnSchemaInterface $column, array $values): void + /** @dataProvider \Yiisoft\Db\Pgsql\Tests\Provider\ColumnProvider::phpTypecastArrayColumns */ + public function testPhpTypecastArrayColumn(ColumnInterface $column, array $values): void { $arrayCol = ColumnBuilder::array($column); @@ -329,9 +329,9 @@ public function testPhpTypecastArrayColumnSchema(ColumnSchemaInterface $column, } } - public function testIntegerColumnSchema() + public function testIntegerColumn() { - $intCol = new IntegerColumnSchema(); + $intCol = new IntegerColumn(); $this->assertNull($intCol->getSequenceName()); $this->assertSame($intCol, $intCol->sequenceName('int_seq')); @@ -342,9 +342,9 @@ public function testIntegerColumnSchema() $this->assertNull($intCol->getSequenceName()); } - public function testBigIntColumnSchema() + public function testBigIntColumn() { - $bigintCol = new BigIntColumnSchema(); + $bigintCol = new BigIntColumn(); $this->assertNull($bigintCol->getSequenceName()); $this->assertSame($bigintCol, $bigintCol->sequenceName('bigint_seq')); diff --git a/tests/PdoCommandTest.php b/tests/PdoCommandTest.php index 85a44bd4d..d9effc1c7 100644 --- a/tests/PdoCommandTest.php +++ b/tests/PdoCommandTest.php @@ -50,9 +50,9 @@ public function testInsertAndReadToArrayColumn(): void $this->assertEquals('{1,2,3,4}', $selectData['array_col']); - $columnSchema = $db->getTableSchema('{{%table_with_array_col}}')->getColumn('array_col'); + $column = $db->getTableSchema('{{%table_with_array_col}}')->getColumn('array_col'); - $this->assertSame($arrValue, $columnSchema->phpTypecast($selectData['array_col'])); + $this->assertSame($arrValue, $column->phpTypecast($selectData['array_col'])); $db->close(); } diff --git a/tests/Provider/ColumnBuilderProvider.php b/tests/Provider/ColumnBuilderProvider.php index c6c927041..6f5c9ec85 100644 --- a/tests/Provider/ColumnBuilderProvider.php +++ b/tests/Provider/ColumnBuilderProvider.php @@ -4,13 +4,13 @@ namespace Yiisoft\Db\Pgsql\Tests\Provider; -use Yiisoft\Db\Pgsql\Column\ArrayColumnSchema; -use Yiisoft\Db\Pgsql\Column\BinaryColumnSchema; -use Yiisoft\Db\Pgsql\Column\BitColumnSchema; -use Yiisoft\Db\Pgsql\Column\BooleanColumnSchema; -use Yiisoft\Db\Pgsql\Column\IntegerColumnSchema; -use Yiisoft\Db\Pgsql\Column\StructuredColumnSchema; -use Yiisoft\Db\Schema\Column\DoubleColumnSchema; +use Yiisoft\Db\Pgsql\Column\ArrayColumn; +use Yiisoft\Db\Pgsql\Column\BinaryColumn; +use Yiisoft\Db\Pgsql\Column\BitColumn; +use Yiisoft\Db\Pgsql\Column\BooleanColumn; +use Yiisoft\Db\Pgsql\Column\IntegerColumn; +use Yiisoft\Db\Pgsql\Column\StructuredColumn; +use Yiisoft\Db\Schema\Column\DoubleColumn; class ColumnBuilderProvider extends \Yiisoft\Db\Tests\Provider\ColumnBuilderProvider { @@ -18,42 +18,42 @@ public static function buildingMethods(): array { $values = parent::buildingMethods(); - $values['primaryKey()'][2] = IntegerColumnSchema::class; - $values['primaryKey(false)'][2] = IntegerColumnSchema::class; - $values['smallPrimaryKey()'][2] = IntegerColumnSchema::class; - $values['smallPrimaryKey(false)'][2] = IntegerColumnSchema::class; - $values['bigPrimaryKey()'][2] = IntegerColumnSchema::class; - $values['bigPrimaryKey(false)'][2] = IntegerColumnSchema::class; - $values['boolean()'][2] = BooleanColumnSchema::class; - $values['bit()'][2] = BitColumnSchema::class; - $values['bit(1)'][2] = BitColumnSchema::class; - $values['tinyint()'][2] = IntegerColumnSchema::class; - $values['tinyint(1)'][2] = IntegerColumnSchema::class; - $values['smallint()'][2] = IntegerColumnSchema::class; - $values['smallint(1)'][2] = IntegerColumnSchema::class; - $values['integer()'][2] = IntegerColumnSchema::class; - $values['integer(1)'][2] = IntegerColumnSchema::class; - $values['bigint()'][2] = IntegerColumnSchema::class; - $values['bigint(1)'][2] = IntegerColumnSchema::class; - $values['float()'][2] = DoubleColumnSchema::class; - $values['float(8)'][2] = DoubleColumnSchema::class; - $values['float(8,2)'][2] = DoubleColumnSchema::class; - $values['double()'][2] = DoubleColumnSchema::class; - $values['double(8)'][2] = DoubleColumnSchema::class; - $values['double(8,2)'][2] = DoubleColumnSchema::class; - $values['decimal()'][2] = DoubleColumnSchema::class; - $values['decimal(8)'][2] = DoubleColumnSchema::class; - $values['decimal(8,2)'][2] = DoubleColumnSchema::class; - $values['money()'][2] = DoubleColumnSchema::class; - $values['money(8)'][2] = DoubleColumnSchema::class; - $values['money(8,2)'][2] = DoubleColumnSchema::class; - $values['binary()'][2] = BinaryColumnSchema::class; - $values['binary(8)'][2] = BinaryColumnSchema::class; - $values['array()'][2] = ArrayColumnSchema::class; - $values['array($column)'][2] = ArrayColumnSchema::class; - $values['structured()'][2] = StructuredColumnSchema::class; - $values["structured('money_currency')"][2] = StructuredColumnSchema::class; - $values["structured('money_currency',\$columns)"][2] = StructuredColumnSchema::class; + $values['primaryKey()'][2] = IntegerColumn::class; + $values['primaryKey(false)'][2] = IntegerColumn::class; + $values['smallPrimaryKey()'][2] = IntegerColumn::class; + $values['smallPrimaryKey(false)'][2] = IntegerColumn::class; + $values['bigPrimaryKey()'][2] = IntegerColumn::class; + $values['bigPrimaryKey(false)'][2] = IntegerColumn::class; + $values['boolean()'][2] = BooleanColumn::class; + $values['bit()'][2] = BitColumn::class; + $values['bit(1)'][2] = BitColumn::class; + $values['tinyint()'][2] = IntegerColumn::class; + $values['tinyint(1)'][2] = IntegerColumn::class; + $values['smallint()'][2] = IntegerColumn::class; + $values['smallint(1)'][2] = IntegerColumn::class; + $values['integer()'][2] = IntegerColumn::class; + $values['integer(1)'][2] = IntegerColumn::class; + $values['bigint()'][2] = IntegerColumn::class; + $values['bigint(1)'][2] = IntegerColumn::class; + $values['float()'][2] = DoubleColumn::class; + $values['float(8)'][2] = DoubleColumn::class; + $values['float(8,2)'][2] = DoubleColumn::class; + $values['double()'][2] = DoubleColumn::class; + $values['double(8)'][2] = DoubleColumn::class; + $values['double(8,2)'][2] = DoubleColumn::class; + $values['decimal()'][2] = DoubleColumn::class; + $values['decimal(8)'][2] = DoubleColumn::class; + $values['decimal(8,2)'][2] = DoubleColumn::class; + $values['money()'][2] = DoubleColumn::class; + $values['money(8)'][2] = DoubleColumn::class; + $values['money(8,2)'][2] = DoubleColumn::class; + $values['binary()'][2] = BinaryColumn::class; + $values['binary(8)'][2] = BinaryColumn::class; + $values['array()'][2] = ArrayColumn::class; + $values['array($column)'][2] = ArrayColumn::class; + $values['structured()'][2] = StructuredColumn::class; + $values["structured('money_currency')"][2] = StructuredColumn::class; + $values["structured('money_currency',\$columns)"][2] = StructuredColumn::class; return $values; } diff --git a/tests/Provider/ColumnFactoryProvider.php b/tests/Provider/ColumnFactoryProvider.php index d1c96a50f..984fea4c5 100644 --- a/tests/Provider/ColumnFactoryProvider.php +++ b/tests/Provider/ColumnFactoryProvider.php @@ -6,13 +6,13 @@ use Yiisoft\Db\Constant\ColumnType; use Yiisoft\Db\Expression\Expression; -use Yiisoft\Db\Pgsql\Column\BinaryColumnSchema; -use Yiisoft\Db\Pgsql\Column\BitColumnSchema; -use Yiisoft\Db\Pgsql\Column\BooleanColumnSchema; -use Yiisoft\Db\Pgsql\Column\IntegerColumnSchema; -use Yiisoft\Db\Schema\Column\DoubleColumnSchema; -use Yiisoft\Db\Schema\Column\JsonColumnSchema; -use Yiisoft\Db\Schema\Column\StringColumnSchema; +use Yiisoft\Db\Pgsql\Column\BinaryColumn; +use Yiisoft\Db\Pgsql\Column\BitColumn; +use Yiisoft\Db\Pgsql\Column\BooleanColumn; +use Yiisoft\Db\Pgsql\Column\IntegerColumn; +use Yiisoft\Db\Schema\Column\DoubleColumn; +use Yiisoft\Db\Schema\Column\JsonColumn; +use Yiisoft\Db\Schema\Column\StringColumn; final class ColumnFactoryProvider extends \Yiisoft\Db\Tests\Provider\ColumnFactoryProvider { @@ -20,68 +20,68 @@ public static function dbTypes(): array { return [ // db type, expected abstract type, expected instance of - ['bool', ColumnType::BOOLEAN, BooleanColumnSchema::class], - ['boolean', ColumnType::BOOLEAN, BooleanColumnSchema::class], - ['bit', ColumnType::BIT, BitColumnSchema::class], - ['bit varying', ColumnType::BIT, BitColumnSchema::class], - ['smallint', ColumnType::SMALLINT, IntegerColumnSchema::class], - ['smallserial', ColumnType::SMALLINT, IntegerColumnSchema::class], - ['int2', ColumnType::SMALLINT, IntegerColumnSchema::class], - ['serial2', ColumnType::SMALLINT, IntegerColumnSchema::class], - ['int', ColumnType::INTEGER, IntegerColumnSchema::class], - ['integer', ColumnType::INTEGER, IntegerColumnSchema::class], - ['serial', ColumnType::INTEGER, IntegerColumnSchema::class], - ['int4', ColumnType::INTEGER, IntegerColumnSchema::class], - ['serial4', ColumnType::INTEGER, IntegerColumnSchema::class], - ['bigint', ColumnType::BIGINT, IntegerColumnSchema::class], - ['bigserial', ColumnType::BIGINT, IntegerColumnSchema::class], - ['int8', ColumnType::BIGINT, IntegerColumnSchema::class], - ['serial8', ColumnType::BIGINT, IntegerColumnSchema::class], - ['oid', ColumnType::BIGINT, IntegerColumnSchema::class], - ['pg_lsn', ColumnType::BIGINT, IntegerColumnSchema::class], - ['real', ColumnType::FLOAT, DoubleColumnSchema::class], - ['float4', ColumnType::FLOAT, DoubleColumnSchema::class], - ['float8', ColumnType::DOUBLE, DoubleColumnSchema::class], - ['double precision', ColumnType::DOUBLE, DoubleColumnSchema::class], - ['decimal', ColumnType::DECIMAL, DoubleColumnSchema::class], - ['numeric', ColumnType::DECIMAL, DoubleColumnSchema::class], - ['money', ColumnType::MONEY, StringColumnSchema::class], - ['char', ColumnType::CHAR, StringColumnSchema::class], - ['character', ColumnType::CHAR, StringColumnSchema::class], - ['bpchar', ColumnType::CHAR, StringColumnSchema::class], - ['character varying', ColumnType::STRING, StringColumnSchema::class], - ['varchar', ColumnType::STRING, StringColumnSchema::class], - ['text', ColumnType::TEXT, StringColumnSchema::class], - ['bytea', ColumnType::BINARY, BinaryColumnSchema::class], - ['date', ColumnType::DATE, StringColumnSchema::class], - ['time', ColumnType::TIME, StringColumnSchema::class], - ['time without time zone', ColumnType::TIME, StringColumnSchema::class], - ['time with time zone', ColumnType::TIME, StringColumnSchema::class], - ['timetz', ColumnType::TIME, StringColumnSchema::class], - ['timestamp', ColumnType::TIMESTAMP, StringColumnSchema::class], - ['timestamp without time zone', ColumnType::TIMESTAMP, StringColumnSchema::class], - ['timestamp with time zone', ColumnType::TIMESTAMP, StringColumnSchema::class], - ['timestamptz', ColumnType::TIMESTAMP, StringColumnSchema::class], - ['abstime', ColumnType::TIMESTAMP, StringColumnSchema::class], - ['interval', ColumnType::STRING, StringColumnSchema::class], - ['box', ColumnType::STRING, StringColumnSchema::class], - ['circle', ColumnType::STRING, StringColumnSchema::class], - ['point', ColumnType::STRING, StringColumnSchema::class], - ['line', ColumnType::STRING, StringColumnSchema::class], - ['lseg', ColumnType::STRING, StringColumnSchema::class], - ['polygon', ColumnType::STRING, StringColumnSchema::class], - ['path', ColumnType::STRING, StringColumnSchema::class], - ['cidr', ColumnType::STRING, StringColumnSchema::class], - ['inet', ColumnType::STRING, StringColumnSchema::class], - ['macaddr', ColumnType::STRING, StringColumnSchema::class], - ['tsquery', ColumnType::STRING, StringColumnSchema::class], - ['tsvector', ColumnType::STRING, StringColumnSchema::class], - ['txid_snapshot', ColumnType::STRING, StringColumnSchema::class], - ['unknown', ColumnType::STRING, StringColumnSchema::class], - ['uuid', ColumnType::STRING, StringColumnSchema::class], - ['xml', ColumnType::STRING, StringColumnSchema::class], - ['json', ColumnType::JSON, JsonColumnSchema::class], - ['jsonb', ColumnType::JSON, JsonColumnSchema::class], + ['bool', ColumnType::BOOLEAN, BooleanColumn::class], + ['boolean', ColumnType::BOOLEAN, BooleanColumn::class], + ['bit', ColumnType::BIT, BitColumn::class], + ['bit varying', ColumnType::BIT, BitColumn::class], + ['smallint', ColumnType::SMALLINT, IntegerColumn::class], + ['smallserial', ColumnType::SMALLINT, IntegerColumn::class], + ['int2', ColumnType::SMALLINT, IntegerColumn::class], + ['serial2', ColumnType::SMALLINT, IntegerColumn::class], + ['int', ColumnType::INTEGER, IntegerColumn::class], + ['integer', ColumnType::INTEGER, IntegerColumn::class], + ['serial', ColumnType::INTEGER, IntegerColumn::class], + ['int4', ColumnType::INTEGER, IntegerColumn::class], + ['serial4', ColumnType::INTEGER, IntegerColumn::class], + ['bigint', ColumnType::BIGINT, IntegerColumn::class], + ['bigserial', ColumnType::BIGINT, IntegerColumn::class], + ['int8', ColumnType::BIGINT, IntegerColumn::class], + ['serial8', ColumnType::BIGINT, IntegerColumn::class], + ['oid', ColumnType::BIGINT, IntegerColumn::class], + ['pg_lsn', ColumnType::BIGINT, IntegerColumn::class], + ['real', ColumnType::FLOAT, DoubleColumn::class], + ['float4', ColumnType::FLOAT, DoubleColumn::class], + ['float8', ColumnType::DOUBLE, DoubleColumn::class], + ['double precision', ColumnType::DOUBLE, DoubleColumn::class], + ['decimal', ColumnType::DECIMAL, DoubleColumn::class], + ['numeric', ColumnType::DECIMAL, DoubleColumn::class], + ['money', ColumnType::MONEY, StringColumn::class], + ['char', ColumnType::CHAR, StringColumn::class], + ['character', ColumnType::CHAR, StringColumn::class], + ['bpchar', ColumnType::CHAR, StringColumn::class], + ['character varying', ColumnType::STRING, StringColumn::class], + ['varchar', ColumnType::STRING, StringColumn::class], + ['text', ColumnType::TEXT, StringColumn::class], + ['bytea', ColumnType::BINARY, BinaryColumn::class], + ['date', ColumnType::DATE, StringColumn::class], + ['time', ColumnType::TIME, StringColumn::class], + ['time without time zone', ColumnType::TIME, StringColumn::class], + ['time with time zone', ColumnType::TIME, StringColumn::class], + ['timetz', ColumnType::TIME, StringColumn::class], + ['timestamp', ColumnType::TIMESTAMP, StringColumn::class], + ['timestamp without time zone', ColumnType::TIMESTAMP, StringColumn::class], + ['timestamp with time zone', ColumnType::TIMESTAMP, StringColumn::class], + ['timestamptz', ColumnType::TIMESTAMP, StringColumn::class], + ['abstime', ColumnType::TIMESTAMP, StringColumn::class], + ['interval', ColumnType::STRING, StringColumn::class], + ['box', ColumnType::STRING, StringColumn::class], + ['circle', ColumnType::STRING, StringColumn::class], + ['point', ColumnType::STRING, StringColumn::class], + ['line', ColumnType::STRING, StringColumn::class], + ['lseg', ColumnType::STRING, StringColumn::class], + ['polygon', ColumnType::STRING, StringColumn::class], + ['path', ColumnType::STRING, StringColumn::class], + ['cidr', ColumnType::STRING, StringColumn::class], + ['inet', ColumnType::STRING, StringColumn::class], + ['macaddr', ColumnType::STRING, StringColumn::class], + ['tsquery', ColumnType::STRING, StringColumn::class], + ['tsvector', ColumnType::STRING, StringColumn::class], + ['txid_snapshot', ColumnType::STRING, StringColumn::class], + ['unknown', ColumnType::STRING, StringColumn::class], + ['uuid', ColumnType::STRING, StringColumn::class], + ['xml', ColumnType::STRING, StringColumn::class], + ['json', ColumnType::JSON, JsonColumn::class], + ['jsonb', ColumnType::JSON, JsonColumn::class], ]; } @@ -97,7 +97,7 @@ public static function definitions(): array public static function pseudoTypes(): array { $result = parent::pseudoTypes(); - $result['ubigpk'][2] = IntegerColumnSchema::class; + $result['ubigpk'][2] = IntegerColumn::class; return $result; } diff --git a/tests/Provider/ColumnSchemaProvider.php b/tests/Provider/ColumnProvider.php similarity index 76% rename from tests/Provider/ColumnSchemaProvider.php rename to tests/Provider/ColumnProvider.php index 3bc02ace7..743f25556 100644 --- a/tests/Provider/ColumnSchemaProvider.php +++ b/tests/Provider/ColumnProvider.php @@ -5,23 +5,23 @@ namespace Yiisoft\Db\Pgsql\Tests\Provider; use Yiisoft\Db\Expression\Expression; -use Yiisoft\Db\Pgsql\Column\BigIntColumnSchema; -use Yiisoft\Db\Pgsql\Column\BinaryColumnSchema; -use Yiisoft\Db\Pgsql\Column\BitColumnSchema; -use Yiisoft\Db\Pgsql\Column\BooleanColumnSchema; +use Yiisoft\Db\Pgsql\Column\BigIntColumn; +use Yiisoft\Db\Pgsql\Column\BinaryColumn; +use Yiisoft\Db\Pgsql\Column\BitColumn; +use Yiisoft\Db\Pgsql\Column\BooleanColumn; use Yiisoft\Db\Pgsql\Column\ColumnBuilder; -use Yiisoft\Db\Pgsql\Column\IntegerColumnSchema; +use Yiisoft\Db\Pgsql\Column\IntegerColumn; -class ColumnSchemaProvider extends \Yiisoft\Db\Tests\Provider\ColumnSchemaProvider +class ColumnProvider extends \Yiisoft\Db\Tests\Provider\ColumnProvider { public static function predefinedTypes(): array { $values = parent::predefinedTypes(); - $values['integer'][0] = IntegerColumnSchema::class; - $values['bigint'][0] = BigIntColumnSchema::class; - $values['binary'][0] = BinaryColumnSchema::class; - $values['boolean'][0] = BooleanColumnSchema::class; - $values['bit'][0] = BitColumnSchema::class; + $values['integer'][0] = IntegerColumn::class; + $values['bigint'][0] = BigIntColumn::class; + $values['binary'][0] = BinaryColumn::class; + $values['boolean'][0] = BooleanColumn::class; + $values['bit'][0] = BitColumn::class; return $values; } @@ -29,12 +29,12 @@ public static function predefinedTypes(): array public static function dbTypecastColumns(): array { $values = parent::dbTypecastColumns(); - $values['integer'][0] = IntegerColumnSchema::class; - $values['bigint'][0] = BigIntColumnSchema::class; - $values['binary'][0] = BinaryColumnSchema::class; - $values['boolean'][0] = BooleanColumnSchema::class; + $values['integer'][0] = IntegerColumn::class; + $values['bigint'][0] = BigIntColumn::class; + $values['binary'][0] = BinaryColumn::class; + $values['boolean'][0] = BooleanColumn::class; $values['bit'] = [ - BitColumnSchema::class, + BitColumn::class, [ [null, null], [null, ''], @@ -53,12 +53,12 @@ public static function dbTypecastColumns(): array public static function phpTypecastColumns(): array { $values = parent::phpTypecastColumns(); - $values['integer'][0] = IntegerColumnSchema::class; - $values['bigint'][0] = BigIntColumnSchema::class; - $values['binary'][0] = BinaryColumnSchema::class; + $values['integer'][0] = IntegerColumn::class; + $values['bigint'][0] = BigIntColumn::class; + $values['binary'][0] = BinaryColumn::class; $values['binary'][1][] = ["\x10\x11\x12", '\x101112']; $values['boolean'] = [ - BooleanColumnSchema::class, + BooleanColumn::class, [ [null, null], [true, true], @@ -70,7 +70,7 @@ public static function phpTypecastColumns(): array ], ]; $values['bit'] = [ - BitColumnSchema::class, + BitColumn::class, [ [null, null], [0b1001, '1001'], @@ -94,7 +94,7 @@ public static function phpTypecastArrayColumns() ], ], [ - new BigIntColumnSchema(), + new BigIntColumn(), [ [1, ['1', '2', '9223372036854775807'], '{1,2,9223372036854775807}'], [2, [['1', '2'], ['9223372036854775807']], '{{1,2},{9223372036854775807}}'], diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index 5f99ad888..d2ad47be1 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -19,7 +19,7 @@ use Yiisoft\Db\Query\QueryInterface; use Yiisoft\Db\QueryBuilder\Condition\ArrayOverlapsCondition; use Yiisoft\Db\QueryBuilder\Condition\JsonOverlapsCondition; -use Yiisoft\Db\Schema\Column\ColumnSchemaInterface; +use Yiisoft\Db\Schema\Column\ColumnInterface; use Yiisoft\Db\Tests\Common\CommonQueryBuilderTest; use function version_compare; @@ -61,7 +61,7 @@ public function testAddDefaultValue(): void } #[DataProviderExternal(QueryBuilderProvider::class, 'alterColumn')] - public function testAlterColumn(string|ColumnSchemaInterface $type, string $expected): void + public function testAlterColumn(string|ColumnInterface $type, string $expected): void { parent::testAlterColumn($type, $expected); } @@ -632,7 +632,7 @@ public function testOverlapsConditionOperator(iterable|ExpressionInterface $valu } #[DataProviderExternal(QueryBuilderProvider::class, 'buildColumnDefinition')] - public function testBuildColumnDefinition(string $expected, ColumnSchemaInterface|string $column): void + public function testBuildColumnDefinition(string $expected, ColumnInterface|string $column): void { parent::testBuildColumnDefinition($expected, $column); } diff --git a/tests/SchemaTest.php b/tests/SchemaTest.php index 4c3762d28..6d5663362 100644 --- a/tests/SchemaTest.php +++ b/tests/SchemaTest.php @@ -61,7 +61,7 @@ public function testBooleanDefaultValues(): void * * @throws Exception */ - public function testColumnSchema(array $columns, string $tableName): void + public function testColumns(array $columns, string $tableName): void { $db = $this->getConnection(); @@ -71,7 +71,7 @@ public function testColumnSchema(array $columns, string $tableName): void } } - $this->columnSchema($columns, $tableName); + $this->assertTableColumns($columns, $tableName); $db->close(); } @@ -81,7 +81,7 @@ public function testColumnSchema(array $columns, string $tableName): void * @throws InvalidConfigException * @throws Throwable */ - public function testColumnSchemaTypeMapNoExist(): void + public function testColumnTypeMapNoExist(): void { $db = $this->getConnection(); @@ -449,10 +449,10 @@ public function testTimestampNullDefaultValue(): void $this->assertNotNull($tableSchema); - $columnSchema = $tableSchema->getColumn('timestamp'); + $column = $tableSchema->getColumn('timestamp'); - $this->assertNotNull($columnSchema); - $this->assertNull($columnSchema->getDefaultValue()); + $this->assertNotNull($column); + $this->assertNull($column->getDefaultValue()); $db->close(); } @@ -574,14 +574,14 @@ public function testGetViewNames(): void } /** @dataProvider \Yiisoft\Db\Pgsql\Tests\Provider\StructuredTypeProvider::columns */ - public function testStructuredTypeColumnSchema(array $columns, string $tableName): void + public function testStructuredTypeColumn(array $columns, string $tableName): void { - $this->testStructuredTypeColumnSchemaRecursive($columns, $tableName); + $this->testStructuredTypeColumnRecursive($columns, $tableName); } - private function testStructuredTypeColumnSchemaRecursive(array $columns, string $tableName): void + private function testStructuredTypeColumnRecursive(array $columns, string $tableName): void { - $this->columnSchema($columns, $tableName); + $this->assertTableColumns($columns, $tableName); $db = $this->getConnection(true); $table = $db->getTableSchema($tableName, true); @@ -592,7 +592,7 @@ private function testStructuredTypeColumnSchemaRecursive(array $columns, string isset($columns[$name]['columns']), "Columns of structured type `$name` do not exist, dbType is `{$column->getDbType()}`." ); - $this->testStructuredTypeColumnSchemaRecursive($columns[$name]['columns'], $column->getDbType()); + $this->testStructuredTypeColumnRecursive($columns[$name]['columns'], $column->getDbType()); } }