diff --git a/CHANGELOG.md b/CHANGELOG.md index 32bb62a0e2672ee916de2d6137b27ed1a91d0659..503a728f0e8b8fea5ee963332f35157ef4adaf8e 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 37ddf14babdad713fb07f4f482233ab7e59b5c29..eb76d9360f50177825d5bfd650a83513c51dd9f9 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) {