-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase.js
More file actions
51 lines (44 loc) · 1.26 KB
/
database.js
File metadata and controls
51 lines (44 loc) · 1.26 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
const sqlite3 = require('sqlite3').verbose()
const util = require('util')
const TABLES = ['athletes', 'teams', 'games', 'sports', 'events', 'results']
class DatabaseClass {
connect() {
this.db = new sqlite3.Database('./data/olympic_history.db', sqlite3.OPEN_READWRITE, err => {
if (err) {
return console.error(err.message)
}
console.log('Connected to the database.')
})
}
exec(sqlQuery) {
const exec = util.promisify(this.db.exec.bind(this.db))
return exec(sqlQuery)
}
all(sqlQuery) {
const all = util.promisify(this.db.all.bind(this.db))
return all(sqlQuery)
}
closeDB() {
const close = util.promisify(this.db.close.bind(this.db))
try {
close()
console.log(`Database has been closed`)
} catch (err) {
return console.error(err, 'closeDB error ==========')
}
}
async clear() {
try {
let sql = ``
for (const table of TABLES) {
sql = `${sql} DELETE FROM ${table}; VACUUM; DELETE FROM sqlite_sequence WHERE name = '${table}';`
}
await this.exec(sql)
console.log(`Tables has been cleared`)
} catch (err) {
console.error(err, 'clear tables error =============')
}
}
}
const Database = new DatabaseClass()
module.exports = Database