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];