Commit c0e7282e authored by Thibaut Vallee's avatar Thibaut Vallee
Browse files

Préparation de la suppression du paramètre de config 'intermediate_table_auto_drop'

[FIX] Correction du SQL générant V_DIFF_* pour le cas d'une synchro depuis une source non-importable
parent 919a97c1
Loading
Loading
Loading
Loading
Loading
+2 −0
Changes for CHANGELOG.md: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -9,11 +9,13 @@ Changelog
- [FIX] AbstractColumnValueFilter::setParams() : les paramètres spécifiés s'ajoutent aux existants et ne les remplacent plus.
- [FIX] Vue du différentiel d'une synchro : suppression du warning PHP 'Undefined array key'. 
- [FIX] Vue du différentiel d'une synchro : prise en compte du paramètre de config 'source_code_column'.
- [FIX] Correction du SQL générant V_DIFF_* pour le cas d'une synchro depuis une source non-importable
- Synchro : possibilité de spécifier dans la config les seules opérations autorisées par une synchro.
  Exemple : ne pas autoriser le 'delete' est utile lorsque les données sources sont obtenues de façon incrémentale
  au fil du temps, et non pas de façon exhaustive en une seule fois.
- Suppression de 2 lignes intruses dans la config
- DatabaseService::truncateDestinationTable() : on vérifie désormais que les données contiennent un source_id, sinon le vidage partiel est inopérant.
- Préparation de la suppression du paramètre de config 'intermediate_table_auto_drop'

6.0.2
-----
+1 −4
Changes for README.md: 1 added line, 4 removed lines.
Original line number Diff line number Diff line
@@ -531,7 +531,6 @@ return [
                    'source_code_column' => 'CODE',
                    
                    'intermediate_table' => 'NOM_QUE_JE_FORCE', // sinon ce sera 'TMP_UTILISATEUR'
                    'intermediate_table_auto_drop' => true, // supprime la table intermédiaire si elle existe déjà

                ],
            ],
@@ -547,7 +546,7 @@ php public/index.php run synchro --name "SYNCHRO_BDD_EXTERNE"

Une synchronisation de données à partir d'une autre base de données fait en réalité appel successivement au mécanisme 
d'import et au mécanisme de synchronisation (voir [Fonctionnement](#fonctionnement)) ; d'où la présence
des paramètres facultatifs `intermediate_table` et `intermediate_table_auto_drop`.
des paramètres facultatifs `intermediate_table`.

Fonctionne également en spécifiant une `'table'` au lieu d'un `'select'` dans la source.

@@ -573,8 +572,6 @@ return [
                    'table'              => 'REGION',
                    'connection'         => 'orm_A',
                    'source_code_column' => 'CODE',

                    'intermediate_table_auto_drop' => true,
                ],
            ],
        ],
+0 −5
Changes for config/unicaen-db-import.global.php.dist: 0 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -238,11 +238,6 @@ return [
                    // En l'absence de ce forçage, le nom de la table intermédiaire sera celui de la table destination
                    // préfixé par "tmp_".
                    'intermediate_table' => 'tmp_pays',

                    // Suppression automatique des éventuelles tables intermédiaires "tmp_" au début de l'import.
                    // Si la suppression automatique est désactivée, l'existence d'une table intermédiaire au démarrage
                    // d'un import fera échouer l'import.
                    'intermediate_table_auto_drop' => true,
                ],
            ],
        ],
+1 −1
Changes for src/UnicaenDbImport/CodeGenerator/Helper/TableHelper.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -268,8 +268,8 @@ with diff as (
        $destColumsSql

    FROM $destinationTable d
    JOIN source src ON src.id = d.source_id AND src.importable = $requiredValueForImportable
    FULL OUTER JOIN $diffSourceTableName s ON s.source_id = d.source_id AND s.$sourceCodeColumn = d.$sourceCodeColumn
    JOIN source src ON src.id = coalesce(s.source_id, d.source_id) AND src.importable = $requiredValueForImportable
)
select * from diff
where operation is not null
+4 −0
Changes for src/UnicaenDbImport/Domain/Destination.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -169,6 +169,10 @@ class Destination implements DestinationInterface
        return static::INTERMEDIATE_TABLE_NAME_PREFIX . $this->getTable();
    }

    /**
     * @deprecated Suppression de intermediate_table_auto_drop à venir
     * TODO : à supprimer
     */
    public function getIntermediateTableAutoDrop(): bool
    {
        return (bool) $this->config->get('intermediate_table_auto_drop', false);