-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelpers.js
More file actions
98 lines (89 loc) · 2.53 KB
/
helpers.js
File metadata and controls
98 lines (89 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/**
* Dec 12, 2019
* Frederick Lee
*/
// Helper functions
/**
* Checks if the email is already in the database or not
* @param {string} email
* @param {object} userDatabase users database
* @returns {boolean} true if email is in the database. false otherwise
*/
const isRegisteredEmail = (email, userDatabase) => {
for (const userId in userDatabase) {
if (userDatabase[userId].email === email) {
return true;
}
}
return false;
};
/**
* Gets the user object given the user ID
* @param {string} userId The code for the specific user. The code is generated with our random string function
* @param {object} userDatabase users database
* @returns {object} user object. undefined if not found
*/
const getUser = (userId, userDatabase) => {
return userDatabase[userId];
};
/**
* Finds the user object in the "users" database given the email
* @param {string} email email registerd with the user to find
* @param {object} userDatabase users database
* @returns {object} the user object. null if not found.
*/
const getUserByEmail = (email, userDatabase) => {
for (const userId in userDatabase) {
if (userDatabase[userId].email === email) {
return userDatabase[userId];
}
}
};
/**
* Returns an object of all the URLs in urlDatabase that belong to user
* @param {string} user user's id from the user object {id, email, password}
* @param {object} urlDatabase URL database
* @returns {obj}
*/
const urlsForUser = (id, urlDatabase) => {
const userUrls = {};
for (const shortUrlKey in urlDatabase) {
if (urlDatabase[shortUrlKey].userId === id) {
userUrls[shortUrlKey] = urlDatabase[shortUrlKey];
}
}
return userUrls;
};
/**
* Checks if the url is in our database
* @param {string} shortUrl key of urlDatabase
* @param {object} urlDatabase url database
* @returns {boolean} true if short url is in the database. false otherwise
*/
const isValidUrl = (shortUrl, urlDatabase) => {
if (urlDatabase[shortUrl]) {
return true;
}
return false;
};
/**
* Checks if the shortUrl belongs to the user
* @param {string} shortUrl key of urlDatabase
* @param {object} user user object
* @param {object} urlDatabase URL database
* @returns {boolean} true if the url's user id is user.id. false otherwise
*/
const isUserUrl = (shortUrl, user, urlDatabase) => {
if (isValidUrl(shortUrl, urlDatabase) && urlDatabase[shortUrl].userId === user.id) {
return true;
}
return false;
};
module.exports = {
isRegisteredEmail,
getUser,
getUserByEmail,
urlsForUser,
isUserUrl,
isValidUrl,
};