-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathxpDatabase.js
More file actions
55 lines (53 loc) · 1.94 KB
/
Copy pathxpDatabase.js
File metadata and controls
55 lines (53 loc) · 1.94 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
const mysql = require('mysql2');
const db = mysql.createPool({
host: '',
port: ,
user: '',
password: '',
database: ''
});
module.exports = {
addXP: (userId, amount) => {
db.query('SELECT * FROM user_xp WHERE user_id = ?', [userId], (err, results) => {
if (err) { console.error('SELECT error:', err); return; }
let newXP, newLevel;
if (results.length > 0) {
const row = results[0];
newXP = row.xp + amount;
} else {
newXP = amount;
}
let level = 1;
let needed = 100;
let totalNeeded = 100;
while (newXP >= totalNeeded) {
level++;
needed = level * 100;
totalNeeded += needed;
}
if (results.length > 0) {
db.query('UPDATE user_xp SET xp = ?, level = ?, last_msg = ? WHERE user_id = ?',
[newXP, level, Date.now(), userId], (err) => {
if (err) console.error('UPDATE error:', err);
});
} else {
db.query('INSERT INTO user_xp (user_id, xp, level, last_msg) VALUES (?, ?, ?, ?)',
[userId, newXP, level, Date.now()], (err) => {
if (err) console.error('INSERT error:', err);
});
}
});
},
getXP: (userId, callback) => {
db.query('SELECT * FROM user_xp WHERE user_id = ?', [userId], (err, results) => {
if (err) { console.error('SELECT error:', err); return callback(null); }
callback(results[0]);
});
},
getTopUsers: (limit, callback) => {
db.query('SELECT * FROM user_xp ORDER BY level DESC, xp DESC LIMIT ?', [limit], (err, results) => {
if (err) { console.error('SELECT TOP error:', err); return callback([]); }
callback(results);
});
}
};