Commit 67bfb1ea authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

divers

parent a561e1fc
Loading
Loading
Loading
Loading
Loading
+24 −20
Original line number Diff line number Diff line
@@ -46,22 +46,6 @@ class Bdd
    const TYPE_BLOB   = 'blob';
    const TYPE_CLOB   = 'clob';

    private array $ddlTypes = [
        Ddl::SEQUENCE,
        Ddl::TABLE,
        Ddl::PRIMARY_CONSTRAINT,
        Ddl::FUNCTION,
        Ddl::PROCEDURE,
        Ddl::PACKAGE,
        Ddl::VIEW,
        Ddl::MATERIALIZED_VIEW,
        Ddl::REF_CONSTRAINT,
        Ddl::UNIQUE_CONSTRAINT,
        Ddl::TRIGGER,
        Ddl::INDEX,
        Ddl::SCHEMA,
    ];

    private array $changements = [
        Ddl::SCHEMA . '.create'             => 'Création des schémas',
        Ddl::SEQUENCE . '.rename'           => 'Renommage des séquences',
@@ -355,6 +339,24 @@ class Bdd



    /**
     * Retourne la liste des managers de la base de données
     */
    public function managerList(): array
    {
        $managers = [];
        foreach (Ddl::types() as $type => $libelle) {
            $manager = $this->manager($type);
            if (!$manager instanceof VoidManager) {
                $managers[$type] = $libelle;
            }
        }

        return $managers;
    }



    public function hasOption(string $name): bool
    {
        return array_key_exists($name, $this->options);
@@ -516,10 +518,12 @@ class Bdd
        $this->logBegin("Récupération de la DDL");
        $filters = DdlFilters::normalize($filters);
        $ddl = new Ddl();
        foreach ($this->ddlTypes as $type) {
        $managers = $this->managerList();
        foreach ($managers as $type => $libelle) {
            if (!($filters->isExplicit() && $filters->get($type)->isEmpty())) {
                $this->logMsg('Traitement des objets de type ' . $type . ' ...', true);
                $ddl->set($type, $this->manager($type)->get($filters[$type]));
                $this->logMsg('Traitement des ' . $libelle . ' ...', true);
                $manager = $this->manager($type);
                $ddl->set($type, $manager->get($filters[$type]));
            }
        }
        $this->logEnd();
@@ -803,8 +807,8 @@ class Bdd
        $cc = count($this->changements);
        $c = 0;
        foreach ($this->changements as $changement => $label) {
            $manager = $this->manager($ddlName);
            [$ddlName, $action] = explode('.', $changement);
            $manager = $this->manager($ddlName);
            if (!$manager instanceof VoidManager) {
                $c++;
                $queries = $this->alterDdlObject($manager, $action, $src[$ddlName] ?: [], $dest[$ddlName] ?: []);
+21 −0
Original line number Diff line number Diff line
@@ -39,6 +39,27 @@ class Ddl implements \Iterator, \ArrayAccess



    public static function types(): array
    {
        return [
            self::SEQUENCE           => 'séquences',
            self::TABLE              => 'tables',
            self::PRIMARY_CONSTRAINT => 'contraintes de clés primaires',
            self::FUNCTION           => 'fonctions',
            self::PROCEDURE          => 'procédures',
            self::PACKAGE            => 'packages',
            self::VIEW               => 'vues',
            self::MATERIALIZED_VIEW  => 'vues matérialisées',
            self::REF_CONSTRAINT     => 'contraintes de clés étrangères',
            self::UNIQUE_CONSTRAINT  => 'contraintes d\'unicité',
            self::TRIGGER            => 'déclencheurs',
            self::INDEX              => 'indexs',
            self::SCHEMA             => 'schémas',
        ];
    }



    /**
     * @param string $name
     * @param array $data
+2 −3
Original line number Diff line number Diff line
@@ -4,11 +4,10 @@ namespace Unicaen\BddAdmin\Driver\Oracle;

use Unicaen\BddAdmin\Bdd;
use Unicaen\BddAdmin\Manager\AbstractManager;
use Unicaen\BddAdmin\Manager\CompilableInterface;
use Unicaen\BddAdmin\Manager\MaterializedViewManagerInteface;
use Unicaen\BddAdmin\Ddl\DdlFilter;

class MaterializedViewManager extends AbstractManager implements MaterializedViewManagerInteface, CompilableInterface
class MaterializedViewManager extends AbstractManager implements MaterializedViewManagerInteface
{
    public function getList(): array
    {
@@ -124,7 +123,7 @@ class MaterializedViewManager extends AbstractManager implements MaterializedVie
    /**
     * @param string|array $name
     */
    public function refresh($name)
    public function refresh($name): void
    {
        if (is_array($name)) {
            $name = $name['name'];
+3 −0
Original line number Diff line number Diff line
@@ -57,6 +57,9 @@ class Table
            $sTable    = $this->getBdd()->table();
            $this->ddl = $sTable->get($this->name)[$this->name];
        }
        if (!$this->ddl){
            throw new \Exception('La DDL de la table '.$this->name.' n\'a pas pu être calculée');
        }

        return $this->ddl;
    }