Skip to content
Snippets Groups Projects
Commit 42c70e8c authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Fiabilisation des sauvegardes et de la migration v18

parent e7320531
No related branches found
No related tags found
No related merge requests found
...@@ -27,25 +27,65 @@ class v18Divers extends AbstractMigration ...@@ -27,25 +27,65 @@ class v18Divers extends AbstractMigration
$c = $this->manager->getOseAdmin()->getConsole(); $c = $this->manager->getOseAdmin()->getConsole();
try { try {
$c->msg('Suppression de la contrainte TYPE_INTERVENANT_CODE_UN en prévision de sa recréation'); $c->msg('Coupure forcée de la synchronisation sur la table INTERVENANT');
$bdd->exec("DELETE FROM AFFECTATION_RECHERCHE WHERE structure_id NOT IN (SELECT ID FROM STRUCTURE)"); $bdd->exec("UPDATE IMPORT_TABLES SET SYNC_ENABLED = 0 WHERE TABLE_NAME = 'INTERVENANT'");
} catch (\Exception $e) { } catch (\Exception $e) {
// rien à faire : la contrainte a déjà du être supprimée // rien à faire : la contrainte a déjà du être supprimée
} }
$this->sauvegardes();
try { try {
$c->msg('Suppression de la contrainte TYPE_INTERVENANT_CODE_UN en prévision de sa recréation'); $c->msg('Suppression de la contrainte TYPE_INTERVENANT_CODE_UN en prévision de sa recréation');
$bdd->exec("ALTER TABLE TYPE_INTERVENANT DROP CONSTRAINT TYPE_INTERVENANT_CODE_UN"); $bdd->exec("DELETE FROM AFFECTATION_RECHERCHE WHERE structure_id NOT IN (SELECT ID FROM STRUCTURE)");
} catch (\Exception $e) { } catch (\Exception $e) {
// rien à faire : la contrainte a déjà du être supprimée // rien à faire : la contrainte a déjà du être supprimée
} }
try { try {
$c->msg('Coupure forcée de la synchronisation sur la table INTERVENANT'); $c->msg('Suppression de la contrainte TYPE_INTERVENANT_CODE_UN en prévision de sa recréation');
$bdd->exec("UPDATE IMPORT_TABLES SET SYNC_ENABLED = 0 WHERE TABLE_NAME = 'INTERVENANT'"); $bdd->exec("ALTER TABLE TYPE_INTERVENANT DROP CONSTRAINT TYPE_INTERVENANT_CODE_UN");
} catch (\Exception $e) { } catch (\Exception $e) {
// rien à faire : la contrainte a déjà du être supprimée // rien à faire : la contrainte a déjà du être supprimée
} }
} }
protected function sauvegardes()
{
$bdd = $this->manager->getBdd();
$c = $this->manager->getOseAdmin()->getConsole();
$tables = [
'INTERVENANT' => 'SAVE_V18_INTERVENANT',
'INTERVENANT_DOSSIER' => 'SAVE_V18_DOSSIER',
'TYPE_PIECE_JOINTE_STATUT' => 'SAVE_V18_TPJS',
'TYPE_INTERVENTION_STATUT' => 'SAVE_V18_TIS',
'STATUT_INTERVENANT' => 'SAVE_V18_STATUT',
'STATUT_PRIVILEGE' => 'SAVE_V18_STATUT_PRIVILEGE',
'TYPE_AGREMENT_STATUT' => 'SAVE_V18_TA_STATUT',
'DOSSIER_CHAMP_AUTRE_PAR_STATUT' => 'SAVE_V18_DOSSIER_AUTRE_STATUT',
'STRUCTURE' => 'SAVE_V18_STRUCTURE',
'FONCTION_REFERENTIEL' => 'SAVE_V18_REFERENTIEL',
'PLAFOND_APPLICATION' => 'SAVE_V18_PLAFOND_APP',
'PLAFOND' => 'SAVE_V18_PLAFOND',
];
foreach ($tables as $table => $saveTable) {
if (!$this->manager->hasTable($table) || $this->manager->hasTable($saveTable)) {
unset($tables[$table]);
}
}
$c->begin('Sauvegarde des anciennes données');
foreach ($tables as $table => $saveTable) {
$c->msg('"' . $table . '" => "' . $saveTable . '".');
$this->manager->sauvegarderTable($table, $saveTable);
}
$c->end();
}
} }
\ No newline at end of file
...@@ -26,36 +26,6 @@ class v18Plafonds extends AbstractMigration ...@@ -26,36 +26,6 @@ class v18Plafonds extends AbstractMigration
$bdd = $this->manager->getBdd(); $bdd = $this->manager->getBdd();
$c = $this->manager->getOseAdmin()->getConsole(); $c = $this->manager->getOseAdmin()->getConsole();
if (empty($bdd->table()->get('SAVE_V18_STATUT'))) {
$this->manager->sauvegarderTable('STATUT_INTERVENANT', 'SAVE_V18_STATUT');
$c->msg('Anciens statuts "STATUT_INTERVENANT" sauvegardés dans "SAVE_V18_STATUT".');
}
if (empty($bdd->table()->get('SAVE_V18_STRUCTURE'))) {
$this->manager->sauvegarderTable('STRUCTURE', 'SAVE_V18_STRUCTURE');
$c->msg('Anciennes structures "STRUCTURE" sauvegardés dans "SAVE_V18_STRUCTURE".');
}
if (empty($bdd->table()->get('SAVE_V18_REFERENTIEL'))) {
$this->manager->sauvegarderTable('FONCTION_REFERENTIEL', 'SAVE_V18_REFERENTIEL');
$c->msg('Anciennes fonctions référentielles "FONCTION_REFERENTIEL" sauvegardées dans "SAVE_V18_REFERENTIEL".');
}
if (empty($bdd->table()->get('SAVE_V18_PLAFOND_APP'))) {
$this->manager->sauvegarderTable('PLAFOND_APPLICATION', 'SAVE_V18_PLAFOND_APP');
$c->msg('Anciens paramétrages des plafonds "PLAFOND_APPLICATION" sauvegardées dans "SAVE_V18_PLAFOND_APP".');
}
if (!empty($bdd->table()->get('PLAFOND_APPLICATION'))) {
$bdd->exec('DROP TABLE PLAFOND_APPLICATION');
$c->msg('Suppression des anciens paramétrages de plafonds');
}
if (empty($bdd->table()->get('SAVE_V18_PLAFOND'))) {
$this->manager->sauvegarderTable('PLAFOND', 'SAVE_V18_PLAFOND');
$c->msg('Anciens plafonds "PLAFOND" sauvegardées dans "SAVE_V18_PLAFOND".');
}
if (!empty($bdd->table()->get('PLAFOND'))) { if (!empty($bdd->table()->get('PLAFOND'))) {
$bdd->exec('DROP TABLE PLAFOND CASCADE CONSTRAINTS'); $bdd->exec('DROP TABLE PLAFOND CASCADE CONSTRAINTS');
$c->msg('Suppression des anciens plafonds'); $c->msg('Suppression des anciens plafonds');
......
...@@ -130,7 +130,7 @@ class v18Statuts extends AbstractMigration ...@@ -130,7 +130,7 @@ class v18Statuts extends AbstractMigration
$c = $this->manager->getOseAdmin()->getConsole(); $c = $this->manager->getOseAdmin()->getConsole();
$c->begin('Préparation à la mise à jour des indicateurs'); $c->begin('Préparation à la mise à jour des indicateurs');
if (empty($bdd->table()->get('TYPE_INDICATEUR'))) { if (!$this->manager->hasTable('TYPE_INDICATEUR')) {
$bdd->exec('ALTER TABLE INDICATEUR ADD (TYPE_INDICATEUR_ID NUMBER)'); $bdd->exec('ALTER TABLE INDICATEUR ADD (TYPE_INDICATEUR_ID NUMBER)');
$bdd->exec('CREATE TABLE TYPE_INDICATEUR ( $bdd->exec('CREATE TABLE TYPE_INDICATEUR (
ID NUMBER NOT NULL ENABLE, ID NUMBER NOT NULL ENABLE,
...@@ -152,27 +152,6 @@ class v18Statuts extends AbstractMigration ...@@ -152,27 +152,6 @@ class v18Statuts extends AbstractMigration
$c->begin('Mise à jour de la liste des statuts'); $c->begin('Mise à jour de la liste des statuts');
if (empty($bdd->table()->get('SAVE_V18_STATUT'))) {
$this->manager->sauvegarderTable('STATUT_INTERVENANT', 'SAVE_V18_STATUT');
$c->msg('Anciens statuts "STATUT_INTERVENANT" sauvegardés dans "SAVE_V18_STATUT".');
}
if (empty($bdd->table()->get('SAVE_V18_STATUT_PRIVILEGE'))) {
$this->manager->sauvegarderTable('STATUT_PRIVILEGE', 'SAVE_V18_STATUT_PRIVILEGE');
$c->msg('Anciens statuts "STATUT_PRIVILEGE" sauvegardés dans "SAVE_V18_STATUT_PRIVILEGE".');
}
if (empty($bdd->table()->get('SAVE_V18_TA_STATUT'))) {
$this->manager->sauvegarderTable('TYPE_AGREMENT_STATUT', 'SAVE_V18_TA_STATUT');
$c->msg('Anciens statuts "TYPE_AGREMENT_STATUT" sauvegardés dans "SAVE_V18_TA_STATUT".');
}
if (!$this->manager->hasTable('SAVE_V18_DOSSIER_AUTRE_STATUT') && $this->manager->hasTable('DOSSIER_CHAMP_AUTRE_PAR_STATUT')) {
$this->manager->sauvegarderTable('DOSSIER_CHAMP_AUTRE_PAR_STATUT', 'SAVE_V18_DOSSIER_AUTRE_STATUT');
$c->msg('Anciens statuts "DOSSIER_CHAMP_AUTRE_PAR_STATUT" sauvegardés dans "SAVE_V18_DOSSIER_AUTRE_STATUT".');
}
/* Modifications préalables à faire en BDD */ /* Modifications préalables à faire en BDD */
if (empty($bdd->sequence()->get('STATUT_ID_SEQ'))) { if (empty($bdd->sequence()->get('STATUT_ID_SEQ'))) {
$bdd->exec('CREATE SEQUENCE STATUT_ID_SEQ INCREMENT BY 1 MINVALUE 1 NOCACHE'); $bdd->exec('CREATE SEQUENCE STATUT_ID_SEQ INCREMENT BY 1 MINVALUE 1 NOCACHE');
...@@ -317,7 +296,7 @@ class v18Statuts extends AbstractMigration ...@@ -317,7 +296,7 @@ class v18Statuts extends AbstractMigration
SELECT SELECT
max(si.id) id, i.annee_id max(si.id) id, i.annee_id
FROM FROM
intervenant i SAVE_V18_INTERVENANT i
JOIN SAVE_V18_STATUT si ON si.id = i.statut_id JOIN SAVE_V18_STATUT si ON si.id = i.statut_id
GROUP BY GROUP BY
si.code, i.annee_id si.code, i.annee_id
...@@ -492,7 +471,7 @@ class v18Statuts extends AbstractMigration ...@@ -492,7 +471,7 @@ class v18Statuts extends AbstractMigration
osi.id old_statut_id, osi.id old_statut_id,
nsi.id new_statut_id nsi.id new_statut_id
FROM FROM
intervenant i SAVE_V18_INTERVENANT i
JOIN SAVE_V18_STATUT osi ON osi.id = i.statut_id JOIN SAVE_V18_STATUT osi ON osi.id = i.statut_id
LEFT JOIN statut nsi ON nsi.code = osi.code AND nsi.annee_id = i.annee_id LEFT JOIN statut nsi ON nsi.code = osi.code AND nsi.annee_id = i.annee_id
WHERE WHERE
...@@ -542,7 +521,7 @@ class v18Statuts extends AbstractMigration ...@@ -542,7 +521,7 @@ class v18Statuts extends AbstractMigration
osi.id old_statut_id, osi.id old_statut_id,
nsi.id new_statut_id nsi.id new_statut_id
FROM FROM
intervenant_dossier d SAVE_V18_DOSSIER d
JOIN intervenant i ON i.id = d.intervenant_id JOIN intervenant i ON i.id = d.intervenant_id
JOIN SAVE_V18_STATUT osi ON osi.id = d.statut_id JOIN SAVE_V18_STATUT osi ON osi.id = d.statut_id
LEFT JOIN statut nsi ON nsi.code = osi.code AND nsi.annee_id = i.annee_id LEFT JOIN statut nsi ON nsi.code = osi.code AND nsi.annee_id = i.annee_id
...@@ -581,14 +560,6 @@ class v18Statuts extends AbstractMigration ...@@ -581,14 +560,6 @@ class v18Statuts extends AbstractMigration
$c->begin('Application des nouveaux statuts aux paramétrages de PJ'); $c->begin('Application des nouveaux statuts aux paramétrages de PJ');
if (empty($bdd->table()->get('SAVE_V18_TPJS'))) {
$this->manager->sauvegarderTable('TYPE_PIECE_JOINTE_STATUT', 'SAVE_V18_TPJS');
$c->msg('Anciens paramètres "TYPE_PIECE_JOINTE_STATUT" sauvegardés dans "SAVE_V18_TPJS".');
$bdd->exec('DELETE FROM TYPE_PIECE_JOINTE_STATUT');
$c->msg("Vidage de la table \"TYPE_PIECE_JOINTE_STATUT\" avant d'insérer les nouveaux paramètres");
}
try { try {
$bdd->exec("ALTER TABLE TYPE_PIECE_JOINTE_STATUT DROP CONSTRAINT TPJS_STATUT_INTERVENANT_FK"); $bdd->exec("ALTER TABLE TYPE_PIECE_JOINTE_STATUT DROP CONSTRAINT TPJS_STATUT_INTERVENANT_FK");
} catch (\Exception $e) { } catch (\Exception $e) {
...@@ -598,6 +569,9 @@ class v18Statuts extends AbstractMigration ...@@ -598,6 +569,9 @@ class v18Statuts extends AbstractMigration
/* Modifications au niveau de la table TPJS */ /* Modifications au niveau de la table TPJS */
$ddl = $bdd->table()->get('TYPE_PIECE_JOINTE_STATUT')['TYPE_PIECE_JOINTE_STATUT']; $ddl = $bdd->table()->get('TYPE_PIECE_JOINTE_STATUT')['TYPE_PIECE_JOINTE_STATUT'];
if (!isset($ddl['columns']['ANNEE_ID'])) { if (!isset($ddl['columns']['ANNEE_ID'])) {
$bdd->exec('DELETE FROM TYPE_PIECE_JOINTE_STATUT');
$c->msg("Vidage de la table \"TYPE_PIECE_JOINTE_STATUT\" avant d'insérer les nouveaux paramètres");
$bdd->exec("ALTER TABLE TYPE_PIECE_JOINTE_STATUT ADD(ANNEE_ID NUMBER)"); $bdd->exec("ALTER TABLE TYPE_PIECE_JOINTE_STATUT ADD(ANNEE_ID NUMBER)");
} }
if (!isset($ddl['columns']['NUM_REGLE'])) { if (!isset($ddl['columns']['NUM_REGLE'])) {
...@@ -675,17 +649,12 @@ class v18Statuts extends AbstractMigration ...@@ -675,17 +649,12 @@ class v18Statuts extends AbstractMigration
$c->begin('Application des nouveaux statuts aux paramétrages des types d\'intervention'); $c->begin('Application des nouveaux statuts aux paramétrages des types d\'intervention');
if (empty($bdd->table()->get('SAVE_V18_TIS'))) {
$this->manager->sauvegarderTable('TYPE_INTERVENTION_STATUT', 'SAVE_V18_TIS');
$c->msg('Anciens paramètres "TYPE_INTERVENTION_STATUT" sauvegardés dans "SAVE_V18_TIS".');
$bdd->exec('DELETE FROM TYPE_INTERVENTION_STATUT');
$c->msg("Vidage de la table \"TYPE_INTERVENTION_STATUT\" avant d'insérer les nouveaux paramètres");
}
/* Modifications au niveau de la table TIS */ /* Modifications au niveau de la table TIS */
$ddl = $bdd->table()->get('TYPE_INTERVENTION_STATUT')['TYPE_INTERVENTION_STATUT']; $ddl = $bdd->table()->get('TYPE_INTERVENTION_STATUT')['TYPE_INTERVENTION_STATUT'];
if (!isset($ddl['columns']['ANNEE_ID'])) { if (!isset($ddl['columns']['ANNEE_ID'])) {
$bdd->exec('DELETE FROM TYPE_INTERVENTION_STATUT');
$c->msg("Vidage de la table \"TYPE_INTERVENTION_STATUT\" avant d'insérer les nouveaux paramètres");
$bdd->exec("ALTER TABLE TYPE_INTERVENTION_STATUT ADD(ANNEE_ID NUMBER)"); $bdd->exec("ALTER TABLE TYPE_INTERVENTION_STATUT ADD(ANNEE_ID NUMBER)");
} }
if (!isset($ddl['columns']['STATUT_ID'])) { if (!isset($ddl['columns']['STATUT_ID'])) {
......
...@@ -11,6 +11,7 @@ return [ ...@@ -11,6 +11,7 @@ return [
'TBL_SERVICE_SAISIE', 'TBL_SERVICE_SAISIE',
'STATUT_PRIVILEGE', 'STATUT_PRIVILEGE',
'TYPE_AGREMENT_STATUT', 'TYPE_AGREMENT_STATUT',
'PLAFOND_APPLICATION',
], ],
], ],
'materialized-view' => [ 'materialized-view' => [
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment