all repos — caroster @ 16a6e4419b43fb38d4436e78c2387c8582673240

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

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

 1import createPassenger from "./createPassenger";
 2
 3export default [
 4  ({ nexus, strapi }) => ({
 5    resolvers: {
 6      Passenger: {
 7        // Filter user private fields in passenger lists
 8        user: {
 9          async resolve(parent) {
10            const passenger = await strapi.entityService.findOne(
11              "api::passenger.passenger",
12              parent.id,
13              { populate: ["user"] }
14            );
15            const user = passenger?.user;
16            if (!user) return null;
17
18            return {
19              value: {
20                id: user.id,
21                firstName: user.firstName,
22                lastName: user.lastName,
23                lang: user.lang,
24              },
25            };
26          },
27        },
28      },
29      UsersPermissionsUser: {
30        // Filter user vehicles if not for profile fetching
31        vehicles: {
32          async resolve(queriedUser, args, _context, query) {
33            if (query.path.prev.key !== "profile") return null;
34
35            const user = await strapi.entityService.findOne(
36              "plugin::users-permissions.user",
37              queriedUser.id,
38              { populate: ["vehicles"] }
39            );
40            if (!user?.vehicles) return null;
41
42            const { toEntityResponseCollection } = strapi
43              .plugin("graphql")
44              .service("format").returnTypes;
45
46            return toEntityResponseCollection(user.vehicles, {
47              args,
48              resourceUID: "api::vehicle.vehicle",
49            });
50          },
51        },
52      },
53      Mutation: {
54        createPassenger
55      },
56    },
57  }),
58];