diff --git a/src/migrations/scripts/1708424735808-remove-passnumerique.ts b/src/migrations/scripts/1708424735808-remove-passnumerique.ts new file mode 100644 index 0000000000000000000000000000000000000000..7ba661015a61e8adc973b454531e1a6811fa9c9c --- /dev/null +++ b/src/migrations/scripts/1708424735808-remove-passnumerique.ts @@ -0,0 +1,53 @@ +import { Db } from 'mongodb'; +import { getDb } from '../migrations-utils/db'; + +export const up = async () => { + try { + const db: Db = await getDb(); + + // Remove passNumerique from categories + await db.collection('categories').updateOne( + { id: 'labelsQualifications' }, + { + $pull: { modules: { id: 'passNumerique' } }, + } + ); + + // Remove passNumerique from structures (categories > labelsQualifications) + const cursor = db.collection('structures').find({ 'categories.labelsQualifications': 'passNumerique' }); + let structure; + while ((structure = await cursor.next())) { + const updatedLabelsQualifications = structure.categories.labelsQualifications.filter( + (item) => item !== 'passNumerique' + ); + + await db.collection('structures').updateOne( + { _id: structure._id }, + { + $set: { 'categories.labelsQualifications': updatedLabelsQualifications }, + } + ); + } + console.log('Updated : removed passNumerique'); + } catch (error) { + console.error(`Removal of passNumerique from categories and structures failed due to ${error}`); + } +}; + +export const down = async () => { + try { + const db: Db = await getDb(); + + // Add passNumerique to categories + await db.collection('categories').updateOne( + { id: 'labelsQualifications' }, + { + $push: { modules: { id: 'passNumerique', name: 'Pass numérique' } }, + } + ); + + console.log('Downgraded : added passNumerique to categories'); + } catch (error) { + console.error(`Adding passNumerique to categories failed due to ${error}`); + } +};