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 "Travel.passengers": {
58 auth: false,
59 },
60 },
61 }),
62];