Skip to content
Snippets Groups Projects
Commit cb7e5bc1 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Possibilité d'utiliser Connection de Doctrine pour faire des requêtes en...

Possibilité d'utiliser Connection de Doctrine pour faire des requêtes en modification (pb Oracle gestion des transactions)
parent eae9089a
No related branches found
No related tags found
No related merge requests found
Pipeline #35064 passed
1.1.0 (30/01/2025)
------------------
- Possibilité d'utiliser Connection de Doctrine pour faire des requêtes en modification (pb Oracle gestion des transactions)
1.0.6 (05/12/2024) 1.0.6 (05/12/2024)
------------------ ------------------
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
namespace Unicaen\BddAdmin; namespace Unicaen\BddAdmin;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Types\Types;
use Unicaen\BddAdmin\Data\DataManager; use Unicaen\BddAdmin\Data\DataManager;
use Unicaen\BddAdmin\Ddl\Ddl; use Unicaen\BddAdmin\Ddl\Ddl;
use Unicaen\BddAdmin\Ddl\DdlDiff; use Unicaen\BddAdmin\Ddl\DdlDiff;
...@@ -127,6 +129,8 @@ class Bdd ...@@ -127,6 +129,8 @@ class Bdd
/** @var array|Bdd[] */ /** @var array|Bdd[] */
private array $bdds = []; private array $bdds = [];
private ?Connection $doctrineConnection = null;
private array $config; private array $config;
private ?DriverInterface $driver = null; private ?DriverInterface $driver = null;
...@@ -177,6 +181,21 @@ class Bdd ...@@ -177,6 +181,21 @@ class Bdd
public function getDoctrineConnection(): ?Connection
{
return $this->doctrineConnection;
}
public function setDoctrineConnection(?Connection $doctrineConnection): Bdd
{
$this->doctrineConnection = $doctrineConnection;
return $this;
}
/** /**
* Hack pour initialiser une classe à partir d'un container respectant Psr\Container\ContainerInterface * Hack pour initialiser une classe à partir d'un container respectant Psr\Container\ContainerInterface
* Si la classe n'est pas connue du container, alors elle est instanciée à l'aide de new * Si la classe n'est pas connue du container, alors elle est instanciée à l'aide de new
...@@ -279,7 +298,11 @@ class Bdd ...@@ -279,7 +298,11 @@ class Bdd
public function beginTransaction(): self public function beginTransaction(): self
{ {
if ($this->doctrineConnection) {
$this->doctrineConnection->beginTransaction();
} else {
$this->driver->beginTransaction(); $this->driver->beginTransaction();
}
return $this; return $this;
} }
...@@ -288,7 +311,11 @@ class Bdd ...@@ -288,7 +311,11 @@ class Bdd
public function commitTransaction(): self public function commitTransaction(): self
{ {
if ($this->doctrineConnection) {
$this->doctrineConnection->commit();
} else {
$this->driver->commitTransaction(); $this->driver->commitTransaction();
}
return $this; return $this;
} }
...@@ -297,7 +324,11 @@ class Bdd ...@@ -297,7 +324,11 @@ class Bdd
public function rollbackTransaction(): self public function rollbackTransaction(): self
{ {
if ($this->doctrineConnection) {
$this->doctrineConnection->rollback();
} else {
$this->driver->rollbackTransaction(); $this->driver->rollbackTransaction();
}
return $this; return $this;
} }
...@@ -306,7 +337,36 @@ class Bdd ...@@ -306,7 +337,36 @@ class Bdd
public function exec(string $sql, array $params = [], array $types = []): self public function exec(string $sql, array $params = [], array $types = []): self
{ {
if ($this->doctrineConnection) {
foreach ($types as $ti => $tv) {
switch ($tv) {
case self::TYPE_INT:
$types[$ti] = Types::INTEGER;
break;
case self::TYPE_BOOL:
$types[$ti] = Types::BOOLEAN;
break;
case self::TYPE_FLOAT:
$types[$ti] = Types::FLOAT;
break;
case self::TYPE_STRING:
$types[$ti] = Types::STRING;
break;
case self::TYPE_DATE:
$types[$ti] = Types::DATETIME_IMMUTABLE;
break;
case self::TYPE_BLOB:
$types[$ti] = Types::BLOB;
break;
case self::TYPE_CLOB:
$types[$ti] = Types::TEXT;
break;
}
}
$this->doctrineConnection->executeStatement($sql, $params);
} else {
$this->driver->exec($sql, $params, $types); $this->driver->exec($sql, $params, $types);
}
return $this; return $this;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment