backend/src/migrations/passengers-event.ts (view raw)
1const Strapi = require("@strapi/strapi");
2
3const main = async () => {
4 const appContext = await Strapi.compile();
5 await Strapi(appContext).load();
6
7 const passengers = await strapi.entityService.findMany(
8 "api::passenger.passenger",
9 {
10 limit: -1,
11 populate: ["event", "travel", "travel.event"],
12 }
13 );
14
15 const passengersWithoutEvent = passengers.filter(
16 (passenger) => !passenger.event
17 );
18
19 for (const passenger of passengersWithoutEvent) {
20 if (!passenger.travel)
21 throw new Error(`Passenger ${passenger.id} has no travel and no event`);
22 const eventId = passenger.travel.event?.id;
23 if (!eventId)
24 throw new Error(`Travel of passenger ${passenger.id} has no event`);
25 await strapi.entityService.update(
26 "api::passenger.passenger",
27 passenger.id,
28 {
29 data: {
30 event: eventId,
31 },
32 }
33 );
34 console.log(`Passenger ${passenger.id} linked to event ${eventId}`);
35 }
36
37 process.exit(0);
38};
39
40main().catch((error) => {
41 console.error(error);
42 process.exit(1);
43});