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: args.data,
29 }
30 );
31
32 if (user && args.createVehicle) {
33 const vehicleData = {
34 name: args.data.vehicleName,
35 seats: args.data.seats || 0,
36 phone_number: args.data.phone_number,
37 user: user.id,
38 };
39 await strapi.entityService.create("api::vehicle.vehicle", {
40 data: vehicleData,
41 });
42 strapi.log.info(`New vehicle created for user ${user.id}`);
43 }
44
45 return {
46 value: createdTravel,
47 info: { args, resourceUID: "api::travel.travel" },
48 };
49 },
50 },
51 },
52 },
53 }),
54];