From fe9305e2fc9c64edf9708b51d870d1c159cf41d8 Mon Sep 17 00:00:00 2001 From: Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr> Date: Wed, 2 Mar 2022 18:17:17 +0100 Subject: [PATCH] =?UTF-8?q?[FIX]=20Import=20:=20seules=20les=20donn=C3=A9e?= =?UTF-8?q?s=20issues=20de=20la=20source=20concern=C3=A9e=20doivent=20?= =?UTF-8?q?=C3=AAtre=20pr=C3=A9alablement=20purg=C3=A9es,=20pas=20toute=20?= =?UTF-8?q?la=20table.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ .../Service/Database/DatabaseService.php | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32bb62a..503a728 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ Changelog ========= +5.1.1 +----- +- [FIX] Import : seules les données issues de la source concernée doivent être préalablement purgées, pas toute la table. + 5.1.0 ----- - Import : le SOURCE_ID peut être fourni dans les données à importer ou en dur dans la config via l'attribut 'code' de la 'source' ; diff --git a/src/UnicaenDbImport/Service/Database/DatabaseService.php b/src/UnicaenDbImport/Service/Database/DatabaseService.php index 37ddf14..eb76d93 100644 --- a/src/UnicaenDbImport/Service/Database/DatabaseService.php +++ b/src/UnicaenDbImport/Service/Database/DatabaseService.php @@ -344,7 +344,18 @@ class DatabaseService */ public function truncateDestinationTable() { + // détermination de l'id de la source des données à insérer, pour n'effacer que les données de cette source + // (si aucune donnée à insérer, basta) + $data = $this->source->getData(); + if (empty($data)) { + return; + } + $row1 = reset($data); + $preparedRow1 = $this->prepareSourceData($row1); + $sourceId = $preparedRow1['source_id'] ?? $preparedRow1['SOURCE_ID']; + $sql = $this->codeGenerator->generateSQLForClearTable($table = $this->destination->getTable()); + $sql .= " WHERE source_id = (SELECT id FROM source WHERE code = '$sourceId')"; try { $this->queryExecutor->exec($sql, $this->destination->getConnection()); } catch (Exception $e) { -- GitLab