Commit 919a97c1 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Synchro : possibilité de spécifier dans la config les seules opérations...

Synchro : possibilité de spécifier dans la config les seules opérations autorisées par une synchro. Exemple : ne pas autoriser le 'delete' est utile lorsque les données sources sont obtenues de façon incrémentale au fil du temps, et non pas de façon exhaustive en une seule fois.
[FIX] Vue du différentiel d'une synchro : prise en compte du paramètre de config 'source_code_column'.
parent 611a29b6
Loading
Loading
Loading
Loading
Loading
+4 −1
Changes for CHANGELOG.md: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -8,7 +8,10 @@ Changelog
- [FIX] DatabaseService::populateDestinationTableFromSource() : beginTransaction() doit être dans le try-catch.
- [FIX] AbstractColumnValueFilter::setParams() : les paramètres spécifiés s'ajoutent aux existants et ne les remplacent plus.
- [FIX] Vue du différentiel d'une synchro : suppression du warning PHP 'Undefined array key'. 
- Dans la table SOURCE, un nouveau flag indique si dans le cadre d'une synchro l'opération 'delete' est interdite. L'interdire est utile lorsque les données sources sont obtenues de façon incrémentale au fil du temps (et non pas de façon exhaustive en une seule fois).
- [FIX] Vue du différentiel d'une synchro : prise en compte du paramètre de config 'source_code_column'.
- Synchro : possibilité de spécifier dans la config les seules opérations autorisées par une synchro.
  Exemple : ne pas autoriser le 'delete' est utile lorsque les données sources sont obtenues de façon incrémentale
  au fil du temps, et non pas de façon exhaustive en une seule fois.
- Suppression de 2 lignes intruses dans la config
- DatabaseService::truncateDestinationTable() : on vérifie désormais que les données contiennent un source_id, sinon le vidage partiel est inopérant.

+6 −0
Changes for config/unicaen-db-import.global.php.dist: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@

namespace Application;

use UnicaenDbImport\Domain\Operation;
use UnicaenDbImport\Entity\Db\Source;

return [
@@ -181,6 +182,11 @@ return [
                // Nom unique de la synchro.
                'name' => 'SYNCHRONISATION DES DONNÉES MES_PAYS_TEMPORAIRES VERS MES_PAYS',

                // Seules opérations autorisées par cette synchro.
                // Exemple : ne pas autoriser le 'delete' est utile lorsque les données sources sont obtenues de façon incrémentale (i.e. partielle)
                // au fil du temps, et non pas de façon exhaustive en une seule fois.
                'operations' => Operation::OPERATIONS,

                // Configuration de la source de données à synchroniser :
                'source' => [

doc/v6.0.3.md

deleted100644 → 0
+0 −17
Changes for doc/v6.0.3.md: 0 added lines, 17 removed lines.
Original line number Diff line number Diff line
# Version 6.0.3

## SQL

### Oracle 

```sql
alter table source add synchro_delete_interdit int(1) default 0 not null;
comment on column source.synchro_delete_interdit is 'Indique si dans le cadre d''une synchro l''opération ''delete'' est interdite. L''interdire est utile lorsque les données sources sont obtenues de façon incrémentale au fil du temps et non pas de façon exhaustive en une seule fois.';
```

### PostgreSQL

```sql
alter table source add synchro_delete_interdit boolean default false not null;
comment on column source.synchro_delete_interdit is 'Indique si dans le cadre d''une synchro l''opération ''delete'' est interdite. L''interdire est utile lorsque les données sources sont obtenues de façon incrémentale au fil du temps et non pas de façon exhaustive en une seule fois.';
```
+3 −2
Changes for src/UnicaenDbImport/CodeGenerator/CodeGenerator.php: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -305,11 +305,12 @@ abstract class CodeGenerator implements CodeGeneratorInterface
    /**
     * @param SourceInterface $source
     * @param DestinationInterface $destination
     * @param array $operations
     * @param string|null $intermediateTable
     * @return string
     * @throws \Doctrine\DBAL\Exception
     */
    public function generateSQLForDiffViewCreation(SourceInterface $source, DestinationInterface $destination, string $intermediateTable = null): string
    public function generateSQLForDiffViewCreation(SourceInterface $source, DestinationInterface $destination, array $operations, string $intermediateTable = null): string
    {
        $destinationTable = $destination->getTable();
        $sourceCodeColumn = $source->getSourceCodeColumn();
@@ -317,7 +318,7 @@ abstract class CodeGenerator implements CodeGeneratorInterface

        $diffSourceTableName = $intermediateTable ?: $source->getTable();

        return $this->tableHelper->generateSQLForDiffViewCreation($diffSourceTableName, $destinationTable, $sourceCodeColumn, $columns);
        return $this->tableHelper->generateSQLForDiffViewCreation($operations, $diffSourceTableName, $destinationTable, $sourceCodeColumn, $columns);
    }

    /**
+8 −1
Changes for src/UnicaenDbImport/CodeGenerator/CodeGeneratorInterface.php: 8 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -66,6 +66,12 @@ interface CodeGeneratorInterface
     */
    public function generateSQLForSelectFromSource(SourceInterface $source): string;

    /**
     * @param string $sourceTableName
     * @return string
     */
    public function generateSQLForSelectSourceTableColumnsInformation(string $sourceTableName): string;

    /**
     * @param SourceInterface $source
     * @param DestinationInterface $destination
@@ -109,11 +115,12 @@ interface CodeGeneratorInterface
    /**
     * @param SourceInterface $source
     * @param DestinationInterface $destination
     * @param array $operations
     * @param string $intermediateTable
     * @return string
     * @throws \Doctrine\DBAL\Exception
     */
    public function generateSQLForDiffViewCreation(SourceInterface $source, DestinationInterface $destination, string $intermediateTable): string;
    public function generateSQLForDiffViewCreation(SourceInterface $source, DestinationInterface $destination, array $operations, string $intermediateTable): string;

    /**
     * @param SourceInterface $source
Loading