Commit 2aff4028 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Découverte des colonnes de la source : mauvais diagnostic lorsque la...

[FIX] Découverte des colonnes de la source : mauvais diagnostic lorsque la source ne contient aucune donnée
parent 8730ba44
Loading
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ class QueryExecutor
        $statement = $this->executeQuery($sql, $connection);

        $rows = [];
        while ($row = $statement->fetch(\PDO::FETCH_ASSOC)) {
        while ($row = $statement->fetchAssociative()) {
            $rows[] = $row;
            yield $row;
        }
@@ -83,12 +83,16 @@ class QueryExecutor
    /**
     * @param string     $sql
     * @param Connection $connection
     * @return array
     * @return array|null
     */
    public function fetch($sql, Connection $connection)
    {
        $statement = $this->executeQuery($sql, $connection);

        if ($statement->rowCount() === 0) {
            return null;
        }

        return $statement->fetch(\PDO::FETCH_ASSOC);
    }

+1 −1
Original line number Diff line number Diff line
@@ -482,7 +482,7 @@ class DatabaseService
    /**
     * Requête la Source pour obtenir le 1er enregistrements des données sources.
     *
     * @return array
     * @return array|null
     */
    public function fetchSourceFirstRow()
    {
+7 −10
Original line number Diff line number Diff line
@@ -275,12 +275,16 @@ class FacadeService
                    break;

                case $connection instanceof DbConnection:
                    $data = [ $this->databaseService->fetchSourceFirstRow() ];
                    $firstRow = $this->databaseService->fetchSourceFirstRow();
                    if ($firstRow === null) {
                        throw new RuntimeException(
                            "Impossible de découvrir la liste des colonnes à partir des données sources car celles-ci sont vides");
                    }
                    $data = [ $firstRow ];
                    break;

                default:
                    throw new RuntimeException("Type de connexion source inattendue");
                    break;
            }
        }

@@ -295,11 +299,6 @@ class FacadeService
     */
    private function extractColumnsFromSourceFetchResults(array $rows)
    {
        if (empty($rows)) {
            throw new RuntimeException(
                "Impossible de déterminer la liste des colonnes à partir des données sources car celles-ci sont vides");
        }

        $first = current($rows);

        if ($first instanceof stdClass) {
@@ -311,9 +310,7 @@ class FacadeService
                "Impossible de déterminer la liste des colonnes à partir des données sources car leur type est inconnu (ni array ni stdClass)");
        }

        $columns = array_diff($columns, ['source_id', 'SOURCE_ID']);
        
        return $columns;
        return array_diff($columns, ['source_id', 'SOURCE_ID']);
    }

    /**