Commit 30e83a18 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Détermination des colonnes de la table source : correction d'un bug...

[FIX] Détermination des colonnes de la table source : correction d'un bug potentiel + amélioration de la remontée d'erreur.
parent 1b9d3153
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ Changelog
- [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
- [FIX] Import : correction du SQL généré en cas de valeur booléenne dans les données sources.
- [FIX] Détermination des colonnes de la table source : correction d'un bug potentiel + amélioration de la remontée d'erreur.
- Nouvelles commandes pour lister les imports ('list imports') et synchros ('list synchros'). 
- Synchro : spécification dans la table SOURCE (colonnes 'synchro_*_enabled') des opérations autorisées ou non lors de la synchro (màj bdd requise).
  Exemple : ne pas autoriser le 'delete' est utile lorsque les données sources sont obtenues de façon incrémentale
+5 −1
Original line number Diff line number Diff line
@@ -483,10 +483,14 @@ class DatabaseService extends AbstractDatabaseService
     */
    public function fetchSourceTableColumnNames(): array
    {
        $selectSql = $this->codeGenerator->generateSQLForSelectSourceTableColumnsInformation($this->source);
        $sourceTableName = $this->source->getTable();
        $selectSql = $this->codeGenerator->generateSQLForSelectSourceTableColumnsInformation($sourceTableName);

        try {
            $result = $this->queryExecutor->fetchAll($selectSql, $this->source->getConnection());
            if (!$result) {
                throw DatabaseServiceException::error("Impossible de déterminer les colonnes de la table/vue source '$sourceTableName'");
            }
            return array_map(fn ($row) => $row['column_name'], $result);
        } catch (Exception $e) {
            throw DatabaseServiceException::error("Erreur lors du fetch", $e);
+2 −1
Original line number Diff line number Diff line
@@ -235,7 +235,8 @@ abstract class AbstractFacadeService
            try {
                $columns = $this->databaseService->fetchSourceTableColumnNames();
            } catch (DatabaseServiceException $e) {
                throw new Exception("Erreur rencontrée lors de l'obtention des colonnes de la table source", null, $e);
                throw new Exception(
                    "Erreur rencontrée lors de l'obtention des colonnes de la table source : " . $e->getMessage(), null, $e);
            }
        }