chore: Аннотации к типам
This commit is contained in:
parent
530a3b931d
commit
730a608f9b
27 changed files with 491 additions and 134 deletions
|
|
@ -9,18 +9,28 @@ namespace {
|
|||
}
|
||||
|
||||
namespace ctiso {
|
||||
use PDO,
|
||||
ctiso\Database\Statement,
|
||||
ctiso\Database\PDOStatement,
|
||||
ctiso\Database\IdGenerator;
|
||||
|
||||
use PDO;
|
||||
use ctiso\Database\Statement;
|
||||
use ctiso\Database\PDOStatement;
|
||||
use ctiso\Database\IdGenerator;
|
||||
|
||||
/**
|
||||
* Класс оболочка для PDO для замены Creole
|
||||
* @phpstan-type DSN = array{phptype: string, hostspec: string, database: string, username: string, password: string}
|
||||
*/
|
||||
class Database extends PDO
|
||||
{
|
||||
|
||||
/** @var DSN */
|
||||
public $dsn;
|
||||
|
||||
/**
|
||||
* Создает соединение с базой данных
|
||||
* @param string $dsn - DSN
|
||||
* @param string|null $username - имя пользователя
|
||||
* @param string|null $password - пароль
|
||||
*/
|
||||
public function __construct($dsn, $username = null, $password = null)
|
||||
{
|
||||
parent::__construct($dsn, $username, $password);
|
||||
|
|
@ -36,16 +46,27 @@ namespace ctiso {
|
|||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает DSN
|
||||
* @return DSN
|
||||
*/
|
||||
public function getDSN()
|
||||
{
|
||||
return $this->dsn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает true, если база данных Postgres
|
||||
* @return bool
|
||||
*/
|
||||
public function isPostgres()
|
||||
{
|
||||
return ($this->dsn["phptype"] == "pgsql");
|
||||
}
|
||||
/**
|
||||
* Создает соединение с базой данных
|
||||
* @param array $dsn - DSN
|
||||
* @return Database|null
|
||||
*/
|
||||
static function getConnection(array $dsn)
|
||||
{
|
||||
|
|
@ -76,6 +97,11 @@ namespace ctiso {
|
|||
return $connection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Выполняет запрос к базе данных
|
||||
* @param string $query - запрос
|
||||
* @param array $values - значения
|
||||
*/
|
||||
public function executeQuery($query, $values = null): PDOStatement|bool
|
||||
{
|
||||
$stmt = $this->prepare($query);
|
||||
|
|
@ -85,14 +111,20 @@ namespace ctiso {
|
|||
return $stmt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создает подготовленный запрос
|
||||
* @param string $query - запрос
|
||||
*/
|
||||
public function prepareStatement($query)
|
||||
{
|
||||
return new Statement($query, $this);
|
||||
}
|
||||
|
||||
// Для совместимости со старым представлением баз данных CIS
|
||||
/**
|
||||
* Извлекает из базы все элементы по запросу
|
||||
* Извлекает из базы все элементы по запросу (Для совместимости со старым представлением баз данных CIS)
|
||||
* @param string $query - запрос
|
||||
* @param array $values - значения
|
||||
* @return array
|
||||
*/
|
||||
public function fetchAllArray($query, $values = null)
|
||||
{
|
||||
|
|
@ -104,6 +136,9 @@ namespace ctiso {
|
|||
|
||||
/**
|
||||
* Извлекает из базы первый элемент по запросу
|
||||
* @param string $query - запрос
|
||||
* @param array $values - значения
|
||||
* @return array|false
|
||||
*/
|
||||
public function fetchOneArray($query, $values = null)
|
||||
{
|
||||
|
|
@ -113,6 +148,11 @@ namespace ctiso {
|
|||
return $sth->fetch(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Преобразует значения в подготовленные значения
|
||||
* @param array $values - значения
|
||||
* @return ?array<string, string>
|
||||
*/
|
||||
private function prepareValues($values)
|
||||
{
|
||||
if (!$values) {
|
||||
|
|
@ -135,8 +175,14 @@ namespace ctiso {
|
|||
}
|
||||
return $prep;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создает INSERT запрос
|
||||
* @param string $table - таблица
|
||||
* @param array $values - значения
|
||||
* @param bool $return_id - возвращать id
|
||||
* @param string $index - индекс
|
||||
* @return int|mixed
|
||||
*/
|
||||
function insertQuery($table, array $values, $return_id = false, $index = null)
|
||||
{
|
||||
|
|
@ -165,6 +211,9 @@ namespace ctiso {
|
|||
|
||||
/**
|
||||
* Создает UPDATE запрос
|
||||
* @param string $table - таблица
|
||||
* @param array $values - значения
|
||||
* @param string $cond - условие
|
||||
*/
|
||||
function updateQuery($table, array $values, $cond)
|
||||
{
|
||||
|
|
@ -180,6 +229,10 @@ namespace ctiso {
|
|||
$stmt->execute($prep);
|
||||
}
|
||||
|
||||
/**
|
||||
* Создает генератор идентификаторов
|
||||
* @return IdGenerator
|
||||
*/
|
||||
function getIdGenerator()
|
||||
{
|
||||
return new IdGenerator($this);
|
||||
|
|
@ -196,9 +249,11 @@ namespace ctiso {
|
|||
return $result['nextval'];
|
||||
}
|
||||
|
||||
function close()
|
||||
/**
|
||||
* Закрывает соединение с базой данных
|
||||
*/
|
||||
function close(): void
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue