Commit 25760355 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Correction de la méthode naïve pour extraire les requêtes contenues dans le...

Correction de la méthode naïve pour extraire les requêtes contenues dans le script. Déplacement de code.
parent 62166c94
Pipeline #4812 failed with stage
in 9 seconds
......@@ -47,6 +47,7 @@ class ConsoleController extends AbstractConsoleController
$this->runSQLService->setLogger($logger);
$result = $this->runSQLService->runSQLScript($path, $conn, $logFilepath);
$logger->info($result->isSuccess() ? "Exécution terminée avec succès." : "/!\ UNE ERREUR A ÉTÉ RENCONTRÉE /!\ ");
$logger->info("Durée : " . $result->getDurationInSec() . " sec");
}
......
......@@ -85,8 +85,6 @@ class RunSQLProcess
$logFilePath = $this->logQueries();
$this->logger->info("'--> Logs : " . $logFilePath);
$this->logger->info($result->isSuccess() ? "Exécution terminée avec succès." : "Une erreur a été rencontrée!");
return $result;
}
......@@ -105,8 +103,6 @@ class RunSQLProcess
$logFilePath = $this->logQueries();
$this->logger->info("'--> Logs : " . $logFilePath);
$this->logger->info($result->isSuccess() ? "Exécution terminée avec succès." : "Une erreur a été rencontrée!");
return $result;
}
......@@ -127,7 +123,8 @@ class RunSQLProcess
*/
protected function extractQueriesFromScript()
{
$queries = array_filter(array_map('trim', explode('/', file_get_contents($this->scriptPath))));
$parts = preg_split("#^/$#m", file_get_contents($this->scriptPath));
$queries = array_filter(array_map('trim', $parts));
if (count($queries) === 0) {
throw new RuntimeException("Aucune requête trouvée dans le script '$this->scriptPath'");
......
......@@ -18,12 +18,12 @@ class RunSQLService
* Exécute le script spécifié par son chemin.
*
* NB: Les requêtes doivent pouvoir être extraites afin de les exécuter une par une. Pour cela, vous devez donc
* utiliser dans vos scripts SQL le caractère de fin '/' et mettre un ';' seulement où c'est indispensable.
* terminer chaque requête par une nouvelle ligne ne contenant que le caractère '/'.
*
* Exemple de script Oracle acceptable :
* <code>
* insert into API_LOG (ID, REQ_URI, REQ_START_DATE, REQ_END_DATE, REQ_STATUS, REQ_RESPONSE, REQ_TABLE)
* select API_LOG_ID_SEQ.nextval, 'xxxxx', sysdate, sysdate, 'test', 'hello!!', 'TEST' from dual
* select API_LOG_ID_SEQ.nextval, 'http://xyz.xx', sysdate, sysdate, 'test', 'hello!!', 'TEST' from dual
* /
*
* declare
......@@ -31,7 +31,7 @@ class RunSQLService
* begin
* select sysdate into d from dual;
* insert into API_LOG(ID, REQ_URI, REQ_START_DATE, REQ_END_DATE, REQ_STATUS, REQ_RESPONSE, REQ_TABLE)
* select API_LOG_ID_SEQ.nextval, 'yyyyy', d, d, 'test', 'hello!!', 'TEST' from dual;
* select API_LOG_ID_SEQ.nextval, 'http://xyz.xx', d, d, 'test', 'hello/bonjour!!', 'TEST' from dual;
* end;
* /
*
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment