Commit 0df1df9a authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Config exemple ".dist".

Corrections.
parent ce41a2f2
Loading
Loading
Loading
Loading
+1 −20
Changes for config/module.config.php: 1 added line, 20 removed lines.
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@ use Doctrine\DBAL\Platforms\MySqlPlatform;
use Doctrine\DBAL\Platforms\PostgreSqlPlatform;
use UnicaenDbImport\Config\ImportConfig;
use UnicaenDbImport\Config\ImportConfigFactory;
use UnicaenDbImport\Controller\ConsoleController;
use UnicaenDbImport\Controller\ConsoleControllerFactory;
use UnicaenDbImport\Importer\MySQL\MySQLImporter;
use UnicaenDbImport\Importer\MySQL\MySQLImporterFactory;
@@ -22,25 +21,7 @@ return [
            PostgreSqlPlatform::class => PostgreSQLImporter::class,
            MySqlPlatform::class      => MySQLImporter::class,
        ],
        'imports' => [
//            [
//                'name'   => 'IMPORT_PFI_SIFAC',
//                'source' => [
//                    'name'               => 'PFI SIFAC',
//                    'table'              => 'TABLE',
//                    'connection'         => 'doctrine.connection.orm_sifac',
//                    'source_code_column' => 'CODE',
//                    'columns'            => ['LIBELLE', 'FLECHE', 'DEBUT_VALIDITE', 'FIN_VALIDITE'],
//                ],
//                'destination' => [
//                    'name'               => 'progfin2',
//                    'table'              => 'progfin2',
//                    'connection'         => 'doctrine.connection.orm_default',
//                    'source_code_column' => 'code',
//                    'columns'            => ['libelle', 'fleche', 'debut_validite', 'fin_validite'],
//                ],
//            ],
        ],
        'imports' => [],
    ],

    'console' => [
+57 −0
Changes for config/unicaen-db-import.config.php.dist: 57 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace UnicaenDbImport;

return [
    'import' => [
        'imports' => [
            [
                /**
                 * Petit nom (unique) de l'import.
                 */
                'name' => 'Import des programmes de financement SIFAC',

                /**
                 * Configuration de la source de données à importer :
                 * - 'name'               : petit nom (unique) de la source
                 * - 'table'              : nom de la table source contenant les données à importer
                 * - 'select'             : select SQL de mise en forme des données source à importer (NB: antinomique avec 'table')
                 * - 'connection'         : identifiant de la connexion Doctrine à la base de données source
                 * - 'source_code_column' : nom de la colonne dans la table/vue source contenant les identifiants uniques
                 * - 'columns'            : liste ordonnée des noms des colonnes à prendre en compte dans la table/vue source
                 */
                'source' => [
                    'name'               => 'PFI SIFAC',
                    'table'              => 'TABLE',
                    'connection'         => 'doctrine.connection.orm_sifac',
                    'source_code_column' => 'CODE',
                    'columns'            => ['LIBELLE', 'FLECHE', 'DEBUT_VALIDITE', 'FIN_VALIDITE'],
                ],

                /**
                 * Forçage éventuel du nom de la table intermédiaire utilisée lorsque source et destination
                 * ne partagent pas la même connexion.
                 * NB: cette table intermédiaire est remplacée/peuplée dans la base de données destination
                 * à chaque import.
                 */
                'intermediate_table' => 'src_progfin',

                /**
                 * Configuration de la destination des données importées :
                 * - 'name'               : petit nom (unique) de la destination
                 * - 'table'              : nom de la table destination vers laquelle les données sont importées
                 * - 'connection'         : identifiant de la connexion Doctrine à la base de données destination
                 * - 'source_code_column' : nom de la colonne dans la table destination contenant les identifiants uniques
                 * - 'columns'            : liste ordonnée des noms des colonnes importées dans la table destination
                 */
                'destination' => [
                    'name'               => 'PFI Zébu',
                    'table'              => 'progfin',
                    'connection'         => 'doctrine.connection.orm_default',
                    'source_code_column' => 'code',
                    'columns'            => ['libelle', 'fleche', 'debut_validite', 'fin_validite'],
                ],
            ],
        ],
    ],
];
+3 −7
Changes for src/UnicaenDbImport/CodeGenerator/PostgreSQL/PostgreSQLCodeGenerator.php: 3 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -112,20 +112,16 @@ class PostgreSQLCodeGenerator extends AbstractCodeGenerator

        $template = <<<'EOT'
SELECT
  get_import_operation(
    src.code,
    dest.{sourceCodeColumnName},
    dest.deleted_on
  ) operation,
  get_import_operation(src.{sourceCodeColumnName}, dest.{sourceCodeColumnName}, dest.deleted_on) operation,
  get_import_req_{destinationTableName}(
    get_import_operation(src.code, dest.{sourceCodeColumnName}, dest.deleted_on),
    get_import_operation(src.{sourceCodeColumnName}, dest.{sourceCodeColumnName}, dest.deleted_on),
    src,
    dest
  ) req
FROM {sourceTableName} src
FULL OUTER JOIN {destinationTableName} dest ON src.{sourceCodeColumnName} = dest.{sourceCodeColumnName}
WHERE get_import_req_{destinationTableName}(
    get_import_operation(src.code, dest.{sourceCodeColumnName}, dest.deleted_on),
    get_import_operation(src.{sourceCodeColumnName}, dest.{sourceCodeColumnName}, dest.deleted_on),
    src,
    dest
  ) is not null
+10 −4
Changes for src/UnicaenDbImport/Controller/ConsoleController.php: 10 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -39,6 +39,10 @@ class ConsoleController extends AbstractConsoleController
            $all = TRUE;
        }

        $this->getConsole()->writeLine();
        $this->getConsole()->writeLine("######################## Imports ########################", ColorInterface::BLUE);
        $this->getConsole()->writeLine();

        try {
            if ($all) {
                $this->runAllImports();
@@ -61,10 +65,11 @@ class ConsoleController extends AbstractConsoleController
        $result = $this->importService->runByName($name);

        $this->getConsole()->writeLine("L'import a été réalisé avec succès.", ColorInterface::GREEN);
        $this->getConsole()->writeLine(date_format(new \DateTime(), 'd/m/Y H:i:s'), ColorInterface::GREEN);

        $this->getConsole()->writeLine();
        $this->getConsole()->writeLine("######################## " . $result->getImportName() . " ########################");
        $this->getConsole()->write((string)$result, ColorInterface::GRAY);
        $this->getConsole()->writeLine("### " . $result->getImportName(), ColorInterface::BLACK, ColorInterface::WHITE);
        $this->getConsole()->write((string)$result);
        $this->getConsole()->writeLine();
    }

@@ -73,11 +78,12 @@ class ConsoleController extends AbstractConsoleController
        $results = $this->importService->runAll();

        $this->getConsole()->writeLine("Les imports ont été réalisés avec succès.", ColorInterface::GREEN);
        $this->getConsole()->writeLine(date_format(new \DateTime(), 'd/m/Y H:i:s'), ColorInterface::GREEN);

        foreach ($results as $result) {
            $this->getConsole()->writeLine();
            $this->getConsole()->writeLine("######################## " . $result->getImportName() . "########################");
            $this->getConsole()->write((string)$result, ColorInterface::GRAY);
            $this->getConsole()->writeLine("### " . $result->getImportName(), ColorInterface::BLACK, ColorInterface::WHITE);
            $this->getConsole()->write((string)$result);
            $this->getConsole()->writeLine();
        }
    }