all repos — caroster @ a69dc08b4f89eca3499b1321ae3077f0846ae591

[Octree] Group carpool to your event https://caroster.io

chore: 🔨 Set migration script for passengers

#193
Tim Izzo tim@octree.ch
Thu, 21 Oct 2021 09:32:43 +0200
commit

a69dc08b4f89eca3499b1321ae3077f0846ae591

parent

7ce6d4879bd581f8a7a3ab70053eff5ee9bdeffe

3 files changed, 55 insertions(+), 2 deletions(-)

jump to
A backend/migrations/.gitignore

@@ -0,0 +1,1 @@

+mongodb
M backend/migrations/fill-uuid.jsbackend/migrations/fill-uuid.js

@@ -4,7 +4,6 @@ * This migration script set one to each existing events

*/ const Strapi = require('strapi'); -const uuid = require('uuid'); const main = async () => { await Strapi().load();

@@ -14,7 +13,7 @@

for (let i = 0; i < events.length; i++) { const event = events[i]; strapi.log.debug(`Set UUID for event ${event.id}`); - await strapi.services.event.update({id: event.id}, {uuid: uuid.v4()}); + await strapi.services.event.update({id: event.id}, {uuid: event.id}); } strapi.log.debug('Done.');
A backend/migrations/passengers.js

@@ -0,0 +1,53 @@

+/** + * Migrate raw passengers to passenger components + * for event waiting list & car passengers + * + * **WARNING**: 'passengers' column in 'cars' table must be cloned to + * another column ('old_passengers') to avoid data loss BEFORE + * deploying new project version. To do so: + * - alter table cars add column old_passengers jsonb; + * - update cars set old_passengers = passengers; + * + * Steps: + * 1. Clone 'passengers' column in 'cars' table + * 2. Start Strapi to apply new db schema + * 3. Launch this script + */ + +const Strapi = require('strapi'); + +const main = async () => { + await Strapi().load(); + + /** + * Migrate event waiting list + */ + const events = await strapi.services.event.find({_limit: -1}); + + for (let i = 0; i < events.length; i++) { + const event = events[i]; + const {waiting_list} = event; + if (!waiting_list) continue; + const waitingList = waiting_list.map(name => ({name})); + strapi.log.debug(`Migrate waiting list for event ${event.id}`); + await strapi.services.event.update({id: event.id}, {waitingList}); + } + + /** + * Migrate car passengers + */ + const cars = await strapi.services.car.find({_limit: -1}); + for (let i = 0; i < cars.length; i++) { + const car = cars[i]; + const {old_passengers} = car; + if (!old_passengers) continue; + const passengers = old_passengers.map(name => ({name})); + strapi.log.debug(`Migrate passengers for car ${car.id}`); + await strapi.services.car.update({id: car.id}, {passengers}); + } + + strapi.log.debug('Done.'); + process.exit(0); +}; + +main();