Skip to content
Snippets Groups Projects
Commit 6755a5f0 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Premiere version avec perservation des IDs

parent 42ff0d9a
No related branches found
No related tags found
No related merge requests found
Pipeline #15905 passed
......@@ -345,6 +345,7 @@ abstract class CodeGenerator implements CodeGeneratorInterface
{
$destinationTable = $destination->getTable();
$idColumnSequence = $destination->getIdColumnSequence();
$idColumnPreserved = $destination->getIdColumnPreserved();
$where = $destination->getWhere();
$sourceCodeColumn = $source->getSourceCodeColumn();
$columns = $source->getColumns();
......@@ -359,7 +360,8 @@ abstract class CodeGenerator implements CodeGeneratorInterface
$sourceCodeColumn,
$columns,
$where,
$idColumnSequence);
$idColumnSequence,
$idColumnPreserved);
break;
case Operation::OPERATION_UPDATE;
$sql = $this->tableHelper->generateSQLForUpdateOperationInDestinationTable(
......
......@@ -316,6 +316,11 @@ EOT;
$commaSeparatedColumnNames = implode(', ', $destinationColumns);
$commaSeparatedColumnValues = implode(', ', $selectExpressions);
// if ($destinationTable === 'carriere_corps') {
$commaSeparatedColumnNames .= ',id';
$commaSeparatedColumnValues .= ','.$selectExpressions['ID_ORIG'];
// }
return <<<EOT
INSERT INTO $destinationTable ($commaSeparatedColumnNames)
SELECT $commaSeparatedColumnValues
......@@ -337,7 +342,9 @@ EOT;
string $sourceCodeColumn,
array $columns,
string $where = null,
$idColumnSequence = null): string
$idColumnSequence = null,
$preservedId = null
): string
{
$diffViewName = $this->generateDiffViewName($destinationTable);
$now = $this->platform->getNowExpression();
......@@ -380,12 +387,18 @@ EOT;
$sourceCodeColumn,
'source_id',
);
$idExpr='';
if ($preservedId) {
$idExpr = 'cast(ID_ORIG as bigint)';
} else {
if ($useSequenceForId) {
$idExpr = $this->generateSQLForSequenceNextVal($idColumnSequence);
}
}
array_unshift($selectExpressions,
$idExpr,
);
}
$wheres = null;
if ($where) {
......
......@@ -160,6 +160,11 @@ class Destination implements DestinationInterface
return $this->config->get('id_sequence');
}
public function getIdColumnPreserved()
{
return $this->config->get('preserved_id');
}
public function getIntermediateTable(): string
{
if ($intermediateTable = $this->config->get('intermediate_table')) {
......
......@@ -99,6 +99,8 @@ interface DestinationInterface
*/
public function getIdColumnSequence();
public function getIdColumnPreserved();
/**
* Retourne le nom de la table intermédiaire à créer dans la base de données de destination
* lorsque l'utilisation d'une table intermédiaire est nécessaire (cf {@link requiresIntermediateTable}).
......
......@@ -424,6 +424,7 @@ class DatabaseService
$columnsValues = $this->prepareDestinationData($preparedRow);
$insertsSQL = $this->codeGenerator->generateSQLForInsertOneRowIntoTable($tableName, $columnsValues, $sourceCode, $idColumnSequence);
// var_dump($insertsSQL);
try {
$count += $this->queryExecutor->exec($insertsSQL, $this->destination->getConnection());
} catch (Exception $e) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment