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