all repos — caroster @ 023ece6b1795904bfe86c87c7d6fb9135203ad67

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

backend/migrations/passengers.js (view raw)

 1/**
 2 * Migrate raw passengers to passenger components
 3 * for event waiting list & car passengers
 4 *
 5 * **WARNING**: 'passengers' column in 'cars' table must be cloned to
 6 * another column ('old_passengers') to avoid data loss BEFORE
 7 * deploying new project version. To do so:
 8 * - alter table cars add column old_passengers jsonb;
 9 * - update cars set old_passengers = passengers;
10 *
11 * Steps:
12 * 1. Clone 'passengers' column in 'cars' table
13 * 2. Start Strapi to apply new db schema
14 * 3. Launch this script
15 */
16
17const Strapi = require('strapi');
18
19const main = async () => {
20  await Strapi().load();
21
22  /**
23   * Migrate event waiting list
24   */
25  const events = await strapi.services.event.find({_limit: -1});
26
27  for (let i = 0; i < events.length; i++) {
28    const event = events[i];
29    const {waiting_list} = event;
30    if (!waiting_list) continue;
31    const waitingList = waiting_list.map(name => ({name}));
32    strapi.log.debug(`Migrate waiting list for event ${event.id}`);
33    await strapi.services.event.update({id: event.id}, {waitingList});
34  }
35
36  /**
37   * Migrate car passengers
38   */
39  const cars = await strapi.services.car.find({_limit: -1});
40  for (let i = 0; i < cars.length; i++) {
41    const car = cars[i];
42    const {old_passengers} = car;
43    if (!old_passengers) continue;
44    const passengers = old_passengers.map(name => ({name}));
45    strapi.log.debug(`Migrate passengers for car ${car.id}`);
46    await strapi.services.car.update({id: car.id}, {passengers});
47  }
48
49  strapi.log.debug('Done.');
50  process.exit(0);
51};
52
53main();