diff --git a/src/Common/PdoObject/SqlPdoObject.php b/src/Common/PdoObject/SqlPdoObject.php index cc8c3f9..2c4919a 100644 --- a/src/Common/PdoObject/SqlPdoObject.php +++ b/src/Common/PdoObject/SqlPdoObject.php @@ -8,8 +8,8 @@ class SqlPdoObject extends \Ulmus\Common\PdoObject public function beginTransaction(): bool { - if ( 0 === ++$this->openedTransaction ) { - return parent::beginTransaction(); + if ( 0 === $this->openedTransaction++ ) { + return $this->openTransaction(); } return $this->exec('SAVEPOINT transaction_'.$this->openedTransaction) !== false; @@ -32,4 +32,9 @@ class SqlPdoObject extends \Ulmus\Common\PdoObject return parent::rollback(); } + + protected function openTransaction() : bool + { + return parent::beginTransaction(); + } } \ No newline at end of file diff --git a/src/Common/PdoObject/SqlitePdoObject.php b/src/Common/PdoObject/SqlitePdoObject.php index 377c7db..616d187 100644 --- a/src/Common/PdoObject/SqlitePdoObject.php +++ b/src/Common/PdoObject/SqlitePdoObject.php @@ -4,16 +4,23 @@ namespace Ulmus\Common\PdoObject; class SqlitePdoObject extends SqlPdoObject { - public function beginTransaction(): bool - { - if ( 0 === ++$this->openedTransaction ) { - return $this->beginImmediateTransaction(); - } + public bool $inTransaction = false; - return $this->exec('SAVEPOINT transaction_'.$this->openedTransaction) !== false; + public function inTransaction(): bool + { + return $this->openedTransaction > 0; } - protected function beginImmediateTransaction(): bool + public function commit(): bool + { + if ( 0 === --$this->openedTransaction) { + return $this->exec("COMMIT") !== false; + } + + return false; + } + + protected function openTransaction(): bool { return $this->exec("BEGIN IMMEDIATE TRANSACTION") !== false; }