chore: Аннотации к типам

This commit is contained in:
origami11@yandex.ru 2025-10-23 15:54:14 +03:00
parent 530a3b931d
commit 730a608f9b
27 changed files with 491 additions and 134 deletions

View file

@ -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;
}
}
}