From c39956a0f4d7890f29574a46bb996531c181fd41 Mon Sep 17 00:00:00 2001 From: Mir <65391345+Mir-SA@users.noreply.github.com> Date: Tue, 16 Aug 2022 10:20:14 +0530 Subject: [PATCH] moved routed & refactors --- controllers/skills.js | 57 +++++++++---------------------------------- controllers/users.js | 27 ++++++++++++++++++++ models/skills.js | 30 ----------------------- models/users.js | 29 ++++++++++++++++++++++ routes/skills.js | 1 - routes/users.js | 2 ++ 6 files changed, 69 insertions(+), 77 deletions(-) diff --git a/controllers/skills.js b/controllers/skills.js index a97cacab12..7433cf7ef9 100644 --- a/controllers/skills.js +++ b/controllers/skills.js @@ -9,20 +9,17 @@ const logger = require("../utils/logger"); * @param res {Object} - Express response object */ async function awardSkill(req, res) { - let addedData; - try { const { username } = req.params; - addedData = await skills.awardSkill(req.body, username); + const addedData = await skills.awardSkill(req.body, username); + return res.json({ + message: "Added data successfully!", + content: addedData, + }); } catch (error) { logger.error("Error posting skill data: ", error); return res.boom.notFound("User doesn't exist"); } - - return res.json({ - message: "Added data successfully!", - content: addedData, - }); } /** @@ -32,19 +29,17 @@ async function awardSkill(req, res) { * @param res {Object} - Express response object */ async function fetchSkills(req, res) { - let allSkills; - try { - allSkills = await skills.fetchSkills(); + const allSkills = await skills.fetchSkills(); + + return res.json({ + message: "Skills returned successfully!", + skills: allSkills.length > 0 ? allSkills : [], + }); } catch (error) { logger.error("Error fetching skill data: ", error); return res.boom.serverUnavailable("Something went wrong please contact admin"); } - - return res.json({ - message: "Skills returned successfully!", - skills: allSkills.length > 0 ? allSkills : [], - }); } /** @@ -68,38 +63,8 @@ async function fetchUserSkills(req, res) { } } -/** - * Fetch users with given skill - * - * @param req {Object} - Express request object - * @param res {Object} - Express response object - */ -async function userWithSkill(req, res) { - let { skill } = req.params; - // In case user makes query with - or _ for multiple words - const regex = /[-_]/g; - // replace those chars with whitespace - skill = regex.test(skill) ? skill.replace(regex, " ") : skill; - let filteredData; - - try { - filteredData = await skills.userWithSkill(skill); - - if (filteredData.length) { - return res.json({ - message: "Users returned successfully!", - data: filteredData, - }); - } else throw new Error(); - } catch (error) { - logger.error("Error fetching user with skill: ", error); - return res.boom.notFound("Invalid Skill. Please re-check input data"); - } -} - module.exports = { fetchSkills, awardSkill, fetchUserSkills, - userWithSkill, }; diff --git a/controllers/users.js b/controllers/users.js index 2e930d0994..542585e5e4 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -312,6 +312,32 @@ const addDefaultArchivedRole = async (req, res) => { } }; +/** + * Fetch users with given skill + * + * @param req {Object} - Express request object + * @param res {Object} - Express response object + */ +async function userWithSkill(req, res) { + const { skillName } = req.params; + const regex = /[-_]/g; + const skillWithoutSpecialChar = regex.test(skillName) ? skillName.replace(regex, " ") : skillName; + + try { + const filteredData = await userQuery.userWithSkill(skillWithoutSpecialChar); + + if (filteredData.length) { + return res.json({ + message: "Users returned successfully!", + data: filteredData, + }); + } else throw new Error(); + } catch (error) { + logger.error("Error fetching user with skill: ", error); + return res.boom.notFound("Invalid Skill. Please re-check input data"); + } +} + module.exports = { verifyUser, generateChaincode, @@ -326,4 +352,5 @@ module.exports = { getUserById, profileURL, addDefaultArchivedRole, + userWithSkill, }; diff --git a/models/skills.js b/models/skills.js index 1874066bbf..e0071a6485 100644 --- a/models/skills.js +++ b/models/skills.js @@ -65,38 +65,8 @@ async function fetchUserSkills(userName) { } } -/** - * Fetch Users with given Skill - * - * @param skill { String }: Get users with given skill - * @return {Promise} - */ -async function userWithSkill(skill) { - let userData; - let filteredData; - - try { - userData = await users.fetchUsers(skill); - const newData = userData.map((user) => { - const newSkill = user.skills.map((skill) => skill.toLowerCase()); - user.skills = newSkill; - return user; - }); - - filteredData = newData.filter((user) => { - return user.skills.includes(skill.toLowerCase()); - }); - if (!filteredData.length) throw Error(); - } catch (error) { - logger.error("Error getting user with given skill", error); - } - - return filteredData; -} - module.exports = { fetchSkills, awardSkill, fetchUserSkills, - userWithSkill, }; diff --git a/models/users.js b/models/users.js index af2a91c45b..1d4c461f57 100644 --- a/models/users.js +++ b/models/users.js @@ -214,6 +214,34 @@ const addDefaultArchivedRole = async () => { } }; +/** + * + * + * Fetch Users with given Skill + * + * @param skill { String }: Get users with given skill + * @return {Promise} + */ +async function userWithSkill(skill) { + try { + const userData = await fetchUsers(skill); + const newUserData = userData.map((user) => { + const newSkill = user.skills.map((skill) => skill.toLowerCase()); + user.skills = newSkill; + return user; + }); + + const filteredUserData = newUserData.filter((user) => { + return user.skills.includes(skill.toLowerCase()); + }); + if (!filteredUserData.length) throw Error(); + return filteredUserData; + } catch (error) { + logger.error("Error getting user with given skill", error); + } + return null; +} + module.exports = { addOrUpdate, fetchUsers, @@ -223,4 +251,5 @@ module.exports = { updateUserPicture, fetchUserImage, addDefaultArchivedRole, + userWithSkill, }; diff --git a/routes/skills.js b/routes/skills.js index 30bd779767..bc45e2bcb0 100644 --- a/routes/skills.js +++ b/routes/skills.js @@ -6,6 +6,5 @@ const authenticate = require("../middlewares/authenticate"); router.post("/:username", authenticate, skills.awardSkill); router.get("/", skills.fetchSkills); router.get("/:username", authenticate, skills.fetchUserSkills); -router.get("/users/:skill", authenticate, skills.userWithSkill); module.exports = router; diff --git a/routes/users.js b/routes/users.js index 5af3012677..ea810a5715 100644 --- a/routes/users.js +++ b/routes/users.js @@ -24,4 +24,6 @@ router.patch("/rejectDiff", authenticate, authorizeUser(SUPER_USER), users.rejec router.patch("/add-default-archived-role", authenticate, authorizeUser(SUPER_USER), users.addDefaultArchivedRole); router.patch("/:userId", authenticate, authorizeUser(SUPER_USER), users.updateUser); +router.get("/skill/:skillName", authenticate, users.userWithSkill); + module.exports = router;