diff --git a/src/migrations/scripts/1709023701437-remove-covid-infos.ts b/src/migrations/scripts/1709023701437-remove-covid-infos.ts index 6cabe01aa537bad050471869141929490c43642c..1ca29871d7e08852fcea8c09243c17bcf838a52d 100644 --- a/src/migrations/scripts/1709023701437-remove-covid-infos.ts +++ b/src/migrations/scripts/1709023701437-remove-covid-infos.ts @@ -2,25 +2,27 @@ import { Db } from 'mongodb'; import { getDb } from '../migrations-utils/db'; export const up = async () => { - const db: Db = await getDb(); - - await db.collection('structures').updateMany({}, { $unset: { lockdownActivity: '' } }); - - await db.collection('parameters').drop(); - - console.log(`Update done: removed 'lockdownActivity' from 'structures' and deleted the 'parameters' collection`); + try { + const db: Db = await getDb(); + await db.collection('structures').updateMany({}, { $unset: { lockdownActivity: '' } }); + await db.collection('parameters').drop(); + console.log(`Update done: removed 'lockdownActivity' from 'structures' and deleted the 'parameters' collection`); + } catch (error) { + console.error('Error dropping lockdownActivity:', error); + } }; export const down = async () => { - const db: Db = await getDb(); - - const updateResult = await db.collection('structures').updateMany({}, { $set: { lockdownActivity: '' } }); - - await db - .collection('parameters') - .insertOne({ lockdownInfoDisplay: false, createdAt: new Date(), updatedAt: new Date() }); - - console.log( - `Downgrade done: added lockdownActivity to ${updateResult.modifiedCount} structures and added the 'parameters' collection back with its contents` - ); + try { + const db: Db = await getDb(); + const updateResult = await db.collection('structures').updateMany({}, { $set: { lockdownActivity: '' } }); + await db + .collection('parameters') + .insertOne({ lockdownInfoDisplay: false, createdAt: new Date(), updatedAt: new Date() }); + console.log( + `Downgrade done: added lockdownActivity to ${updateResult.modifiedCount} structures and added the 'parameters' collection back with its contents` + ); + } catch (error) { + console.error('Error restoring a lockdownActivity collection:', error); + } }; diff --git a/src/migrations/scripts/1714481277289-initializefreeworkshop.ts b/src/migrations/scripts/1714481277289-initializefreeworkshop.ts new file mode 100644 index 0000000000000000000000000000000000000000..a47d45b39149d8ac1be6d185b3af491983594793 --- /dev/null +++ b/src/migrations/scripts/1714481277289-initializefreeworkshop.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(); + const structures = await db.collection('structures').find().toArray(); + + for (const structure of structures) { + let freeWorkShopValue: string; + if (typeof structure.freeWorkShop === 'boolean') { + freeWorkShopValue = structure.freeWorkShop ? 'Oui' : 'Non'; + } else if (structure.freeWorkShop === 'underCondition') { + freeWorkShopValue = 'Oui, sous condition'; + } else { + freeWorkShopValue = structure.freeWorkShop; + } + + await db + .collection('structures') + .updateOne( + { _id: structure._id }, + { $set: { 'categories.freeWorkShop': freeWorkShopValue }, $unset: { freeWorkShop: '' } } + ); + } + + console.log(`Update done: Fixed invalid freeWorkShops values and move it to categories.`); + } catch (error) { + console.error('Error while fixing moving freeWorkShops to categories:', error); + } +}; + +export const down = async () => { + try { + const db: Db = await getDb(); + const structures = await db.collection('structures').find().toArray(); + + for (const structure of structures) { + const { categories } = structure; + + await db + .collection('structures') + .updateOne( + { _id: structure._id }, + { $set: { freeWorkShop: categories.freeWorkShop }, $unset: { 'categories.freeWorkShop': '' } } + ); + } + + console.log(`Downgrade done: moved freeWorkShop back from categories`); + } catch (error) { + console.error('Error moving back freeWorkShop:', error); + } +}; diff --git a/src/migrations/scripts/1714483632064-addfreeworkshopcategory.ts b/src/migrations/scripts/1714483632064-addfreeworkshopcategory.ts new file mode 100644 index 0000000000000000000000000000000000000000..c422a90fb4ed4ec6aa382f00ca4c6c588055e05c --- /dev/null +++ b/src/migrations/scripts/1714483632064-addfreeworkshopcategory.ts @@ -0,0 +1,40 @@ +import { getDb } from '../migrations-utils/db'; + +export const up = async () => { + try { + const db = await getDb(); + const newCategory = { + modules: [ + { + id: 'Oui', + name: 'Accompagnements gratuits', + }, + { + id: 'Oui, sous condition', + name: 'Accompagnements gratuits sous conditions', + }, + { + id: 'Non', + name: 'Accompagnements payants', + }, + ], + name: 'Gratuité', + theme: 'Gratuité', + id: 'freeWorkShop', + }; + await db.collection('categories').insertOne(newCategory); + console.log(`Update done: New category 'freeWorkShop' added successfully.`); + } catch (error) { + console.error(`Error while creating the new category 'freeWorkShop':`, error); + } +}; + +export const down = async () => { + try { + const db = await getDb(); + await db.collection('categories').deleteOne({ id: 'freeWorkShop' }); + console.log(`Downgrade done: removed the 'freeWorkShop' category.`); + } catch (error) { + console.error(`Error while removing the 'freeWorkShop' category:`, error); + } +}; diff --git a/src/migrations/scripts/1715086059103-changedemarchestheme.ts b/src/migrations/scripts/1715086059103-changedemarchestheme.ts new file mode 100644 index 0000000000000000000000000000000000000000..ac9dc65c7e1b3f6b5ae5cf76d30259f5e651d61a --- /dev/null +++ b/src/migrations/scripts/1715086059103-changedemarchestheme.ts @@ -0,0 +1,30 @@ +import { Db } from 'mongodb'; +import { getDb } from '../migrations-utils/db'; + +export const up = async () => { + try { + let document; + const db: Db = await getDb(); + const cursor = db.collection('categories').find({ name: 'Démarches en ligne' }); + while ((document = await cursor.next())) { + await db.collection('categories').updateOne({ _id: document._id }, { $set: { theme: 'Compétences numériques' } }); + } + console.log(`Update done: 'Démarches en ligne' theme has been changed to 'Compétences numériques'`); + } catch (error) { + console.error('Error while changing theme:', error); + } +}; + +export const down = async () => { + const db: Db = await getDb(); + try { + let document; + const cursor = db.collection('categories').find({ name: 'Démarches en ligne' }); + while ((document = await cursor.next())) { + await db.collection('categories').updateOne({ _id: document._id }, { $set: { theme: 'Démarches en ligne' } }); + } + console.log(`Downgrade done: 'Compétences numériques' theme has been changed back to 'Démarches en ligne'`); + } catch (error) { + console.error('Error while restoring theme:', error); + } +};