Skip to content

Commit 3f867e3

Browse files
authored
Rename ColumnSchemaInterface to ColumnInterface (#298)
1 parent 349655b commit 3f867e3

15 files changed

+78
-78
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
- Chg #294: Update `QueryBuilder` constructor (@Tigrov)
2626
- Enh #293: Use `ColumnDefinitionBuilder` to generate table column SQL representation (@Tigrov)
2727
- Enh #296: Remove `ColumnInterface` (@Tigrov)
28+
- Enh #298: Rename `ColumnSchemaInterface` to `ColumnInterface` (@Tigrov)
29+
- Enh #298: Refactor `DMLQueryBuilder::prepareInsertValues()` method (@Tigrov)
2830

2931
## 1.3.0 March 21, 2024
3032

src/Column/BinaryColumnSchema.php renamed to src/Column/BinaryColumn.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
use Yiisoft\Db\Command\ParamInterface;
88
use Yiisoft\Db\Expression\Expression;
9-
use Yiisoft\Db\Schema\Column\BinaryColumnSchema as BaseBinaryColumnSchema;
9+
use Yiisoft\Db\Schema\Column\BinaryColumn as BaseBinaryColumn;
1010

1111
use function is_string;
1212

13-
final class BinaryColumnSchema extends BaseBinaryColumnSchema
13+
final class BinaryColumn extends BaseBinaryColumn
1414
{
1515
public function dbTypecast(mixed $value): mixed
1616
{

src/Column/ColumnBuilder.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
namespace Yiisoft\Db\Oracle\Column;
66

77
use Yiisoft\Db\Constant\ColumnType;
8-
use Yiisoft\Db\Schema\Column\ColumnSchemaInterface;
8+
use Yiisoft\Db\Schema\Column\ColumnInterface;
99

1010
final class ColumnBuilder extends \Yiisoft\Db\Schema\Column\ColumnBuilder
1111
{
12-
public static function binary(int|null $size = null): ColumnSchemaInterface
12+
public static function binary(int|null $size = null): ColumnInterface
1313
{
14-
return new BinaryColumnSchema(ColumnType::BINARY, size: $size);
14+
return new BinaryColumn(ColumnType::BINARY, size: $size);
1515
}
1616
}

src/Column/ColumnDefinitionBuilder.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use Yiisoft\Db\Constant\ColumnType;
88
use Yiisoft\Db\QueryBuilder\AbstractColumnDefinitionBuilder;
9-
use Yiisoft\Db\Schema\Column\ColumnSchemaInterface;
9+
use Yiisoft\Db\Schema\Column\ColumnInterface;
1010

1111
use function ceil;
1212
use function log10;
@@ -35,7 +35,7 @@ final class ColumnDefinitionBuilder extends AbstractColumnDefinitionBuilder
3535
'number',
3636
];
3737

38-
public function build(ColumnSchemaInterface $column): string
38+
public function build(ColumnInterface $column): string
3939
{
4040
return $this->buildType($column)
4141
. $this->buildAutoIncrement($column)
@@ -62,7 +62,7 @@ protected function buildOnUpdate(string $onUpdate): string
6262
return '';
6363
}
6464

65-
protected function getDbType(ColumnSchemaInterface $column): string
65+
protected function getDbType(ColumnInterface $column): string
6666
{
6767
$size = $column->getSize();
6868

src/Column/ColumnFactory.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use Yiisoft\Db\Constant\ColumnType;
88
use Yiisoft\Db\Schema\Column\AbstractColumnFactory;
9-
use Yiisoft\Db\Schema\Column\ColumnSchemaInterface;
9+
use Yiisoft\Db\Schema\Column\ColumnInterface;
1010

1111
use function preg_replace;
1212
use function rtrim;
@@ -73,13 +73,13 @@ protected function getType(string $dbType, array $info = []): string
7373
protected function getColumnClass(string $type, array $info = []): string
7474
{
7575
if ($type === ColumnType::BINARY) {
76-
return BinaryColumnSchema::class;
76+
return BinaryColumn::class;
7777
}
7878

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

82-
protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnSchemaInterface $column): mixed
82+
protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnInterface $column): mixed
8383
{
8484
return parent::normalizeNotNullDefaultValue(rtrim($defaultValue), $column);
8585
}

src/Command.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function insertWithReturningPks(string $table, array $columns): bool|arra
3737
$params = [];
3838
$sql = $this->getQueryBuilder()->insert($table, $columns, $params);
3939

40-
$columnSchemas = $tableSchema?->getColumns() ?? [];
40+
$tableColumns = $tableSchema?->getColumns() ?? [];
4141
$returnParams = [];
4242
$returning = [];
4343

@@ -49,13 +49,13 @@ public function insertWithReturningPks(string $table, array $columns): bool|arra
4949
'value' => '',
5050
];
5151

52-
if (!isset($columnSchemas[$name]) || $columnSchemas[$name]->getPhpType() !== PhpType::INT) {
52+
if (!isset($tableColumns[$name]) || $tableColumns[$name]->getPhpType() !== PhpType::INT) {
5353
$returnParams[$phName]['dataType'] = PDO::PARAM_STR;
5454
} else {
5555
$returnParams[$phName]['dataType'] = PDO::PARAM_INT;
5656
}
5757

58-
$returnParams[$phName]['size'] = ($columnSchemas[$name]?->getSize() ?? 3998) + 2;
58+
$returnParams[$phName]['size'] = ($tableColumns[$name]?->getSize() ?? 3998) + 2;
5959

6060
$returning[] = $this->db->getQuoter()->quoteColumnName($name);
6161
}

src/DDLQueryBuilder.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Yiisoft\Db\Exception\Exception;
88
use Yiisoft\Db\Exception\NotSupportedException;
99
use Yiisoft\Db\QueryBuilder\AbstractDDLQueryBuilder;
10-
use Yiisoft\Db\Schema\Column\ColumnSchemaInterface;
10+
use Yiisoft\Db\Schema\Column\ColumnInterface;
1111

1212
/**
1313
* Implements a (Data Definition Language) SQL statements for Oracle Server.
@@ -45,7 +45,7 @@ public function addForeignKey(
4545
return $sql;
4646
}
4747

48-
public function alterColumn(string $table, string $column, ColumnSchemaInterface|string $type): string
48+
public function alterColumn(string $table, string $column, ColumnInterface|string $type): string
4949
{
5050
return 'ALTER TABLE '
5151
. $this->quoter->quoteTableName($table)

src/DMLQueryBuilder.php

+5-7
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Yiisoft\Db\Query\QueryInterface;
1111
use Yiisoft\Db\QueryBuilder\AbstractDMLQueryBuilder;
1212

13+
use function array_fill;
1314
use function array_key_first;
1415
use function array_map;
1516
use function implode;
@@ -142,16 +143,13 @@ protected function prepareInsertValues(string $table, array|QueryInterface $colu
142143

143144
if ($tableSchema !== null) {
144145
if (!empty($tableSchema->getPrimaryKey())) {
145-
$columns = $tableSchema->getPrimaryKey();
146+
$names = array_map($this->quoter->quoteColumnName(...), $tableSchema->getPrimaryKey());
146147
} else {
147-
/** @var list<string> $columns */
148-
$columns = [array_key_first($tableSchema->getColumns())];
148+
/** @psalm-suppress PossiblyNullArgument */
149+
$names = [$this->quoter->quoteColumnName(array_key_first($tableSchema->getColumns()))];
149150
}
150151

151-
foreach ($columns as $name) {
152-
$names[] = $this->quoter->quoteColumnName($name);
153-
$placeholders[] = 'DEFAULT';
154-
}
152+
$placeholders = array_fill(0, count($names), 'DEFAULT');
155153
}
156154

157155
return [$names, $placeholders, '', $params];

src/Schema.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
use Yiisoft\Db\Helper\DbArrayHelper;
1919
use Yiisoft\Db\Oracle\Column\ColumnFactory;
2020
use Yiisoft\Db\Schema\Column\ColumnFactoryInterface;
21-
use Yiisoft\Db\Schema\Column\ColumnSchemaInterface;
21+
use Yiisoft\Db\Schema\Column\ColumnInterface;
2222
use Yiisoft\Db\Schema\TableSchemaInterface;
2323

2424
use function array_change_key_case;
@@ -389,7 +389,7 @@ protected function findColumns(TableSchemaInterface $table): bool
389389
$info['table'] = $tableName;
390390

391391
/** @psalm-var ColumnArray $info */
392-
$column = $this->loadColumnSchema($info);
392+
$column = $this->loadColumn($info);
393393

394394
$table->column($info['column_name'], $column);
395395
}
@@ -427,15 +427,15 @@ protected function getTableSequenceName(string $tableName): string|null
427427
}
428428

429429
/**
430-
* Loads the column information into a {@see ColumnSchemaInterface} object.
430+
* Loads the column information into a {@see ColumnInterface} object.
431431
*
432432
* @param array $info The column information.
433433
*
434-
* @return ColumnSchemaInterface The column schema object.
434+
* @return ColumnInterface The column object.
435435
*
436436
* @psalm-param ColumnArray $info The column information.
437437
*/
438-
private function loadColumnSchema(array $info): ColumnSchemaInterface
438+
private function loadColumn(array $info): ColumnInterface
439439
{
440440
return $this->getColumnFactory()->fromDbType($info['data_type'], [
441441
'autoIncrement' => $info['identity_column'] === 'YES',

tests/ColumnSchemaTest.php renamed to tests/ColumnTest.php

+15-15
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@
77
use PDO;
88
use Yiisoft\Db\Command\Param;
99
use Yiisoft\Db\Expression\Expression;
10-
use Yiisoft\Db\Oracle\Column\BinaryColumnSchema;
10+
use Yiisoft\Db\Oracle\Column\BinaryColumn;
1111
use Yiisoft\Db\Oracle\Tests\Support\TestTrait;
1212
use Yiisoft\Db\Query\Query;
13-
use Yiisoft\Db\Schema\Column\DoubleColumnSchema;
14-
use Yiisoft\Db\Schema\Column\IntegerColumnSchema;
15-
use Yiisoft\Db\Schema\Column\StringColumnSchema;
16-
use Yiisoft\Db\Tests\Common\CommonColumnSchemaTest;
13+
use Yiisoft\Db\Schema\Column\DoubleColumn;
14+
use Yiisoft\Db\Schema\Column\IntegerColumn;
15+
use Yiisoft\Db\Schema\Column\StringColumn;
16+
use Yiisoft\Db\Tests\Common\CommonColumnTest;
1717

1818
use function str_repeat;
1919

2020
/**
2121
* @group oracle
2222
*/
23-
final class ColumnSchemaTest extends CommonColumnSchemaTest
23+
final class ColumnTest extends CommonColumnTest
2424
{
2525
use TestTrait;
2626

@@ -69,33 +69,33 @@ public function testPhpTypeCast(): void
6969
$db->close();
7070
}
7171

72-
public function testColumnSchemaInstance(): void
72+
public function testColumnInstance(): void
7373
{
7474
$db = $this->getConnection(true);
7575
$schema = $db->getSchema();
7676
$tableSchema = $schema->getTableSchema('type');
7777

78-
$this->assertInstanceOf(IntegerColumnSchema::class, $tableSchema->getColumn('int_col'));
79-
$this->assertInstanceOf(StringColumnSchema::class, $tableSchema->getColumn('char_col'));
80-
$this->assertInstanceOf(DoubleColumnSchema::class, $tableSchema->getColumn('float_col'));
81-
$this->assertInstanceOf(BinaryColumnSchema::class, $tableSchema->getColumn('blob_col'));
78+
$this->assertInstanceOf(IntegerColumn::class, $tableSchema->getColumn('int_col'));
79+
$this->assertInstanceOf(StringColumn::class, $tableSchema->getColumn('char_col'));
80+
$this->assertInstanceOf(DoubleColumn::class, $tableSchema->getColumn('float_col'));
81+
$this->assertInstanceOf(BinaryColumn::class, $tableSchema->getColumn('blob_col'));
8282
}
8383

84-
/** @dataProvider \Yiisoft\Db\Oracle\Tests\Provider\ColumnSchemaProvider::predefinedTypes */
84+
/** @dataProvider \Yiisoft\Db\Oracle\Tests\Provider\ColumnProvider::predefinedTypes */
8585
public function testPredefinedType(string $className, string $type, string $phpType): void
8686
{
8787
parent::testPredefinedType($className, $type, $phpType);
8888
}
8989

90-
/** @dataProvider \Yiisoft\Db\Oracle\Tests\Provider\ColumnSchemaProvider::dbTypecastColumns */
90+
/** @dataProvider \Yiisoft\Db\Oracle\Tests\Provider\ColumnProvider::dbTypecastColumns */
9191
public function testDbTypecastColumns(string $className, array $values): void
9292
{
9393
parent::testDbTypecastColumns($className, $values);
9494
}
9595

96-
public function testBinaryColumnSchema(): void
96+
public function testBinaryColumn(): void
9797
{
98-
$binaryCol = new BinaryColumnSchema();
98+
$binaryCol = new BinaryColumn();
9999
$binaryCol->dbType('BLOB');
100100

101101
$this->assertInstanceOf(Expression::class, $binaryCol->dbTypecast("\x10\x11\x12"));

tests/Provider/ColumnBuilderProvider.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44

55
namespace Yiisoft\Db\Oracle\Tests\Provider;
66

7-
use Yiisoft\Db\Oracle\Column\BinaryColumnSchema;
7+
use Yiisoft\Db\Oracle\Column\BinaryColumn;
88

99
class ColumnBuilderProvider extends \Yiisoft\Db\Tests\Provider\ColumnBuilderProvider
1010
{
1111
public static function buildingMethods(): array
1212
{
1313
$values = parent::buildingMethods();
1414

15-
$values['binary()'][2] = BinaryColumnSchema::class;
16-
$values['binary(8)'][2] = BinaryColumnSchema::class;
15+
$values['binary()'][2] = BinaryColumn::class;
16+
$values['binary(8)'][2] = BinaryColumn::class;
1717

1818
return $values;
1919
}

tests/Provider/ColumnFactoryProvider.php

+23-23
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,36 @@
66

77
use Yiisoft\Db\Constant\ColumnType;
88
use Yiisoft\Db\Expression\Expression;
9-
use Yiisoft\Db\Oracle\Column\BinaryColumnSchema;
10-
use Yiisoft\Db\Schema\Column\DoubleColumnSchema;
11-
use Yiisoft\Db\Schema\Column\StringColumnSchema;
9+
use Yiisoft\Db\Oracle\Column\BinaryColumn;
10+
use Yiisoft\Db\Schema\Column\DoubleColumn;
11+
use Yiisoft\Db\Schema\Column\StringColumn;
1212

1313
final class ColumnFactoryProvider extends \Yiisoft\Db\Tests\Provider\ColumnFactoryProvider
1414
{
1515
public static function dbTypes(): array
1616
{
1717
return [
1818
// db type, expected abstract type, expected instance of
19-
['char', ColumnType::CHAR, StringColumnSchema::class],
20-
['nchar', ColumnType::CHAR, StringColumnSchema::class],
21-
['varchar2', ColumnType::STRING, StringColumnSchema::class],
22-
['nvarchar2', ColumnType::STRING, StringColumnSchema::class],
23-
['clob', ColumnType::TEXT, StringColumnSchema::class],
24-
['nclob', ColumnType::TEXT, StringColumnSchema::class],
25-
['long', ColumnType::TEXT, StringColumnSchema::class],
26-
['blob', ColumnType::BINARY, BinaryColumnSchema::class],
27-
['bfile', ColumnType::BINARY, BinaryColumnSchema::class],
28-
['long raw', ColumnType::BINARY, BinaryColumnSchema::class],
29-
['raw', ColumnType::BINARY, BinaryColumnSchema::class],
30-
['number', ColumnType::DOUBLE, DoubleColumnSchema::class],
31-
['binary_float', ColumnType::FLOAT, DoubleColumnSchema::class],
32-
['binary_double', ColumnType::DOUBLE, DoubleColumnSchema::class],
33-
['float', ColumnType::DOUBLE, DoubleColumnSchema::class],
34-
['date', ColumnType::DATE, StringColumnSchema::class],
35-
['interval day(0) to second', ColumnType::TIME, StringColumnSchema::class],
36-
['timestamp', ColumnType::TIMESTAMP, StringColumnSchema::class],
37-
['timestamp with time zone', ColumnType::TIMESTAMP, StringColumnSchema::class],
38-
['timestamp with local time zone', ColumnType::TIMESTAMP, StringColumnSchema::class],
19+
['char', ColumnType::CHAR, StringColumn::class],
20+
['nchar', ColumnType::CHAR, StringColumn::class],
21+
['varchar2', ColumnType::STRING, StringColumn::class],
22+
['nvarchar2', ColumnType::STRING, StringColumn::class],
23+
['clob', ColumnType::TEXT, StringColumn::class],
24+
['nclob', ColumnType::TEXT, StringColumn::class],
25+
['long', ColumnType::TEXT, StringColumn::class],
26+
['blob', ColumnType::BINARY, BinaryColumn::class],
27+
['bfile', ColumnType::BINARY, BinaryColumn::class],
28+
['long raw', ColumnType::BINARY, BinaryColumn::class],
29+
['raw', ColumnType::BINARY, BinaryColumn::class],
30+
['number', ColumnType::DOUBLE, DoubleColumn::class],
31+
['binary_float', ColumnType::FLOAT, DoubleColumn::class],
32+
['binary_double', ColumnType::DOUBLE, DoubleColumn::class],
33+
['float', ColumnType::DOUBLE, DoubleColumn::class],
34+
['date', ColumnType::DATE, StringColumn::class],
35+
['interval day(0) to second', ColumnType::TIME, StringColumn::class],
36+
['timestamp', ColumnType::TIMESTAMP, StringColumn::class],
37+
['timestamp with time zone', ColumnType::TIMESTAMP, StringColumn::class],
38+
['timestamp with local time zone', ColumnType::TIMESTAMP, StringColumn::class],
3939
];
4040
}
4141

tests/Provider/ColumnSchemaProvider.php renamed to tests/Provider/ColumnProvider.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@
44

55
namespace Yiisoft\Db\Oracle\Tests\Provider;
66

7-
use Yiisoft\Db\Oracle\Column\BinaryColumnSchema;
7+
use Yiisoft\Db\Oracle\Column\BinaryColumn;
88

9-
class ColumnSchemaProvider extends \Yiisoft\Db\Tests\Provider\ColumnSchemaProvider
9+
class ColumnProvider extends \Yiisoft\Db\Tests\Provider\ColumnProvider
1010
{
1111
public static function predefinedTypes(): array
1212
{
1313
$values = parent::predefinedTypes();
14-
$values['binary'][0] = BinaryColumnSchema::class;
14+
$values['binary'][0] = BinaryColumn::class;
1515

1616
return $values;
1717
}
1818

1919
public static function dbTypecastColumns(): array
2020
{
2121
$values = parent::dbTypecastColumns();
22-
$values['binary'][0] = BinaryColumnSchema::class;
22+
$values['binary'][0] = BinaryColumn::class;
2323

2424
return $values;
2525
}

0 commit comments

Comments
 (0)