-
Notifications
You must be signed in to change notification settings - Fork 3
/
queries.js
143 lines (131 loc) · 3.31 KB
/
queries.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
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
const bcrypt = require("bcrypt");
const saltRounds = 10;
const Pool = require("pg").Pool;
const pool = new Pool({
user: "me",
host: "localhost",
database: "api",
password: "password",
port: 5432
});
const kStartingMoney = 300;
// const getPlayers = (request, response) => {
// pool.query("SELECT * FROM players ORDER BY id ASC", (error, results) => {
// if (error) {
// throw error;
// }
// response.status(200).json(results.rows);
// });
// };
const getPlayersByMoney = (_, response) => {
pool.query("SELECT * FROM players ORDER BY money DESC", (error, results) => {
if (error) {
throw error;
}
response.status(200).json(results.rows);
});
};
const getMoneyByUsernameCB = (username, cb) => {
pool.query(
"SELECT money FROM players WHERE username = $1",
[username],
(error, results) => {
if (error) {
throw error;
}
cb(results.rows[0]["money"]);
}
);
};
const getMoneyByUsername = (_, username, response) => {
pool.query(
"SELECT money FROM players WHERE username = $1",
[username],
(error, results) => {
if (error) {
throw error;
}
response.status(200).json(results.rows[0]["money"]);
}
);
};
function createPlayer(username, password, cb) {
// check if player exists
findByUsername(username, (_, result) => {
console.log(_, result);
if (result) {
return cb(false, "Username already exists!");
}
console.log("creating player");
const money = kStartingMoney;
bcrypt.hash(password, saltRounds, function(err, hashedpw) {
if (err) {
console.log("error during hashing", err);
return cb(false, "Error hashing pw.");
}
// Store hash in your password DB.
pool.query(
"INSERT INTO players (username, money, hashedpw) VALUES ($1, $2, $3)",
[username, money, hashedpw],
(error, results) => {
if (error) {
console.log("error during player insertion", err);
return cb(false, "Error adding player to db.");
}
console.log("signup successful!");
return cb(true, "Signup successful!");
}
);
});
});
}
const updatePlayer = (username, money) => {
return new Promise(function(resolve, reject) {
pool.query(
"UPDATE players SET money = $1 WHERE username = $2",
[money, username],
(error, results) => {
if (error) {
return reject(error);
}
resolve();
}
);
});
};
// const deletePlayer = (request, response) => {
// const username = request.params.username;
// pool.query(
// "DELETE FROM players WHERE username = $1",
// [username],
// (error, results) => {
// if (error) {
// throw error;
// }
// response.status(200).send(`User deleted with username: ${username}`);
// }
// );
// };
// passport.js authenticate
const findByUsername = function(username, cb) {
pool.query(
"SELECT * FROM players WHERE username = $1",
[username],
(error, results) => {
if (error) {
return cb(null, null);
}
return cb(null, results.rows[0]);
}
);
};
module.exports = {
// getPlayers,
getPlayersByMoney,
getMoneyByUsername,
getMoneyByUsernameCB,
createPlayer,
updatePlayer,
// deletePlayer,
findByUsername
};