284 lines
6.5 KiB
PHP
284 lines
6.5 KiB
PHP
|
<?php
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
/**
|
||
|
* CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
|
||
|
* Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
|
||
|
*
|
||
|
* Licensed under The MIT License
|
||
|
* For full copyright and license information, please see the LICENSE.txt
|
||
|
* Redistributions of files must retain the above copyright notice.
|
||
|
*
|
||
|
* @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
|
||
|
* @link https://cakephp.org CakePHP(tm) Project
|
||
|
* @since 3.5.0
|
||
|
* @license https://www.opensource.org/licenses/mit-license.php MIT License
|
||
|
*/
|
||
|
namespace Cake\Database\Schema;
|
||
|
|
||
|
use Cake\Datasource\SchemaInterface;
|
||
|
|
||
|
/**
|
||
|
* An interface used by database TableSchema objects.
|
||
|
*/
|
||
|
interface TableSchemaInterface extends SchemaInterface
|
||
|
{
|
||
|
/**
|
||
|
* Binary column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_BINARY = 'binary';
|
||
|
|
||
|
/**
|
||
|
* Binary UUID column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_BINARY_UUID = 'binaryuuid';
|
||
|
|
||
|
/**
|
||
|
* Date column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_DATE = 'date';
|
||
|
|
||
|
/**
|
||
|
* Datetime column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_DATETIME = 'datetime';
|
||
|
|
||
|
/**
|
||
|
* Datetime with fractional seconds column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_DATETIME_FRACTIONAL = 'datetimefractional';
|
||
|
|
||
|
/**
|
||
|
* Time column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_TIME = 'time';
|
||
|
|
||
|
/**
|
||
|
* Timestamp column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_TIMESTAMP = 'timestamp';
|
||
|
|
||
|
/**
|
||
|
* Timestamp with fractional seconds column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_TIMESTAMP_FRACTIONAL = 'timestampfractional';
|
||
|
|
||
|
/**
|
||
|
* Timestamp with time zone column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_TIMESTAMP_TIMEZONE = 'timestamptimezone';
|
||
|
|
||
|
/**
|
||
|
* JSON column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_JSON = 'json';
|
||
|
|
||
|
/**
|
||
|
* String column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_STRING = 'string';
|
||
|
|
||
|
/**
|
||
|
* Char column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_CHAR = 'char';
|
||
|
|
||
|
/**
|
||
|
* Text column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_TEXT = 'text';
|
||
|
|
||
|
/**
|
||
|
* Tiny Integer column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_TINYINTEGER = 'tinyinteger';
|
||
|
|
||
|
/**
|
||
|
* Small Integer column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_SMALLINTEGER = 'smallinteger';
|
||
|
|
||
|
/**
|
||
|
* Integer column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_INTEGER = 'integer';
|
||
|
|
||
|
/**
|
||
|
* Big Integer column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_BIGINTEGER = 'biginteger';
|
||
|
|
||
|
/**
|
||
|
* Float column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_FLOAT = 'float';
|
||
|
|
||
|
/**
|
||
|
* Decimal column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_DECIMAL = 'decimal';
|
||
|
|
||
|
/**
|
||
|
* Boolean column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_BOOLEAN = 'boolean';
|
||
|
|
||
|
/**
|
||
|
* UUID column type
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public const TYPE_UUID = 'uuid';
|
||
|
|
||
|
/**
|
||
|
* Check whether a table has an autoIncrement column defined.
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function hasAutoincrement(): bool;
|
||
|
|
||
|
/**
|
||
|
* Sets whether the table is temporary in the database.
|
||
|
*
|
||
|
* @param bool $temporary Whether the table is to be temporary.
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function setTemporary(bool $temporary);
|
||
|
|
||
|
/**
|
||
|
* Gets whether the table is temporary in the database.
|
||
|
*
|
||
|
* @return bool The current temporary setting.
|
||
|
*/
|
||
|
public function isTemporary(): bool;
|
||
|
|
||
|
/**
|
||
|
* Get the column(s) used for the primary key.
|
||
|
*
|
||
|
* @return array<string> Column name(s) for the primary key. An
|
||
|
* empty list will be returned when the table has no primary key.
|
||
|
*/
|
||
|
public function getPrimaryKey(): array;
|
||
|
|
||
|
/**
|
||
|
* Add an index.
|
||
|
*
|
||
|
* Used to add indexes, and full text indexes in platforms that support
|
||
|
* them.
|
||
|
*
|
||
|
* ### Attributes
|
||
|
*
|
||
|
* - `type` The type of index being added.
|
||
|
* - `columns` The columns in the index.
|
||
|
*
|
||
|
* @param string $name The name of the index.
|
||
|
* @param array<string, mixed>|string $attrs The attributes for the index.
|
||
|
* If string it will be used as `type`.
|
||
|
* @return $this
|
||
|
* @throws \Cake\Database\Exception\DatabaseException
|
||
|
*/
|
||
|
public function addIndex(string $name, $attrs);
|
||
|
|
||
|
/**
|
||
|
* Read information about an index based on name.
|
||
|
*
|
||
|
* @param string $name The name of the index.
|
||
|
* @return array<string, mixed>|null Array of index data, or null
|
||
|
*/
|
||
|
public function getIndex(string $name): ?array;
|
||
|
|
||
|
/**
|
||
|
* Get the names of all the indexes in the table.
|
||
|
*
|
||
|
* @return array<string>
|
||
|
*/
|
||
|
public function indexes(): array;
|
||
|
|
||
|
/**
|
||
|
* Add a constraint.
|
||
|
*
|
||
|
* Used to add constraints to a table. For example primary keys, unique
|
||
|
* keys and foreign keys.
|
||
|
*
|
||
|
* ### Attributes
|
||
|
*
|
||
|
* - `type` The type of constraint being added.
|
||
|
* - `columns` The columns in the index.
|
||
|
* - `references` The table, column a foreign key references.
|
||
|
* - `update` The behavior on update. Options are 'restrict', 'setNull', 'cascade', 'noAction'.
|
||
|
* - `delete` The behavior on delete. Options are 'restrict', 'setNull', 'cascade', 'noAction'.
|
||
|
*
|
||
|
* The default for 'update' & 'delete' is 'cascade'.
|
||
|
*
|
||
|
* @param string $name The name of the constraint.
|
||
|
* @param array<string, mixed>|string $attrs The attributes for the constraint.
|
||
|
* If string it will be used as `type`.
|
||
|
* @return $this
|
||
|
* @throws \Cake\Database\Exception\DatabaseException
|
||
|
*/
|
||
|
public function addConstraint(string $name, $attrs);
|
||
|
|
||
|
/**
|
||
|
* Read information about a constraint based on name.
|
||
|
*
|
||
|
* @param string $name The name of the constraint.
|
||
|
* @return array<string, mixed>|null Array of constraint data, or null
|
||
|
*/
|
||
|
public function getConstraint(string $name): ?array;
|
||
|
|
||
|
/**
|
||
|
* Remove a constraint.
|
||
|
*
|
||
|
* @param string $name Name of the constraint to remove
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function dropConstraint(string $name);
|
||
|
|
||
|
/**
|
||
|
* Get the names of all the constraints in the table.
|
||
|
*
|
||
|
* @return array<string>
|
||
|
*/
|
||
|
public function constraints(): array;
|
||
|
}
|