Skip to content

Commit

Permalink
moved routed & refactors
Browse files Browse the repository at this point in the history
  • Loading branch information
Mir-SA committed Aug 18, 2022
1 parent 4c39591 commit c39956a
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 77 deletions.
57 changes: 11 additions & 46 deletions controllers/skills.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
});
}

/**
Expand All @@ -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 : [],
});
}

/**
Expand All @@ -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,
};
27 changes: 27 additions & 0 deletions controllers/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -326,4 +352,5 @@ module.exports = {
getUserById,
profileURL,
addDefaultArchivedRole,
userWithSkill,
};
30 changes: 0 additions & 30 deletions models/skills.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,38 +65,8 @@ async function fetchUserSkills(userName) {
}
}

/**
* Fetch Users with given Skill
*
* @param skill { String }: Get users with given skill
* @return {Promise<skills|Array>}
*/
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,
};
29 changes: 29 additions & 0 deletions models/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,34 @@ const addDefaultArchivedRole = async () => {
}
};

/**
*
*
* Fetch Users with given Skill
*
* @param skill { String }: Get users with given skill
* @return {Promise<skills|Array>}
*/
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,
Expand All @@ -223,4 +251,5 @@ module.exports = {
updateUserPicture,
fetchUserImage,
addDefaultArchivedRole,
userWithSkill,
};
1 change: 0 additions & 1 deletion routes/skills.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
2 changes: 2 additions & 0 deletions routes/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;

0 comments on commit c39956a

Please sign in to comment.