modifs.mineures sans commentaires
This commit is contained in:
parent
5c6d55ed46
commit
ebbd9e06c0
@ -7,6 +7,7 @@ use nulib\db\_private\Tvalues;
|
|||||||
use nulib\db\IDatabase;
|
use nulib\db\IDatabase;
|
||||||
use nulib\db\ITransactor;
|
use nulib\db\ITransactor;
|
||||||
use nulib\php\func;
|
use nulib\php\func;
|
||||||
|
use nulib\ValueException;
|
||||||
|
|
||||||
class Pgsql implements IDatabase {
|
class Pgsql implements IDatabase {
|
||||||
use Tvalues;
|
use Tvalues;
|
||||||
@ -163,28 +164,82 @@ class Pgsql implements IDatabase {
|
|||||||
return $this->db;
|
return $this->db;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return resource|false
|
||||||
|
*/
|
||||||
|
function _exec(string $query) {
|
||||||
|
return pg_query($this->db(), $query);
|
||||||
|
}
|
||||||
|
|
||||||
function exec($query, ?array $params=null) {
|
function exec($query, ?array $params=null) {
|
||||||
// TODO: Implement exec() method.
|
// TODO: Implement exec() method.
|
||||||
}
|
}
|
||||||
|
|
||||||
function willUpdate(...$transactors): \nulib\db\ITransactor {
|
/** @var ITransactor[] */
|
||||||
// TODO: Implement willUpdate() method.
|
protected ?array $transactors = null;
|
||||||
|
|
||||||
|
function willUpdate(...$transactors): self {
|
||||||
|
foreach ($transactors as $transactor) {
|
||||||
|
if ($transactor instanceof ITransactor) {
|
||||||
|
$this->transactors[] = $transactor;
|
||||||
|
$transactor->willUpdate();
|
||||||
|
} else {
|
||||||
|
throw ValueException::invalid_type($transactor, ITransactor::class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
function inTransaction(): bool {
|
function inTransaction(?bool &$inerror=null): bool {
|
||||||
// TODO: Implement inTransaction() method.
|
$status = pg_transaction_status($this->db());
|
||||||
|
if ($status === PGSQL_TRANSACTION_ACTIVE || $status === PGSQL_TRANSACTION_INTRANS) {
|
||||||
|
$inerror = false;
|
||||||
|
return true;
|
||||||
|
} elseif ($status === PGSQL_TRANSACTION_INERROR) {
|
||||||
|
$inerror = true;
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function beginTransaction(?callable $func=null, bool $commit=true): void {
|
function beginTransaction(?callable $func=null, bool $commit=true): void {
|
||||||
// TODO: Implement beginTransaction() method.
|
$this->_exec("begin");
|
||||||
|
if ($this->transactors !== null) {
|
||||||
|
foreach ($this->transactors as $transactor) {
|
||||||
|
$transactor->beginTransaction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($func !== null) {
|
||||||
|
$commited = false;
|
||||||
|
try {
|
||||||
|
func::call($func, $this);
|
||||||
|
if ($commit) {
|
||||||
|
$this->commit();
|
||||||
|
$commited = true;
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if ($commit && !$commited) $this->rollback();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function commit(): void {
|
function commit(): void {
|
||||||
// TODO: Implement commit() method.
|
$this->_exec("commit");
|
||||||
|
if ($this->transactors !== null) {
|
||||||
|
foreach ($this->transactors as $transactor) {
|
||||||
|
$transactor->commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function rollback(): void {
|
function rollback(): void {
|
||||||
// TODO: Implement rollback() method.
|
$this->_exec("rollback");
|
||||||
|
if ($this->transactors !== null) {
|
||||||
|
foreach ($this->transactors as $transactor) {
|
||||||
|
$transactor->rollback();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function get($query, ?array $params=null, bool $entireRow=false) {
|
function get($query, ?array $params=null, bool $entireRow=false) {
|
||||||
|
Loading…
Reference in New Issue
Block a user