(req, res)
| 88 | */ |
| 89 | |
| 90 | const getUsers = async (req, res) => { |
| 91 | try { |
| 92 | // getting user details by id if present. |
| 93 | const { q, dev: devParam, query, profileStatus } = req.query; |
| 94 | const dev = devParam === "true"; |
| 95 | const queryString = (dev ? q : query) || ""; |
| 96 | const transformedQuery = parseSearchQuery(queryString); |
| 97 | const qualifiers = getQualifiers(queryString); |
| 98 | // Should throw an error if the new query parameter is without feature flag |
| 99 | if (q && !dev) { |
| 100 | return res.boom.notFound("Route not found"); |
| 101 | } |
| 102 | // getting user details by id if present. |
| 103 | |
| 104 | if (req.query.id) { |
| 105 | const id = req.query.id; |
| 106 | let result, user; |
| 107 | try { |
| 108 | result = await dataAccess.retrieveUsers({ id: id }); |
| 109 | user = result.user; |
| 110 | } catch (error) { |
| 111 | logger.error(`Error while fetching user: ${error}`); |
| 112 | return res.boom.serverUnavailable(SOMETHING_WENT_WRONG); |
| 113 | } |
| 114 | if (!result.userExists) { |
| 115 | return res.boom.notFound("User doesn't exist"); |
| 116 | } |
| 117 | return res.json({ |
| 118 | message: "User returned successfully!", |
| 119 | user, |
| 120 | }); |
| 121 | } |
| 122 | |
| 123 | const profile = req.query.profile === "true"; |
| 124 | |
| 125 | if (profile) { |
| 126 | if (!req.userData.id) { |
| 127 | return res.boom.badRequest("User ID not provided."); |
| 128 | } |
| 129 | |
| 130 | try { |
| 131 | const result = await dataAccess.retrieveUsers({ id: req.userData.id }); |
| 132 | return res.send(result.user); |
| 133 | } catch (error) { |
| 134 | logger.error(`Error while fetching user: ${error}`); |
| 135 | return res.boom.serverUnavailable(INTERNAL_SERVER_ERROR); |
| 136 | } |
| 137 | } |
| 138 | |
| 139 | if (profileStatus) { |
| 140 | const normalizedProfileStatus = String(profileStatus).trim().toUpperCase(); |
| 141 | try { |
| 142 | const users = await userQuery.fetchUserForKeyValue("profileStatus", normalizedProfileStatus); |
| 143 | return res.json({ |
| 144 | message: `Users with profile status ${normalizedProfileStatus} returned successfully!`, |
| 145 | count: users.length, |
| 146 | users: users, |
| 147 | }); |
no test coverage detected