Commit 2b07551e authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Amélioration de RunSQLProcess : petite désadhérance avec Oracle, nouveaux...

Amélioration de RunSQLProcess : petite désadhérance avec Oracle, nouveaux attributs dans RunSQLResult, correction d'un warning
parent fab5b530
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
CHANGELOG
=========

4.0.3
-----
- Amélioration du RunSQLProcess : petite désadhérance avec Oracle, nouveaux attributs dans RunSQLResult, correction d'un warning.

4.0.2 (15/12/2021)
------------------
- [FIX] uploader cassé : FormElementManagerV3Polyfill est deprecated et inutilisé, remplacé par FormElementManager
+4 −1
Original line number Diff line number Diff line
@@ -68,8 +68,11 @@ abstract class ProcessResult implements ProcessResultInterface

    public function __destruct()
    {
        // Test ajouté pour éviter l'étrange "Warning: fclose(): supplied resource is not a valid stream resource"
        if (is_resource($this->logStream)) {
            fclose($this->logStream);
        }
    }

    /**
     * Attache un logger pour stocker les éventuels logs qu'il génèrera.
+21 −3
Original line number Diff line number Diff line
@@ -4,15 +4,15 @@ namespace UnicaenApp\Service\SQL;

use Doctrine\DBAL\Connection;
use Exception;
use UnicaenApp\Exception\RuntimeException;
use Laminas\Log\LoggerAwareTrait;
use Laminas\Stdlib\Glob;
use UnicaenApp\Exception\RuntimeException;

class RunSQLProcess
{
    use LoggerAwareTrait;

    const QUERIES_SPLIT_PATTERN = "#^/$#m";
    const QUERIES_SPLIT_PATTERN = "#^/$#m"; // oracle !!
    const LOG_FILE_EXT = '.log.sql';
    const LOG_FILE_EXT_PATTERN = '.log.*.sql';
    const LOG_FILE_EXT_TEMPLATE = '.log.%d.sql';
@@ -32,6 +32,11 @@ class RunSQLProcess
     */
    private $connection;

    /**
     * @var string
     */
    private $queriesSplitPattern = self::QUERIES_SPLIT_PATTERN;

    /**
     * @var string[]
     */
@@ -75,6 +80,17 @@ class RunSQLProcess
        return $this;
    }

    /**
     * @param string $queriesSplitPattern
     * @return self
     */
    public function setQueriesSplitPattern($queriesSplitPattern)
    {
        $this->queriesSplitPattern = $queriesSplitPattern;

        return $this;
    }

    /**
     * Exécute dans la transaction courante toutes les instructions d'un script SQL.
     *
@@ -126,7 +142,7 @@ class RunSQLProcess
     */
    protected function extractQueriesFromScript()
    {
        $parts = preg_split(self::QUERIES_SPLIT_PATTERN, file_get_contents($this->scriptPath));
        $parts = preg_split($this->queriesSplitPattern, file_get_contents($this->scriptPath));
        $queries = array_filter(array_map('trim', $parts));

        if (count($queries) === 0) {
@@ -144,6 +160,8 @@ class RunSQLProcess
    private function executeQueries()
    {
        $result = new RunSQLResult();
        $result->setScriptPath($this->scriptPath);
        $result->setLogFilePath($this->logFilePath);
        $result->attachLogger($this->logger);
        $result->setIsSuccess(true);

+44 −0
Original line number Diff line number Diff line
@@ -11,5 +11,49 @@ use UnicaenApp\Process\ProcessResult;
 */
class RunSQLResult extends ProcessResult
{
    /**
     * @var string
     */
    protected $scriptPath;

    /**
     * @var string
     */
    protected $logFilePath;

    /**
     * @return string
     */
    public function getScriptPath()
    {
        return $this->scriptPath;
    }

    /**
     * @param string $scriptPath
     * @return self
     */
    public function setScriptPath($scriptPath)
    {
        $this->scriptPath = $scriptPath;
        return $this;
    }

    /**
     * @return string
     */
    public function getLogFilePath()
    {
        return $this->logFilePath;
    }

    /**
     * @param string $logFilePath
     * @return self
     */
    public function setLogFilePath($logFilePath)
    {
        $this->logFilePath = $logFilePath;
        return $this;
    }
}
 No newline at end of file