Commit f7be6752 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

init-update-bdd-filters en place

parent e46978e6
Loading
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -24,11 +24,20 @@ return [

            /* array des filtres dédié à la mise à jour de la base de données à partir de la DDL
             * le format d'array doit respecter la spécification des DdlFilters
             * pour les update-bdd, le mode EXPLICIT est forcé : c'est à dire que ce qui n'est pas spécifié dans le filtre n'existe pas
             * le filtre est initialisé avec les objets déjà présents en DDL
             * pour les update-bdd, si init-update-bdd-filters est à true :
             * - le mode EXPLICIT est forcé : c'est à dire que ce qui n'est pas spécifié dans le filtre n'existe pas
             * - le filtre est initialisé avec les objets déjà présents en DDL
             * - les tables présentes dans la BD sont ajoutées afin de ne pas être supprimées si elles ne sont pas en DDL (protection contre des suppressions involontaires)
             */
            'update-bdd-filters'     => [],

            /*
             * si true, alors le mode explicit est forcé, le filtre est peuplé avec la DDL + les tables déjà présentes dans la base de données
             * Ce mode est plus sûr.
             * Si false, alors les filtres utilisés seront strictement ceux fournis par filters & update-bdd-filters  
             */
            'init-update-bdd-filters' => true,
            
            /* array des filtres dédié à la mise à jour de la DDL, afin d'éviter que ne se retrouvent en DDL certains objets présents en base
             * le format d'array doit respecter la spécification des DdlFilters 
             */
+8 −5
Original line number Diff line number Diff line
@@ -558,13 +558,16 @@ class Bdd
        $filters = new DdlFilters();
        $filters->addArray($ddl->getOption(Ddl::OPTION_FILTERS));
        $filters->addArray($ddl->getOption(Ddl::OPTION_UPDATE_BDD_FILTERS));

        if ($ddl->getOption(Ddl::OPTION_INIT_UPDATE_BDD_FILTERS, true)) {
            $filters->setExplicit(true);

        // On ajouter toute la DDL qu'on donne en référence
            // On ajoute toute la DDL qu'on donne en référence
            $filters->addDdl($ddl);

            // On ajoute toutes les dépendances des tables qu'on a inclu dans la DDL au cas où elles ne seraient pas listées
            $filters->addTablesDeps($this);
        }

        return $filters;
    }
+1 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ class Ddl implements Iterator, ArrayAccess
    const OPTION_FILTERS                = 'filters';
    const OPTION_UPDATE_BDD_FILTERS     = 'update-bdd-filters';
    const OPTION_UPDATE_DDL_FILTERS     = 'update-ddl-filters';
    const OPTION_INIT_UPDATE_BDD_FILTERS = 'init-update-bdd-filters';

    protected array $data = [];