Loading config/autoload/local.php.dist +8 −0 Original line number Diff line number Diff line <?php return [ 'sygal-import-ws' => [ /** * Eventuelles instructions SQL à exécuter avant la mise à jour d'une table de service. */ 'services_pre_sql' => [ //'individu' => "begin DBMS_MVIEW.REFRESH('SYGAL_MV_EMAIL', 'C'); end;", ] ], 'doctrine' => [ 'connection' => [ 'orm_default' => [ Loading module/Application/src/Service/TableService.php +19 −3 Original line number Diff line number Diff line Loading @@ -22,6 +22,11 @@ class TableService */ private $servicesToEntityClassesConfig; /** * @var array */ private $servicesPreSql = []; /** * Liste des colonnes à exclure lors de la mise à jour des tables sources. * Loading @@ -47,6 +52,14 @@ class TableService $this->servicesToEntityClassesConfig = $servicesToEntityClassesConfig; } /** * @param array $servicesPreSql */ public function setServicesPreSql(array $servicesPreSql) { $this->servicesPreSql = $servicesPreSql; } /** * Lance la mise à jour des tables sources. * Loading Loading @@ -122,14 +135,17 @@ class TableService // exclusion éventuelle de certaines colonnes $columnNames = array_diff($columnNames, $this->excludedColumnNames); // SQL à exécuter au préalable ? if (isset($this->servicesPreSql[$service])) { $sqlParts[] = $this->servicesPreSql[$service]; } $sqlParts[] = sprintf($deleteTemplate, $tableName); $sqlParts[] = sprintf($updateTemplate, $tableName, $cols = implode(', ', $columnNames), $cols, $tableName); } $sqlParts[] = 'end;'; $sql = implode(PHP_EOL, $sqlParts); return $sql; return implode(PHP_EOL, $sqlParts); } /** Loading module/Application/src/Service/TableServiceFactory.php +2 −0 Original line number Diff line number Diff line Loading @@ -15,10 +15,12 @@ class TableServiceFactory /** @var array $config */ $config = $container->get('config'); $servicesToEntityClassesConfig = $config['services_to_entity_classes']; $servicesPreSql = $config['services_pre_sql'] ?? []; $service = new TableService(); $service->setEntityManager($entityManager); $service->setServicesToEntityClassesConfig($servicesToEntityClassesConfig); $service->setServicesPreSql($servicesPreSql); return $service; } Loading Loading
config/autoload/local.php.dist +8 −0 Original line number Diff line number Diff line <?php return [ 'sygal-import-ws' => [ /** * Eventuelles instructions SQL à exécuter avant la mise à jour d'une table de service. */ 'services_pre_sql' => [ //'individu' => "begin DBMS_MVIEW.REFRESH('SYGAL_MV_EMAIL', 'C'); end;", ] ], 'doctrine' => [ 'connection' => [ 'orm_default' => [ Loading
module/Application/src/Service/TableService.php +19 −3 Original line number Diff line number Diff line Loading @@ -22,6 +22,11 @@ class TableService */ private $servicesToEntityClassesConfig; /** * @var array */ private $servicesPreSql = []; /** * Liste des colonnes à exclure lors de la mise à jour des tables sources. * Loading @@ -47,6 +52,14 @@ class TableService $this->servicesToEntityClassesConfig = $servicesToEntityClassesConfig; } /** * @param array $servicesPreSql */ public function setServicesPreSql(array $servicesPreSql) { $this->servicesPreSql = $servicesPreSql; } /** * Lance la mise à jour des tables sources. * Loading Loading @@ -122,14 +135,17 @@ class TableService // exclusion éventuelle de certaines colonnes $columnNames = array_diff($columnNames, $this->excludedColumnNames); // SQL à exécuter au préalable ? if (isset($this->servicesPreSql[$service])) { $sqlParts[] = $this->servicesPreSql[$service]; } $sqlParts[] = sprintf($deleteTemplate, $tableName); $sqlParts[] = sprintf($updateTemplate, $tableName, $cols = implode(', ', $columnNames), $cols, $tableName); } $sqlParts[] = 'end;'; $sql = implode(PHP_EOL, $sqlParts); return $sql; return implode(PHP_EOL, $sqlParts); } /** Loading
module/Application/src/Service/TableServiceFactory.php +2 −0 Original line number Diff line number Diff line Loading @@ -15,10 +15,12 @@ class TableServiceFactory /** @var array $config */ $config = $container->get('config'); $servicesToEntityClassesConfig = $config['services_to_entity_classes']; $servicesPreSql = $config['services_pre_sql'] ?? []; $service = new TableService(); $service->setEntityManager($entityManager); $service->setServicesToEntityClassesConfig($servicesToEntityClassesConfig); $service->setServicesPreSql($servicesPreSql); return $service; } Loading