all repos — caroster @ 2b432f87d46e7cab99f95223088266dcc4cb2dda

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

backend/src/graphql/travel/index.ts (view raw)

 1export default [
 2  ({ nexus, strapi }) => ({
 3    types: [
 4      nexus.extendType({
 5        type: "Mutation",
 6        definition(t) {
 7          t.field("createTravel", {
 8            type: "TravelEntityResponse",
 9            args: {
10              data: nexus.nonNull("TravelInput"),
11              createVehicle: "Boolean",
12            },
13          });
14        },
15      }),
16    ],
17    resolvers: {
18      Mutation: {
19        createTravel: {
20          async resolve(_root, args, context) {
21            const {
22              state: { user },
23            } = context;
24
25            const createdTravel = await strapi.entityService.create(
26              "api::travel.travel",
27              {
28                data: {
29                  ...args.data,
30                  user: user?.id,
31                },
32              }
33            );
34
35            if (user && args.createVehicle) {
36              const vehicleData = {
37                name: args.data.vehicleName,
38                seats: args.data.seats || 0,
39                phone_number: args.data.phone_number,
40                user: user.id,
41              };
42              await strapi.entityService.create("api::vehicle.vehicle", {
43                data: vehicleData,
44              });
45              strapi.log.info(`New vehicle created for user ${user.id}`);
46            }
47
48            return {
49              value: createdTravel,
50              info: { args, resourceUID: "api::travel.travel" },
51            };
52          },
53        },
54      },
55    },
56    resolversConfig: {
57      "Mutation.createTravel": {
58        auth: false,
59        policies: ["api::travel.check-creation"],
60      },
61      "Mutation.updateTravel": {
62        auth: false,
63        policies: ["api::travel.check-update"],
64      },
65      "Mutation.deleteTravel": {
66        auth: false,
67        policies: ["api::travel.check-deletion"],
68      },
69      "Travel.passengers": {
70        auth: false,
71      },
72    },
73  }),
74];