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 // @ts-expect-error
16 const passengersWithoutEvent = passengers.filter(
17 (passenger) => !passenger.event
18 );
19
20 for (const passenger of passengersWithoutEvent) {
21 if (!passenger.travel)
22 throw new Error(`Passenger ${passenger.id} has no travel and no event`);
23 const eventId = passenger.travel.event?.id;
24 if (!eventId)
25 throw new Error(`Travel of passenger ${passenger.id} has no event`);
26 await strapi.entityService.update(
27 "api::passenger.passenger",
28 passenger.id,
29 {
30 data: {
31 // @ts-expect-error
32 event: eventId,
33 },
34 }
35 );
36 console.log(`Passenger ${passenger.id} linked to event ${eventId}`);
37 }
38
39 process.exit(0);
40};
41
42main().catch((error) => {
43 console.error(error);
44 process.exit(1);
45});