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
Branches
Tags 1.3.4
No related merge requests found
......@@ -27,25 +27,65 @@ class v18Divers extends AbstractMigration
$c = $this->manager->getOseAdmin()->getConsole();
try {
$c->msg('Suppression de la contrainte TYPE_INTERVENANT_CODE_UN en prévision de sa recréation');
$bdd->exec("DELETE FROM AFFECTATION_RECHERCHE WHERE structure_id NOT IN (SELECT ID FROM STRUCTURE)");
$c->msg('Coupure forcée de la synchronisation sur la table INTERVENANT');
$bdd->exec("UPDATE IMPORT_TABLES SET SYNC_ENABLED = 0 WHERE TABLE_NAME = 'INTERVENANT'");
} catch (\Exception $e) {
// rien à faire : la contrainte a déjà du être supprimée
}
$this->sauvegardes();
try {
$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) {
// rien à faire : la contrainte a déjà du être supprimée
}
try {
$c->msg('Coupure forcée de la synchronisation sur la table INTERVENANT');
$bdd->exec("UPDATE IMPORT_TABLES SET SYNC_ENABLED = 0 WHERE TABLE_NAME = 'INTERVENANT'");
$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");
} catch (\Exception $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
$bdd = $this->manager->getBdd();
$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'))) {
$bdd->exec('DROP TABLE PLAFOND CASCADE CONSTRAINTS');
$c->msg('Suppression des anciens plafonds');
......
......@@ -130,7 +130,7 @@ class v18Statuts extends AbstractMigration
$c = $this->manager->getOseAdmin()->getConsole();
$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('CREATE TABLE TYPE_INDICATEUR (
ID NUMBER NOT NULL ENABLE,
......@@ -152,27 +152,6 @@ class v18Statuts extends AbstractMigration
$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 */
if (empty($bdd->sequence()->get('STATUT_ID_SEQ'))) {
$bdd->exec('CREATE SEQUENCE STATUT_ID_SEQ INCREMENT BY 1 MINVALUE 1 NOCACHE');
......@@ -317,7 +296,7 @@ class v18Statuts extends AbstractMigration
SELECT
max(si.id) id, i.annee_id
FROM
intervenant i
SAVE_V18_INTERVENANT i
JOIN SAVE_V18_STATUT si ON si.id = i.statut_id
GROUP BY
si.code, i.annee_id
......@@ -492,7 +471,7 @@ class v18Statuts extends AbstractMigration
osi.id old_statut_id,
nsi.id new_statut_id
FROM
intervenant i
SAVE_V18_INTERVENANT i
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
WHERE
......@@ -542,7 +521,7 @@ class v18Statuts extends AbstractMigration
osi.id old_statut_id,
nsi.id new_statut_id
FROM
intervenant_dossier d
SAVE_V18_DOSSIER d
JOIN intervenant i ON i.id = d.intervenant_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
......@@ -581,14 +560,6 @@ class v18Statuts extends AbstractMigration
$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 {
$bdd->exec("ALTER TABLE TYPE_PIECE_JOINTE_STATUT DROP CONSTRAINT TPJS_STATUT_INTERVENANT_FK");
} catch (\Exception $e) {
......@@ -598,6 +569,9 @@ class v18Statuts extends AbstractMigration
/* Modifications au niveau de la table TPJS */
$ddl = $bdd->table()->get('TYPE_PIECE_JOINTE_STATUT')['TYPE_PIECE_JOINTE_STATUT'];
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)");
}
if (!isset($ddl['columns']['NUM_REGLE'])) {
......@@ -675,17 +649,12 @@ class v18Statuts extends AbstractMigration
$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 */
$ddl = $bdd->table()->get('TYPE_INTERVENTION_STATUT')['TYPE_INTERVENTION_STATUT'];
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)");
}
if (!isset($ddl['columns']['STATUT_ID'])) {
......
......@@ -11,6 +11,7 @@ return [
'TBL_SERVICE_SAISIE',
'STATUT_PRIVILEGE',
'TYPE_AGREMENT_STATUT',
'PLAFOND_APPLICATION',
],
],
'materialized-view' => [
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment