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
Loading
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
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)
------------------

+77 −17
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@

namespace Unicaen\BddAdmin;

use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Types\Types;
use Unicaen\BddAdmin\Data\DataManager;
use Unicaen\BddAdmin\Ddl\Ddl;
use Unicaen\BddAdmin\Ddl\DdlDiff;
@@ -127,6 +129,8 @@ class Bdd
    /** @var array|Bdd[] */
    private array $bdds = [];

    private ?Connection $doctrineConnection = null;

    private array $config;

    private ?DriverInterface $driver = null;
@@ -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
     * Si la classe n'est pas connue du container, alors elle est instanciée à l'aide de new
@@ -279,7 +298,11 @@ class Bdd

    public function beginTransaction(): self
    {
        if ($this->doctrineConnection) {
            $this->doctrineConnection->beginTransaction();
        } else {
            $this->driver->beginTransaction();
        }

        return $this;
    }
@@ -288,7 +311,11 @@ class Bdd

    public function commitTransaction(): self
    {
        if ($this->doctrineConnection) {
            $this->doctrineConnection->commit();
        } else {
            $this->driver->commitTransaction();
        }

        return $this;
    }
@@ -297,7 +324,11 @@ class Bdd

    public function rollbackTransaction(): self
    {
        if ($this->doctrineConnection) {
            $this->doctrineConnection->rollback();
        } else {
            $this->driver->rollbackTransaction();
        }

        return $this;
    }
@@ -306,7 +337,36 @@ class Bdd

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

        return $this;
    }