-
Notifications
You must be signed in to change notification settings - Fork 1
/
database.js
83 lines (72 loc) · 2.58 KB
/
database.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
var sqlite3 = require('sqlite3'),
chalk = require('chalk');
const
error = chalk.redBright('ERROR'),
warning = chalk.keyword('orange')('WARN'),
info = chalk.cyan('INFO');
function dbError(err){
if(err){
console.log(error, 'Database:', err.message);
}
}
let db = new sqlite3.Database('./db/viddrop.db', (err) => {
dbError(err);
console.log(info, 'Connected to viddrop.db.');
});
function closing(){
console.log(info, 'Shutting down...');
db.close();
console.log(info, 'Disconnected from viddrop.db.');
process.exit(0);
}
process.on('SIGINT', closing);
process.on('SIGHUP', closing);
process.on('SIGTERM', closing);
exports.login = function(user, pass, callback){
db.get('SELECT ID id FROM Users WHERE Username=? AND Password=?', [user, pass], (err, row) => {
dbError(err);
callback(row);
});
}
exports.getVideos = function(callback){
db.all('SELECT ID id, Solves solves, Date date FROM Videos', (err, rows) => {
dbError(err);
callback(rows);
});
}
function getSolves(num, callback){
db.get('SELECT Solves solves, Date date FROM Videos WHERE ID=?', [num], (err, row) => {
dbError(err);
callback(row);
});
}
function getTime(){
let date = new Date();
let min = date.getMinutes().toString().padStart(2, '0');
let sec = date.getSeconds().toString().padStart(2, '0');
return date.getMonth()+1 + '/' + date.getDate() + '/' + date.getFullYear() + ' ' + date.getHours() + ':' + min + ':' + sec;
}
exports.markVideo = function(num, time, solver, later){
if(num < 1) return; //Tasks -> 0.txt
getSolves(num, (row) => {
let solves = row.solves ? row.solves + ', ' + solver : solver;
if(row.date == 'Később') solves = solver;
if(later){
db.run('UPDATE Videos SET Solves=?, Date="Később" WHERE ID=?', [solves, num], dbError);
console.log(info, solver, chalk.keyword('orange')('claimed'), 'video #' + num + '.');
} else {
time = time ? getTime() : null;
db.run('UPDATE Videos SET Solves=?, Date=? WHERE ID=?', [solves, time, num], dbError);
if(!row.solves){ // User is the first to solve this
db.run('UPDATE Users SET Videos = Videos + 1 WHERE Username=?', [solver], dbError);
}
console.log(info, solver, chalk.keyword('green')('marked'), 'video #' + num + '.');
}
});
}
exports.getStats = function(callback){
db.all('SELECT Username user, Videos videos FROM USERS', (err, rows) => {
dbError(err);
callback(rows);
});
}