Loading CHANGELOG.md +8 −0 Original line number Diff line number Diff line 1.2.0 (20/02/2025) ------------------ - Oracle : Build des indexs à l'update-bdd - Meilleure gestion des managers compilables - Refactorisation de l'exécution des requêtes collectées (interne) 1.1.2 (07/02/2025) ------------------ Loading src/Bdd.php +45 −56 Original line number Diff line number Diff line Loading @@ -789,6 +789,18 @@ class Bdd $queries = $this->alterDdlObject($manager, $action, [], $ddl[$ddlName]); if ($queries) { $this->logBegin($label); $this->execQueries($queries); $this->logEnd(); } } } } } public function execQueries(array $queries): void { foreach ($queries as $query => $desc) { $this->logMsg($desc); try { Loading @@ -799,11 +811,6 @@ class Bdd $this->logError($e); } } $this->logEnd(); } } } } } Loading Loading @@ -834,16 +841,7 @@ class Bdd $queries = $this->alterDdlObject($manager, $action, $manager->get($objectFilter), $objectDdl); if ($queries) { $this->logBegin($label); foreach ($queries as $query => $desc) { $this->logMsg($desc); try { $this->exec($query); } catch (BddCompileException $e) { // ne rien faire => traité après } catch (\Throwable $e) { $this->logError($e); } } $this->execQueries($queries); $this->logEnd(); } } Loading @@ -870,14 +868,7 @@ class Bdd $queries = $this->alterDdlObject($manager, 'drop', $ddl, []); if ($queries) { $this->logBegin($label); foreach ($queries as $query => $desc) { $this->logMsg($desc); try { $this->exec($query); } catch (\Throwable $e) { $this->logError($e); } } $this->execQueries($queries); $this->logEnd(); } } Loading Loading @@ -1132,40 +1123,38 @@ class Bdd public function compilerTout(): array public function compilerTout(): void { $compileTypes = [Ddl::PACKAGE, Ddl::VIEW, Ddl::TRIGGER]; $managers = []; foreach ($compileTypes as $compileType) { $manager = $this->manager($compileType); /** @var CompilableInterface[] $compilables */ $compilables = []; // Récupération de la liste des managers compilables $managers = $this->managerList(); foreach ($managers as $name => $null) { $manager = $this->manager($name); if ($manager instanceof CompilableInterface) { $managers[$compileType] = $manager; $compilables[$name] = $manager; } } $errors = []; if ($managers) { // S'il n'y en a pas on ne fait rien if (empty($compilables)) { return; } $this->logBegin("Compilation de tous les objets de la BDD"); $this->queryCollect = true; foreach ($managers as $compileType => $manager) { $list = $manager->getList(); foreach ($list as $name) { try { $this->logMsg("Compilation de $name ...", true); $manager->compiler($name); } catch (BddCompileException $e) { $errors[$compileType][$name] = $e->getMessage(); $this->logError($compileType . ' ' . $name . ' : Erreur de compilation'); } } } $this->logEnd("Fin de la compilation"); $this->queries = []; foreach ($compilables as $managerName => $manager) { $manager->compilerTout(); $this->execQueries($this->queries); $this->queries = []; $this->logMsg(" "); } return $errors; $this->queryCollect = false; $this->logEnd("Fin de la compilation"); } Loading src/Driver/Oracle/IndexManager.php +22 −1 Original line number Diff line number Diff line Loading @@ -3,10 +3,11 @@ namespace Unicaen\BddAdmin\Driver\Oracle; use Unicaen\BddAdmin\Manager\AbstractManager; use Unicaen\BddAdmin\Manager\CompilableInterface; use Unicaen\BddAdmin\Manager\IndexManagerInterface; use Unicaen\BddAdmin\Ddl\DdlFilter; class IndexManager extends AbstractManager implements IndexManagerInterface class IndexManager extends AbstractManager implements IndexManagerInterface, CompilableInterface { public function getList(?string $name = null): array { Loading Loading @@ -146,4 +147,24 @@ class IndexManager extends AbstractManager implements IndexManagerInterface $this->addQuery($sql, 'Renommage de l\'index ' . $oldName . ' en ' . $newName); } public function compiler(string|array $name): void { if ($this->sendEvent()->getReturn('no-exec')) return; if (is_array($name)) $name = $name['name']; $this->addQuery("ALTER INDEX $name REBUILD", 'Reconstruction de l\'index ' . $name); } public function compilerTout(): void { $objects = $this->getList(); foreach ($objects as $object) { $this->compiler($object); } } } No newline at end of file Loading
CHANGELOG.md +8 −0 Original line number Diff line number Diff line 1.2.0 (20/02/2025) ------------------ - Oracle : Build des indexs à l'update-bdd - Meilleure gestion des managers compilables - Refactorisation de l'exécution des requêtes collectées (interne) 1.1.2 (07/02/2025) ------------------ Loading
src/Bdd.php +45 −56 Original line number Diff line number Diff line Loading @@ -789,6 +789,18 @@ class Bdd $queries = $this->alterDdlObject($manager, $action, [], $ddl[$ddlName]); if ($queries) { $this->logBegin($label); $this->execQueries($queries); $this->logEnd(); } } } } } public function execQueries(array $queries): void { foreach ($queries as $query => $desc) { $this->logMsg($desc); try { Loading @@ -799,11 +811,6 @@ class Bdd $this->logError($e); } } $this->logEnd(); } } } } } Loading Loading @@ -834,16 +841,7 @@ class Bdd $queries = $this->alterDdlObject($manager, $action, $manager->get($objectFilter), $objectDdl); if ($queries) { $this->logBegin($label); foreach ($queries as $query => $desc) { $this->logMsg($desc); try { $this->exec($query); } catch (BddCompileException $e) { // ne rien faire => traité après } catch (\Throwable $e) { $this->logError($e); } } $this->execQueries($queries); $this->logEnd(); } } Loading @@ -870,14 +868,7 @@ class Bdd $queries = $this->alterDdlObject($manager, 'drop', $ddl, []); if ($queries) { $this->logBegin($label); foreach ($queries as $query => $desc) { $this->logMsg($desc); try { $this->exec($query); } catch (\Throwable $e) { $this->logError($e); } } $this->execQueries($queries); $this->logEnd(); } } Loading Loading @@ -1132,40 +1123,38 @@ class Bdd public function compilerTout(): array public function compilerTout(): void { $compileTypes = [Ddl::PACKAGE, Ddl::VIEW, Ddl::TRIGGER]; $managers = []; foreach ($compileTypes as $compileType) { $manager = $this->manager($compileType); /** @var CompilableInterface[] $compilables */ $compilables = []; // Récupération de la liste des managers compilables $managers = $this->managerList(); foreach ($managers as $name => $null) { $manager = $this->manager($name); if ($manager instanceof CompilableInterface) { $managers[$compileType] = $manager; $compilables[$name] = $manager; } } $errors = []; if ($managers) { // S'il n'y en a pas on ne fait rien if (empty($compilables)) { return; } $this->logBegin("Compilation de tous les objets de la BDD"); $this->queryCollect = true; foreach ($managers as $compileType => $manager) { $list = $manager->getList(); foreach ($list as $name) { try { $this->logMsg("Compilation de $name ...", true); $manager->compiler($name); } catch (BddCompileException $e) { $errors[$compileType][$name] = $e->getMessage(); $this->logError($compileType . ' ' . $name . ' : Erreur de compilation'); } } } $this->logEnd("Fin de la compilation"); $this->queries = []; foreach ($compilables as $managerName => $manager) { $manager->compilerTout(); $this->execQueries($this->queries); $this->queries = []; $this->logMsg(" "); } return $errors; $this->queryCollect = false; $this->logEnd("Fin de la compilation"); } Loading
src/Driver/Oracle/IndexManager.php +22 −1 Original line number Diff line number Diff line Loading @@ -3,10 +3,11 @@ namespace Unicaen\BddAdmin\Driver\Oracle; use Unicaen\BddAdmin\Manager\AbstractManager; use Unicaen\BddAdmin\Manager\CompilableInterface; use Unicaen\BddAdmin\Manager\IndexManagerInterface; use Unicaen\BddAdmin\Ddl\DdlFilter; class IndexManager extends AbstractManager implements IndexManagerInterface class IndexManager extends AbstractManager implements IndexManagerInterface, CompilableInterface { public function getList(?string $name = null): array { Loading Loading @@ -146,4 +147,24 @@ class IndexManager extends AbstractManager implements IndexManagerInterface $this->addQuery($sql, 'Renommage de l\'index ' . $oldName . ' en ' . $newName); } public function compiler(string|array $name): void { if ($this->sendEvent()->getReturn('no-exec')) return; if (is_array($name)) $name = $name['name']; $this->addQuery("ALTER INDEX $name REBUILD", 'Reconstruction de l\'index ' . $name); } public function compilerTout(): void { $objects = $this->getList(); foreach ($objects as $object) { $this->compiler($object); } } } No newline at end of file