-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtaco.js
70 lines (61 loc) · 1.59 KB
/
taco.js
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
const DB = require("./db.js");
const slack = require("./slack.js");
const populate = () => {
slack
.getAllUsers()
.then(formatUsers)
.then(writeMembers)
.then(() => {
console.log("POPULATED DB!");
})
.catch(e => {
console.log("ERROR WHEN POPULATING DB :(");
console.log(e);
});
};
const init = () => {
if (!DB.exists()) populate();
};
const formatUsers = users => {
const members = users.members;
return members.map(member => ({
id: member.id,
name: member.name
}));
};
const updateUserName = (DBUser, APIMember) => {
return { ...DBUser, name: APIMember.name };
};
const writeMembers = APIMembers => {
const DBUsers = DB.getUsers();
const formattedDBUsers = APIMembers.map(APIMember => {
const DBUser = DBUsers.find(dbu => dbu.id === APIMember.id);
if (DBUser !== undefined) return updateUserName(DBUser, APIMember);
else return { ...APIMember, tacos: 0, left: 5 };
});
DB.saveUsers(formattedDBUsers);
};
const giveTaco = (index, amount = 1) => {
const DBUsers = DB.getUsers();
const user = DBUsers[index];
DBUsers[index] = { ...user, tacos: user.tacos + amount };
DB.saveUsers(DBUsers);
};
const removeLeft = (index, amount = 1) => {
const DBUsers = DB.getUsers();
const user = DBUsers[index];
DBUsers[index] = { ...user, left: user.left - amount };
DB.saveUsers(DBUsers);
};
const resetLeft = () => {
const DBUsers = DB.getUsers();
const fullUsers = DBUsers.map(user => ({ ...user, left: 5 }));
DB.saveUsers(fullUsers);
};
module.exports = {
init,
writeMembers,
giveTaco,
removeLeft,
resetLeft
};