155 lines
5.0 KiB
PHP
155 lines
5.0 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.1.0
|
||
|
* @license https://opensource.org/licenses/mit-license.php MIT License
|
||
|
*/
|
||
|
namespace Cake\Datasource;
|
||
|
|
||
|
use Psr\Log\LoggerAwareInterface;
|
||
|
use Psr\Log\LoggerInterface;
|
||
|
use Psr\SimpleCache\CacheInterface;
|
||
|
|
||
|
/**
|
||
|
* This interface defines the methods you can depend on in
|
||
|
* a connection.
|
||
|
*
|
||
|
* @method object getDriver() Gets the driver instance. {@see \Cake\Database\Connnection::getDriver()}
|
||
|
* @method $this setLogger($logger) Set the current logger. {@see \Cake\Database\Connnection::setLogger()}
|
||
|
* @method bool supportsDynamicConstraints() Returns whether the driver supports adding or dropping constraints to
|
||
|
* already created tables. {@see \Cake\Database\Connnection::supportsDynamicConstraints()}
|
||
|
* @method \Cake\Database\Schema\Collection getSchemaCollection() Gets a Schema\Collection object for this connection.
|
||
|
* {@see \Cake\Database\Connnection::getSchemaCollection()}
|
||
|
* @method \Cake\Database\StatementInterface prepare($sql) Prepares a SQL statement to be executed.
|
||
|
* {@see \Cake\Database\Connnection::prepare()}
|
||
|
* @method \Cake\Database\StatementInterface execute($query, $params = [], array $types = []) Executes a query using
|
||
|
* `$params` for interpolating values and $types as a hint for each those params.
|
||
|
* {@see \Cake\Database\Connnection::execute()}
|
||
|
* @method \Cake\Database\StatementInterface query(string $sql) Executes a SQL statement and returns the Statement
|
||
|
* object as result. {@see \Cake\Database\Connnection::query()}
|
||
|
*/
|
||
|
interface ConnectionInterface extends LoggerAwareInterface
|
||
|
{
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
public const ROLE_WRITE = 'write';
|
||
|
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
public const ROLE_READ = 'read';
|
||
|
|
||
|
/**
|
||
|
* Gets the current logger object.
|
||
|
*
|
||
|
* @return \Psr\Log\LoggerInterface logger instance
|
||
|
*/
|
||
|
public function getLogger(): LoggerInterface;
|
||
|
|
||
|
/**
|
||
|
* Set a cacher.
|
||
|
*
|
||
|
* @param \Psr\SimpleCache\CacheInterface $cacher Cacher object
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function setCacher(CacheInterface $cacher);
|
||
|
|
||
|
/**
|
||
|
* Get a cacher.
|
||
|
*
|
||
|
* @return \Psr\SimpleCache\CacheInterface $cacher Cacher object
|
||
|
*/
|
||
|
public function getCacher(): CacheInterface;
|
||
|
|
||
|
/**
|
||
|
* Get the configuration name for this connection.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function configName(): string;
|
||
|
|
||
|
/**
|
||
|
* Get the configuration data used to create the connection.
|
||
|
*
|
||
|
* @return array<string, mixed>
|
||
|
*/
|
||
|
public function config(): array;
|
||
|
|
||
|
/**
|
||
|
* Executes a callable function inside a transaction, if any exception occurs
|
||
|
* while executing the passed callable, the transaction will be rolled back
|
||
|
* If the result of the callable function is `false`, the transaction will
|
||
|
* also be rolled back. Otherwise, the transaction is committed after executing
|
||
|
* the callback.
|
||
|
*
|
||
|
* The callback will receive the connection instance as its first argument.
|
||
|
*
|
||
|
* ### Example:
|
||
|
*
|
||
|
* ```
|
||
|
* $connection->transactional(function ($connection) {
|
||
|
* $connection->newQuery()->delete('users')->execute();
|
||
|
* });
|
||
|
* ```
|
||
|
*
|
||
|
* @param callable $callback The callback to execute within a transaction.
|
||
|
* @return mixed The return value of the callback.
|
||
|
* @throws \Exception Will re-throw any exception raised in $callback after
|
||
|
* rolling back the transaction.
|
||
|
*/
|
||
|
public function transactional(callable $callback);
|
||
|
|
||
|
/**
|
||
|
* Run an operation with constraints disabled.
|
||
|
*
|
||
|
* Constraints should be re-enabled after the callback succeeds/fails.
|
||
|
*
|
||
|
* ### Example:
|
||
|
*
|
||
|
* ```
|
||
|
* $connection->disableConstraints(function ($connection) {
|
||
|
* $connection->newQuery()->delete('users')->execute();
|
||
|
* });
|
||
|
* ```
|
||
|
*
|
||
|
* @param callable $callback The callback to execute within a transaction.
|
||
|
* @return mixed The return value of the callback.
|
||
|
* @throws \Exception Will re-throw any exception raised in $callback after
|
||
|
* rolling back the transaction.
|
||
|
*/
|
||
|
public function disableConstraints(callable $callback);
|
||
|
|
||
|
/**
|
||
|
* Enable/disable query logging
|
||
|
*
|
||
|
* @param bool $enable Enable/disable query logging
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function enableQueryLogging(bool $enable = true);
|
||
|
|
||
|
/**
|
||
|
* Disable query logging
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function disableQueryLogging();
|
||
|
|
||
|
/**
|
||
|
* Check if query logging is enabled.
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function isQueryLoggingEnabled(): bool;
|
||
|
}
|