From dcdef313112708df5da782f7bff6c3129eebe55a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Romain?= Date: Wed, 10 Feb 2021 14:10:35 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20renomme=20les=20id=20d'=C3=A9tapes=20dan?= =?UTF-8?q?s=20les=20propri=C3=A9t=C3=A9s=20du=20titre=20(#647)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20180522000005_titres_etapes_points.js | 1 + src/business/processes/titres-ids-update.ts | 3 +- src/business/utils/ids-update.js | 16 ++-- .../utils/titre-id-and-relations-update.ts | 16 +--- src/database/queries/_options.ts | 75 +++++++++++-------- 5 files changed, 53 insertions(+), 58 deletions(-) diff --git a/knex/migrations/20180522000005_titres_etapes_points.js b/knex/migrations/20180522000005_titres_etapes_points.js index 73e1f9b51..5d5f500c3 100644 --- a/knex/migrations/20180522000005_titres_etapes_points.js +++ b/knex/migrations/20180522000005_titres_etapes_points.js @@ -27,6 +27,7 @@ exports.up = knex => { .string('titrePointId') .index() .references('titresPoints.id') + .onUpdate('CASCADE') .onDelete('CASCADE') table.string('geoSystemeId', 5).notNullable() table.specificType('coordonnees', 'POINT').notNullable() diff --git a/src/business/processes/titres-ids-update.ts b/src/business/processes/titres-ids-update.ts index e487499f0..ff702ec1c 100644 --- a/src/business/processes/titres-ids-update.ts +++ b/src/business/processes/titres-ids-update.ts @@ -130,8 +130,7 @@ const titresIdsUpdate = async (titresIds?: string[]) => { substances: { id: {} }, communes: { id: {} }, forets: { id: {} }, - justificatifs: { id: {} }, - incertitudes: { id: {} } + justificatifs: { id: {} } }, phase: { id: {} } }, diff --git a/src/business/utils/ids-update.js b/src/business/utils/ids-update.js index fc48f8e22..e674b1109 100644 --- a/src/business/utils/ids-update.js +++ b/src/business/utils/ids-update.js @@ -51,38 +51,38 @@ const idsUpdate = ( } // met à jour les propriétés de propsTitreEtapesIds - if (relation.props && parent && relation.depth === '1') { + if (relation.props && parent && relation.depth === 1) { relation.props.forEach(prop => { if (!element[prop]) return - Object.keys(element[prop]).forEach(elementId => { - const elementPropOld = element[prop][elementId] + Object.keys(element[prop]).forEach(propId => { + const elementPropOld = element[prop][propId] if (!elementPropOld || !elementPropOld.match(parentOldId)) return const elementPropNew = elementPropOld.replace(parentOldId, parent.id) - element[prop][elementId] = elementPropNew + element[prop][propId] = elementPropNew }) }) } // met à jour les contenus s'ils font référence à des ids - if (relation.props && parent && relation.depth === '2') { + if (relation.props && parent && relation.depth === 2) { relation.props.forEach(prop => { if (!element[prop]) return Object.keys(element[prop]).forEach(sectionId => { if (!element[prop][sectionId]) return - Object.keys(element[prop][sectionId]).forEach(elementId => { - const elementPropOld = element[prop][sectionId][elementId] + Object.keys(element[prop][sectionId]).forEach(propId => { + const elementPropOld = element[prop][sectionId][propId] if (!elementPropOld || !elementPropOld.match(parentOldId)) return const elementPropNew = elementPropOld.replace(parentOldId, parent.id) - element[prop][sectionId][elementId] = elementPropNew + element[prop][sectionId][propId] = elementPropNew }) }) }) diff --git a/src/business/utils/titre-id-and-relations-update.ts b/src/business/utils/titre-id-and-relations-update.ts index d003ce38e..14cace040 100644 --- a/src/business/utils/titre-id-and-relations-update.ts +++ b/src/business/utils/titre-id-and-relations-update.ts @@ -102,14 +102,6 @@ const titreRelation = { props: ['id', 'titrePointId'] } ] - }, - { - name: 'documents', - props: ['id', 'titreEtapeId'] - }, - { - name: 'incertitudes', - props: ['id', 'titreEtapeId'] } ] }, @@ -135,13 +127,7 @@ const titreRelation = { { name: 'etapes', props: ['titreTravauxId'], - idFind: titreEtapeIdFind, - relations: [ - { - name: 'documents', - props: ['id', 'titreTravauxEtapeId'] - } - ] + idFind: titreEtapeIdFind } ] } diff --git a/src/database/queries/_options.ts b/src/database/queries/_options.ts index c1076ff6a..a1e35123b 100644 --- a/src/database/queries/_options.ts +++ b/src/database/queries/_options.ts @@ -1,48 +1,47 @@ +const documentsRelateTrue = ['type'] +const documentsRelateFalse = [...documentsRelateTrue] + const documents = { graph: `[type, etapesAssociees]`, update: { insertMissing: true, - relate: ['type'], - unrelate: ['type'] + relate: documentsRelateTrue, + unrelate: documentsRelateFalse } } const entreprisesEtablissements = { - update: { - insertMissing: true - } + update: { insertMissing: true } } +const entreprisesRelateTrue = [] as string[] +const entreprisesRelateFalse = [ + ...entreprisesRelateTrue, + ...documentsRelateFalse.map(k => `documents.${k}`) +] + const entreprises = { graph: `[utilisateurs.permission, etablissements(orderDesc), documents.${documents.graph}]`, update: { insertMissing: true, - relate: [...documents.update.relate.map(k => `documents.${k}`)], - unrelate: [...documents.update.unrelate.map(k => `documents.${k}`)] + relate: entreprisesRelateTrue, + unrelate: entreprisesRelateTrue } } +const utilisateursRelateTrue = ['permission', 'administrations', 'entreprises'] + +const utilisateursRelateFalse = [ + ...utilisateursRelateTrue, + ...entreprisesRelateFalse.map(k => `entreprises.${k}`) +] + const utilisateurs = { graph: `[permission, administrations.[titresTypes, activitesTypes], entreprises.etablissements]`, update: { - relate: [ - 'permission', - 'administrations', - 'entreprises', - ...entreprises.update.relate.map(k => `entreprises.${k}`) - ], - unrelate: [ - 'permission', - 'administrations', - 'entreprises', - ...entreprises.update.unrelate.map(k => `entreprises.${k}`) - ], - noDelete: [ - 'permission', - 'administrations', - 'entreprises', - ...entreprises.update.relate - ] + relate: utilisateursRelateTrue, + unrelate: utilisateursRelateTrue, + noDelete: utilisateursRelateFalse } } @@ -86,12 +85,18 @@ const titresTypes = { graph: `[demarchesTypes(orderAsc).${demarchesTypes.graph}, type, autorisationsTitresStatuts]` } +const administrationsRelateTrue = [ + 'administrationsTypes', + 'departement', + 'region' +] + const administrations = { graph: `[utilisateurs.permission, titresTypes.${titresTypes.graph}, titresTypesTitresStatuts, titresTypesEtapesTypes, type, departement, region]`, update: { insertMissing: true, - relate: ['administrationsTypes', 'departement', 'region'], - unrelate: ['administrationsTypes', 'departement', 'region'] + relate: administrationsRelateTrue, + unrelate: administrationsRelateTrue } } @@ -124,8 +129,8 @@ const titresEtapesRelateFalse = [ 'substances.legales', 'points.references.geoSysteme', 'points.references.geoSysteme.unite', - ...documents.update.relate.map(k => `documents.${k}`), - ...documents.update.relate.map(k => `justificatifs.${k}`) + ...documentsRelateFalse.map(k => `documents.${k}`), + ...documentsRelateFalse.map(k => `justificatifs.${k}`) ] const titresEtapes = { @@ -153,10 +158,11 @@ const titresEtapes = { } } -const titresTravauxEtapesRelateTrue = [ - 'type', - 'statut', - ...documents.update.relate.map(k => `documents.${k}`) +const titresTravauxEtapesRelateTrue = ['type', 'statut'] + +const titreTravauxEtapesRelateFalse = [ + ...titresTravauxEtapesRelateTrue, + ...documentsRelateFalse.map(k => `documents.${k}`) ] const titresTravauxEtapes = { @@ -169,6 +175,9 @@ const titresTravauxEtapes = { update: { relate: titresTravauxEtapesRelateTrue, unrelate: titresTravauxEtapesRelateTrue, + noInsert: titreTravauxEtapesRelateFalse, + noUpdate: titreTravauxEtapesRelateFalse, + noDelete: titreTravauxEtapesRelateFalse, insertMissing: true } }