Skip to content

Commit 24a2748

Browse files
krubenokpierreTklein
authored andcommitted
Develop (#225)
* Write stats route * Update docs * Add tests * Fix crucial bug, add additional search feature * Update documentation * Make test more descriptive * Move variable to constants file * Constants/successes (#213) * Fix mention of docs to reflect new docs address * version 1.1.0 * version 1.1.1 * allow booleanValidator to take comparator value for codeOfConduct * Create tests for false codeOfConduct in hacker * Move success messages to constants file * add missing success message * Fix develop (#223) * Fix mention of docs to reflect new docs address * version 1.1.0 * version 1.1.1 * allow booleanValidator to take comparator value for codeOfConduct * Create tests for false codeOfConduct in hacker
1 parent d150a79 commit 24a2748

34 files changed

Lines changed: 885 additions & 268 deletions

constants/general.constant.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ CREATE_ACC_EMAIL_SUBJECTS[SPONSOR] = `You've been invited to create a sponsor ac
8080
CREATE_ACC_EMAIL_SUBJECTS[VOLUNTEER] = `You've been invited to create a volunteer account for ${HACKATHON_NAME}`;
8181
CREATE_ACC_EMAIL_SUBJECTS[STAFF] = `You've been invited to create a staff account for ${HACKATHON_NAME}`;
8282

83+
const CACHE_TIMEOUT_STATS = 5 * 60 * 1000;
84+
const CACHE_KEY_STATS = "hackerStats";
85+
8386
module.exports = {
8487
HACKATHON_NAME: HACKATHON_NAME,
8588
DEVPOST_REGEX: DEVPOST_REGEX,
@@ -112,5 +115,7 @@ module.exports = {
112115
SPONSOR_T4: SPONSOR_T4,
113116
SPONSOR_T5: SPONSOR_T5,
114117
ROLE_CATEGORIES: ROLE_CATEGORIES,
115-
POST_ROLES: POST_ROLES
118+
POST_ROLES: POST_ROLES,
119+
CACHE_TIMEOUT_STATS: CACHE_TIMEOUT_STATS,
120+
CACHE_KEY_STATS: CACHE_KEY_STATS
116121
};

constants/role.constant.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const Constants = {
66
const mongoose = require("mongoose");
77

88
const accountRole = {
9-
"_id": mongoose.Types.ObjectId(0),
9+
"_id": mongoose.Types.ObjectId("00000000e285ec4f6ec7e5c2"),
1010
"name": "account",
1111
"routes": [
1212
Constants.Routes.authRoutes.login,

constants/routes.constant.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,29 @@ const volunteerRoutes = {
159159
},
160160
};
161161

162+
const searchRoutes = {
163+
"get": {
164+
requestType: Constants.REQUEST_TYPES.GET,
165+
uri: "/api/search/"
166+
}
167+
};
168+
169+
const staffRoutes = {
170+
"hackerStats": {
171+
requestType: Constants.REQUEST_TYPES.GET,
172+
uri: "/api/hacker/stats",
173+
}
174+
}
175+
162176
const allRoutes = {
163177
"Auth": authRoutes,
164178
"Account": accountRoutes,
165179
"Hacker": hackerRoutes,
166180
"Sponsor": sponsorRoutes,
167181
"Team": teamRoutes,
168182
"Volunteer": volunteerRoutes,
183+
"Search": searchRoutes,
184+
"Staff": staffRoutes,
169185
};
170186

171187
/**
@@ -201,6 +217,8 @@ module.exports = {
201217
sponsorRoutes: sponsorRoutes,
202218
teamRoutes: teamRoutes,
203219
volunteerRoutes: volunteerRoutes,
220+
searchRoutes: searchRoutes,
221+
staffRoutes: staffRoutes,
204222
allRoutes: allRoutes,
205223
listAllRoutes: listAllRoutes,
206224
};

constants/success.constant.js

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
"use strict";
2+
3+
const ACCOUNT_GET_BY_EMAIL = "Account found by user email.";
4+
const ACCOUNT_GET_BY_ID = "Account found by user id.";
5+
const ACCOUNT_CREATE = "Account creation successful.";
6+
const ACCOUNT_UPDATE = "Account update successful.";
7+
const ACCOUNT_INVITE = "Account invitation successful.";
8+
9+
const AUTH_LOGIN = "Login successful.";
10+
const AUTH_LOGOUT = "Logout successful.";
11+
const AUTH_SEND_RESET_EMAIL = "Send reset email successful.";
12+
const AUTH_RESET_PASSWORD = "Reset password successful.";
13+
const AUTH_CONFIRM_ACCOUNT = "Confirm account successful.";
14+
const AUTH_GET_ROLE_BINDINGS = "Get role bindings successful.";
15+
const AUTH_GET_ROLES = "Get roles successful.";
16+
const AUTH_SEND_CONFIRMATION_EMAIL = "Send confirmation email successful.";
17+
18+
const HACKER_GET_BY_ID = "Hacker found by id.";
19+
const HACKER_READ = "Hacker retrieval successful.";
20+
const HACKER_CREATE = "Hacker creation successful.";
21+
const HACKER_UPDATE = "Hacker update successful.";
22+
23+
const RESUME_UPLOAD = "Resume upload successful.";
24+
const RESUME_DOWNLOAD = "Resume download successful.";
25+
26+
const SEARCH_QUERY = "Query search successful. Returning results.";
27+
const SEARCH_NO_RESULTS = "Query search successful. No results found.";
28+
29+
30+
const SPONSOR_GET_BY_ID = "Sponsor found by id.";
31+
const SPONSOR_CREATE = "Sponsor creation successful.";
32+
33+
const TEAM_GET_BY_ID = "Team found by id.";
34+
const TEAM_CREATE = "Team creation successful.";
35+
36+
const VOLUNTEER_CREATE = "Volunteer creation successful.";
37+
38+
module.exports = {
39+
ACCOUNT_GET_BY_EMAIL: ACCOUNT_GET_BY_EMAIL,
40+
ACCOUNT_GET_BY_ID: ACCOUNT_GET_BY_ID,
41+
ACCOUNT_CREATE: ACCOUNT_CREATE,
42+
ACCOUNT_UPDATE: ACCOUNT_UPDATE,
43+
ACCOUNT_INVITE: ACCOUNT_INVITE,
44+
45+
AUTH_LOGIN: AUTH_LOGIN,
46+
AUTH_LOGOUT: AUTH_LOGOUT,
47+
AUTH_SEND_RESET_EMAIL: AUTH_SEND_RESET_EMAIL,
48+
AUTH_RESET_PASSWORD: AUTH_RESET_PASSWORD,
49+
AUTH_CONFIRM_ACCOUNT: AUTH_CONFIRM_ACCOUNT,
50+
AUTH_GET_ROLE_BINDINGS: AUTH_GET_ROLE_BINDINGS,
51+
AUTH_SEND_CONFIRMATION_EMAIL: AUTH_SEND_CONFIRMATION_EMAIL,
52+
AUTH_GET_ROLES: AUTH_GET_ROLES,
53+
54+
HACKER_GET_BY_ID: HACKER_GET_BY_ID,
55+
HACKER_READ: HACKER_READ,
56+
HACKER_CREATE: HACKER_CREATE,
57+
HACKER_UPDATE: HACKER_UPDATE,
58+
59+
RESUME_UPLOAD: RESUME_UPLOAD,
60+
RESUME_DOWNLOAD: RESUME_DOWNLOAD,
61+
62+
SEARCH_QUERY: SEARCH_QUERY,
63+
SEARCH_NO_RESULTS: SEARCH_NO_RESULTS,
64+
65+
SPONSOR_GET_BY_ID: SPONSOR_GET_BY_ID,
66+
SPONSOR_CREATE: SPONSOR_CREATE,
67+
68+
TEAM_GET_BY_ID: TEAM_GET_BY_ID,
69+
TEAM_CREATE: TEAM_CREATE,
70+
71+
VOLUNTEER_CREATE: VOLUNTEER_CREATE,
72+
};

controllers/account.controller.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const Services = {
66
const Util = require("../middlewares/util.middleware");
77
const Constants = {
88
Error: require("../constants/error.constant"),
9+
Success: require("../constants/success.constant"),
910
};
1011

1112

@@ -22,7 +23,7 @@ async function getUserByEmail(req, res) {
2223

2324
if (acc) {
2425
return res.status(200).json({
25-
message: "Account found by user email",
26+
message: Constants.Success.ACCOUNT_GET_BY_EMAIL,
2627
data: acc.toStrippedJSON()
2728
});
2829
} else {
@@ -47,7 +48,7 @@ async function getUserById(req, res) {
4748

4849
if (acc) {
4950
return res.status(200).json({
50-
message: "Account found by user id",
51+
message: Constants.Success.ACCOUNT_GET_BY_ID,
5152
data: acc.toStrippedJSON()
5253
});
5354
} else {
@@ -69,7 +70,7 @@ async function getUserById(req, res) {
6970
async function addUser(req, res) {
7071
const acc = req.body.account;
7172
return res.status(200).json({
72-
message: "Account creation successful",
73+
message: Constants.Success.ACCOUNT_CREATE,
7374
data: acc.toStrippedJSON()
7475
});
7576
}
@@ -87,14 +88,14 @@ async function addUser(req, res) {
8788
*/
8889
function updatedAccount(req, res) {
8990
return res.status(200).json({
90-
message: "Changed account information",
91+
message: Constants.Success.ACCOUNT_UPDATE,
9192
data: req.body
9293
});
9394
}
9495

9596
function invitedAccount(req, res) {
9697
return res.status(200).json({
97-
message: "Successfully invited user",
98+
message: Constants.Success.ACCOUNT_INVITE,
9899
data: {}
99100
});
100101
}

controllers/auth.controller.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,54 @@
11
"use strict";
22

3+
const Success = require("../constants/success.constant");
4+
35
module.exports = {
46
onSuccessfulLogin: function (req, res) {
57
return res.status(200).json({
6-
message: "Successfully logged in",
8+
message: Success.LOGIN,
79
data: {}
810
});
911
},
1012
logout: function (req, res) {
1113
req.logout();
1214
return res.status(200).json({
13-
message: "Successfully logged out",
15+
message: Success.LOGOUT,
1416
data: {}
1517
});
1618
},
1719
sentResetEmail: function (req, res) {
1820
return res.status(200).json({
19-
message: "Sent reset email",
21+
message: Success.AUTH_SEND_RESET_EMAIL,
2022
data: {}
2123
});
2224
},
2325
resetPassword: function (req, res) {
2426
return res.status(200).json({
25-
message: "Successfully reset password",
27+
message: Success.AUTH_RESET_PASSWORD,
2628
data: {}
2729
});
2830
},
2931
confirmAccount: function (req, res) {
3032
return res.status(200).json({
31-
message: "Successfully confirmed account",
33+
message: Success.AUTH_CONFIRM_ACCOUNT,
3234
data: {}
3335
});
3436
},
3537
retrieveRoleBindings: function (req, res) {
3638
return res.status(200).json({
37-
message: "Successfully retrieved role bindings",
39+
message: Success.AUTH_GET_ROLE_BINDINGS,
3840
data: req.roleBindings.toJSON()
3941
});
4042
},
4143
sentConfirmationEmail: function (req, res) {
4244
return res.status(200).json({
43-
message: "Successfully resent account email",
45+
message: Success.AUTH_SEND_CONFIRMATION_EMAIL,
4446
data: {}
4547
})
4648
},
4749
retrievedRoles: function (req, res) {
4850
return res.status(200).json({
49-
message: "Successfully retrieved all roles",
51+
message: Success.AUTH_GET_ROLES,
5052
data: req.roles
5153
})
5254
}

controllers/hacker.controller.js

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const Services = {
55
};
66
const Util = require("../middlewares/util.middleware");
77
const Constants = {
8+
Success: require("../constants/success.constant"),
89
Error: require("../constants/error.constant"),
910
};
1011

@@ -21,7 +22,7 @@ async function findById(req, res) {
2122

2223
if (hacker) {
2324
return res.status(200).json({
24-
message: "Successfully retrieved hacker information",
25+
message: Constants.Success.HACKER_GET_BY_ID,
2526
data: hacker.toJSON()
2627
});
2728
} else {
@@ -41,7 +42,7 @@ async function findById(req, res) {
4142
*/
4243
function showHacker(req, res) {
4344
return res.status(200).json({
44-
message: "Hacker retrieval successful",
45+
message: Constants.Success.HACKER_READ,
4546
data: req.body.hacker.toJSON()
4647
});
4748
}
@@ -55,7 +56,7 @@ function showHacker(req, res) {
5556
*/
5657
function createdHacker(req, res) {
5758
return res.status(200).json({
58-
message: "Hacker creation successful",
59+
message: Constants.Success.HACKER_CREATE,
5960
data: req.body.hacker.toJSON()
6061
});
6162
}
@@ -73,14 +74,14 @@ function createdHacker(req, res) {
7374
*/
7475
function updatedHacker(req, res) {
7576
return res.status(200).json({
76-
message: "Changed hacker information",
77+
message: Constants.Success.HACKER_UPDATE,
7778
data: req.body
7879
});
7980
}
8081

8182
function uploadedResume(req, res) {
8283
return res.status(200).json({
83-
message: "Uploaded resume",
84+
message: Constants.Success.RESUME_UPLOAD,
8485
data: {
8586
filename: req.body.gcfilename
8687
}
@@ -89,19 +90,30 @@ function uploadedResume(req, res) {
8990

9091
function downloadedResume(req, res) {
9192
return res.status(200).json({
92-
message: "Downloaded resume",
93+
message: Constants.Success.RESUME_DOWNLOAD,
9394
data: {
9495
id: req.body.id,
9596
resume: req.body.resume
9697
}
9798
});
9899
}
99100

101+
function gotStats(req, res) {
102+
return res.status(200).json({
103+
message: "Retrieved stats",
104+
data: {
105+
stats: req.body.stats,
106+
}
107+
});
108+
109+
}
110+
100111
module.exports = {
101112
updatedHacker: updatedHacker,
102113
findById: Util.asyncMiddleware(findById),
103114
createdHacker: createdHacker,
104115
uploadedResume: uploadedResume,
105116
downloadedResume: downloadedResume,
106117
showHacker: showHacker,
118+
gotStats: gotStats,
107119
};

controllers/search.controller.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ const Services = {
44
Logger: require("../services/logger.service")
55
};
66
const Util = require("../middlewares/util.middleware");
7+
const Success = require("../constants/success.constant");
78

89
async function searchResults(req, res) {
910
let results = req.body.results;
1011
let message;
11-
if(results.length < 1){
12-
message = "No results found."
13-
results = {}
14-
}
15-
else{
16-
message = "Successfully executed query, returning all results"
12+
if (results.length < 1) {
13+
message = Success.SEARCH_NO_RESULTS;
14+
results = {};
15+
} else {
16+
message = Success.SEARCH_QUERY;
1717
}
1818
return res.status(200).json({
1919
message: message,
@@ -23,4 +23,4 @@ async function searchResults(req, res) {
2323

2424
module.exports = {
2525
searchResults: Util.asyncMiddleware(searchResults)
26-
}
26+
};

0 commit comments

Comments
 (0)