Skip to content

Commit

Permalink
Rename ColumnSchemaInterface to ColumnInterface (#337)
Browse files Browse the repository at this point in the history
  • Loading branch information
Tigrov authored Jan 9, 2025
1 parent 7fd123b commit 792f672
Show file tree
Hide file tree
Showing 13 changed files with 87 additions and 86 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
- Chg #333: Update `QueryBuilder` constructor (@Tigrov)
- Enh #332: Use `ColumnDefinitionBuilder` to generate table column SQL representation (@Tigrov)
- Enh #335: Remove `ColumnInterface` (@Tigrov)
- Enh #337: Rename `ColumnSchemaInterface` to `ColumnInterface` (@Tigrov)

## 1.2.0 March 21, 2024

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@

use Yiisoft\Db\Command\ParamInterface;
use Yiisoft\Db\Expression\Expression;
use Yiisoft\Db\Schema\Column\BinaryColumnSchema as BaseBinaryColumnSchema;
use Yiisoft\Db\Schema\Column\BinaryColumn as BaseBinaryColumn;

use function bin2hex;
use function is_string;

final class BinaryColumnSchema extends BaseBinaryColumnSchema
final class BinaryColumn extends BaseBinaryColumn
{
public function dbTypecast(mixed $value): mixed
{
Expand Down
6 changes: 3 additions & 3 deletions src/Column/ColumnBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
namespace Yiisoft\Db\Mssql\Column;

use Yiisoft\Db\Constant\ColumnType;
use Yiisoft\Db\Schema\Column\ColumnSchemaInterface;
use Yiisoft\Db\Schema\Column\ColumnInterface;

final class ColumnBuilder extends \Yiisoft\Db\Schema\Column\ColumnBuilder
{
public static function binary(int|null $size = null): ColumnSchemaInterface
public static function binary(int|null $size = null): ColumnInterface
{
return new BinaryColumnSchema(ColumnType::BINARY, size: $size);
return new BinaryColumn(ColumnType::BINARY, size: $size);
}
}
8 changes: 4 additions & 4 deletions src/Column/ColumnDefinitionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use Yiisoft\Db\Constant\ColumnType;
use Yiisoft\Db\QueryBuilder\AbstractColumnDefinitionBuilder;
use Yiisoft\Db\Schema\Column\ColumnSchemaInterface;
use Yiisoft\Db\Schema\Column\ColumnInterface;

use function ceil;

Expand Down Expand Up @@ -34,7 +34,7 @@ final class ColumnDefinitionBuilder extends AbstractColumnDefinitionBuilder
'numeric',
];

public function build(ColumnSchemaInterface $column): string
public function build(ColumnInterface $column): string
{
return $this->buildType($column)
. $this->buildAutoIncrement($column)
Expand All @@ -47,14 +47,14 @@ 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->buildNotNull($column)
. $this->buildExtra($column);
}

protected function getDbType(ColumnSchemaInterface $column): string
protected function getDbType(ColumnInterface $column): string
{
$size = $column->getSize();

Expand Down
8 changes: 4 additions & 4 deletions src/Column/ColumnFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
use Yiisoft\Db\Constant\PseudoType;
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 hex2bin;
use function str_starts_with;
Expand Down Expand Up @@ -73,7 +73,7 @@ final class ColumnFactory extends AbstractColumnFactory
'table' => ColumnType::STRING,
];

public function fromPseudoType(string $pseudoType, array $info = []): ColumnSchemaInterface
public function fromPseudoType(string $pseudoType, array $info = []): ColumnInterface
{
if ($pseudoType === PseudoType::UUID_PK_SEQ && !isset($info['defaultValue'])) {
$info['defaultValue'] = new Expression('newsequentialid()');
Expand All @@ -85,13 +85,13 @@ public function fromPseudoType(string $pseudoType, array $info = []): ColumnSche
protected function getColumnClass(string $type, array $info = []): string
{
if ($type === ColumnType::BINARY) {
return BinaryColumnSchema::class;
return BinaryColumn::class;
}

return parent::getColumnClass($type, $info);
}

protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnSchemaInterface $column): mixed
protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnInterface $column): mixed
{
if ($defaultValue[0] === '(' && $defaultValue[-1] === ')') {
$defaultValue = substr($defaultValue, 1, -1);
Expand Down
4 changes: 2 additions & 2 deletions src/DDLQueryBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
use Yiisoft\Db\Exception\InvalidArgumentException;
use Yiisoft\Db\Exception\NotSupportedException;
use Yiisoft\Db\QueryBuilder\AbstractDDLQueryBuilder;
use Yiisoft\Db\Schema\Column\ColumnSchemaInterface;
use Yiisoft\Db\Schema\Column\ColumnInterface;

use function array_diff;
use function implode;
Expand Down Expand Up @@ -52,7 +52,7 @@ public function addDefaultValue(string $table, string $name, string $column, mix
/**
* @throws Exception
*/
public function alterColumn(string $table, string $column, ColumnSchemaInterface|string $type): string
public function alterColumn(string $table, string $column, ColumnInterface|string $type): string
{
$columnName = $this->quoter->quoteColumnName($column);
$tableName = $this->quoter->quoteTableName($table);
Expand Down
8 changes: 4 additions & 4 deletions src/Schema.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
use Yiisoft\Db\Helper\DbArrayHelper;
use Yiisoft\Db\Mssql\Column\ColumnFactory;
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;
Expand Down Expand Up @@ -350,11 +350,11 @@ protected function loadTableDefaultValues(string $tableName): array
}

/**
* Loads the column information into a {@see ColumnSchemaInterface} object.
* Loads the column information into a {@see ColumnInterface} object.
*
* @psalm-param ColumnArray $info The column information.
*/
private function loadColumnSchema(array $info): ColumnSchemaInterface
private function loadColumn(array $info): ColumnInterface
{
return $this->getColumnFactory()->fromDbType($info['data_type'], [
'autoIncrement' => $info['is_identity'] === '1',
Expand Down Expand Up @@ -441,7 +441,7 @@ protected function findColumns(TableSchemaInterface $table): bool
$info['schema'] = $schemaName;
$info['table'] = $tableName;

$column = $this->loadColumnSchema($info);
$column = $this->loadColumn($info);

if ($column->isPrimaryKey() && $column->isAutoIncrement()) {
$table->sequenceName('');
Expand Down
34 changes: 17 additions & 17 deletions tests/ColumnSchemaTest.php → tests/ColumnTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@
use PDO;
use Yiisoft\Db\Command\Param;
use Yiisoft\Db\Expression\Expression;
use Yiisoft\Db\Mssql\Column\BinaryColumnSchema;
use Yiisoft\Db\Mssql\Column\BinaryColumn;
use Yiisoft\Db\Mssql\Tests\Support\TestTrait;
use Yiisoft\Db\Query\Query;
use Yiisoft\Db\Schema\Column\BooleanColumnSchema;
use Yiisoft\Db\Schema\Column\DoubleColumnSchema;
use Yiisoft\Db\Schema\Column\IntegerColumnSchema;
use Yiisoft\Db\Schema\Column\StringColumnSchema;
use Yiisoft\Db\Tests\Common\CommonColumnSchemaTest;
use Yiisoft\Db\Schema\Column\BooleanColumn;
use Yiisoft\Db\Schema\Column\DoubleColumn;
use Yiisoft\Db\Schema\Column\IntegerColumn;
use Yiisoft\Db\Schema\Column\StringColumn;
use Yiisoft\Db\Tests\Common\CommonColumnTest;

use function str_repeat;

/**
* @group mssql
*/
final class ColumnSchemaTest extends CommonColumnSchemaTest
final class ColumnTest extends CommonColumnTest
{
use TestTrait;

Expand Down Expand Up @@ -69,34 +69,34 @@ public function testPhpTypeCast(): 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(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'));
}

/** @dataProvider \Yiisoft\Db\Mssql\Tests\Provider\ColumnSchemaProvider::predefinedTypes */
/** @dataProvider \Yiisoft\Db\Mssql\Tests\Provider\ColumnProvider::predefinedTypes */
public function testPredefinedType(string $className, string $type, string $phpType)
{
parent::testPredefinedType($className, $type, $phpType);
}

/** @dataProvider \Yiisoft\Db\Mssql\Tests\Provider\ColumnSchemaProvider::dbTypecastColumns */
/** @dataProvider \Yiisoft\Db\Mssql\Tests\Provider\ColumnProvider::dbTypecastColumns */
public function testDbTypecastColumns(string $className, array $values)
{
parent::testDbTypecastColumns($className, $values);
}

public function testBinaryColumnSchema()
public function testBinaryColumn()
{
$binaryCol = new BinaryColumnSchema();
$binaryCol = new BinaryColumn();
$binaryCol->dbType('varbinary');

$this->assertEquals(
Expand Down
6 changes: 3 additions & 3 deletions tests/Provider/ColumnBuilderProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@

namespace Yiisoft\Db\Mssql\Tests\Provider;

use Yiisoft\Db\Mssql\Column\BinaryColumnSchema;
use Yiisoft\Db\Mssql\Column\BinaryColumn;

class ColumnBuilderProvider extends \Yiisoft\Db\Tests\Provider\ColumnBuilderProvider
{
public static function buildingMethods(): array
{
$values = parent::buildingMethods();

$values['binary()'][2] = BinaryColumnSchema::class;
$values['binary(8)'][2] = BinaryColumnSchema::class;
$values['binary()'][2] = BinaryColumn::class;
$values['binary(8)'][2] = BinaryColumn::class;

return $values;
}
Expand Down
76 changes: 38 additions & 38 deletions tests/Provider/ColumnFactoryProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

use Yiisoft\Db\Constant\ColumnType;
use Yiisoft\Db\Expression\Expression;
use Yiisoft\Db\Mssql\Column\BinaryColumnSchema;
use Yiisoft\Db\Schema\Column\BooleanColumnSchema;
use Yiisoft\Db\Schema\Column\DoubleColumnSchema;
use Yiisoft\Db\Schema\Column\IntegerColumnSchema;
use Yiisoft\Db\Schema\Column\StringColumnSchema;
use Yiisoft\Db\Mssql\Column\BinaryColumn;
use Yiisoft\Db\Schema\Column\BooleanColumn;
use Yiisoft\Db\Schema\Column\DoubleColumn;
use Yiisoft\Db\Schema\Column\IntegerColumn;
use Yiisoft\Db\Schema\Column\StringColumn;

final class ColumnFactoryProvider extends \Yiisoft\Db\Tests\Provider\ColumnFactoryProvider
{
Expand All @@ -27,39 +27,39 @@ public static function dbTypes(): array
{
return [
// db type, expected abstract type, expected instance of
['bit', ColumnType::BOOLEAN, BooleanColumnSchema::class],
['tinyint', ColumnType::TINYINT, IntegerColumnSchema::class],
['smallint', ColumnType::SMALLINT, IntegerColumnSchema::class],
['int', ColumnType::INTEGER, IntegerColumnSchema::class],
['bigint', ColumnType::BIGINT, IntegerColumnSchema::class],
['numeric', ColumnType::DECIMAL, DoubleColumnSchema::class],
['decimal', ColumnType::DECIMAL, DoubleColumnSchema::class],
['float', ColumnType::FLOAT, DoubleColumnSchema::class],
['real', ColumnType::FLOAT, DoubleColumnSchema::class],
['double', ColumnType::DOUBLE, DoubleColumnSchema::class],
['smallmoney', ColumnType::MONEY, StringColumnSchema::class],
['money', ColumnType::MONEY, StringColumnSchema::class],
['date', ColumnType::DATE, StringColumnSchema::class],
['time', ColumnType::TIME, StringColumnSchema::class],
['smalldatetime', ColumnType::DATETIME, StringColumnSchema::class],
['datetime', ColumnType::DATETIME, StringColumnSchema::class],
['datetime2', ColumnType::DATETIME, StringColumnSchema::class],
['datetimeoffset', ColumnType::DATETIME, StringColumnSchema::class],
['char', ColumnType::CHAR, StringColumnSchema::class],
['varchar', ColumnType::STRING, StringColumnSchema::class],
['text', ColumnType::TEXT, StringColumnSchema::class],
['nchar', ColumnType::CHAR, StringColumnSchema::class],
['nvarchar', ColumnType::STRING, StringColumnSchema::class],
['ntext', ColumnType::TEXT, StringColumnSchema::class],
['binary', ColumnType::BINARY, BinaryColumnSchema::class],
['varbinary', ColumnType::BINARY, BinaryColumnSchema::class],
['image', ColumnType::BINARY, BinaryColumnSchema::class],
['timestamp', ColumnType::BINARY, BinaryColumnSchema::class],
['hierarchyid', ColumnType::STRING, StringColumnSchema::class],
['uniqueidentifier', ColumnType::UUID, StringColumnSchema::class],
['sql_variant', ColumnType::STRING, StringColumnSchema::class],
['xml', ColumnType::STRING, StringColumnSchema::class],
['table', ColumnType::STRING, StringColumnSchema::class],
['bit', ColumnType::BOOLEAN, BooleanColumn::class],
['tinyint', ColumnType::TINYINT, IntegerColumn::class],
['smallint', ColumnType::SMALLINT, IntegerColumn::class],
['int', ColumnType::INTEGER, IntegerColumn::class],
['bigint', ColumnType::BIGINT, IntegerColumn::class],
['numeric', ColumnType::DECIMAL, DoubleColumn::class],
['decimal', ColumnType::DECIMAL, DoubleColumn::class],
['float', ColumnType::FLOAT, DoubleColumn::class],
['real', ColumnType::FLOAT, DoubleColumn::class],
['double', ColumnType::DOUBLE, DoubleColumn::class],
['smallmoney', ColumnType::MONEY, StringColumn::class],
['money', ColumnType::MONEY, StringColumn::class],
['date', ColumnType::DATE, StringColumn::class],
['time', ColumnType::TIME, StringColumn::class],
['smalldatetime', ColumnType::DATETIME, StringColumn::class],
['datetime', ColumnType::DATETIME, StringColumn::class],
['datetime2', ColumnType::DATETIME, StringColumn::class],
['datetimeoffset', ColumnType::DATETIME, StringColumn::class],
['char', ColumnType::CHAR, StringColumn::class],
['varchar', ColumnType::STRING, StringColumn::class],
['text', ColumnType::TEXT, StringColumn::class],
['nchar', ColumnType::CHAR, StringColumn::class],
['nvarchar', ColumnType::STRING, StringColumn::class],
['ntext', ColumnType::TEXT, StringColumn::class],
['binary', ColumnType::BINARY, BinaryColumn::class],
['varbinary', ColumnType::BINARY, BinaryColumn::class],
['image', ColumnType::BINARY, BinaryColumn::class],
['timestamp', ColumnType::BINARY, BinaryColumn::class],
['hierarchyid', ColumnType::STRING, StringColumn::class],
['uniqueidentifier', ColumnType::UUID, StringColumn::class],
['sql_variant', ColumnType::STRING, StringColumn::class],
['xml', ColumnType::STRING, StringColumn::class],
['table', ColumnType::STRING, StringColumn::class],
];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,22 @@

namespace Yiisoft\Db\Mssql\Tests\Provider;

use Yiisoft\Db\Mssql\Column\BinaryColumnSchema;
use Yiisoft\Db\Mssql\Column\BinaryColumn;

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['binary'][0] = BinaryColumnSchema::class;
$values['binary'][0] = BinaryColumn::class;

return $values;
}

public static function dbTypecastColumns(): array
{
$values = parent::dbTypecastColumns();
$values['binary'][0] = BinaryColumnSchema::class;
$values['binary'][0] = BinaryColumn::class;

return $values;
}
Expand Down
6 changes: 3 additions & 3 deletions tests/QueryBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
use Yiisoft\Db\Mssql\Tests\Support\TestTrait;
use Yiisoft\Db\Query\Query;
use Yiisoft\Db\Query\QueryInterface;
use Yiisoft\Db\Schema\Column\ColumnSchemaInterface;
use Yiisoft\Db\Schema\Column\ColumnInterface;
use Yiisoft\Db\Tests\Common\CommonQueryBuilderTest;

use function json_encode;
Expand Down Expand Up @@ -612,7 +612,7 @@ public function testUpsertVarbinary(): 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);
}
Expand Down Expand Up @@ -936,7 +936,7 @@ public function testSelectScalar(array|bool|float|int|string $columns, string $e
}

#[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);
}
Expand Down
Loading

0 comments on commit 792f672

Please sign in to comment.