· 6 years ago · May 10, 2019, 05:38 PM
1import mysql from 'mysql';
2import user from './user';
3import post from './post';
4
5class db {
6 constructor() {
7 // init db
8 this.init();
9
10 // init connect pool
11 this.pool = mysql.createPool({
12 connectionLimit : 10,
13 host : 'localhost',
14 user : 'root',
15 password : 'password',
16 database : 'rss'
17 });
18
19 // init tables
20 this.initTables();
21 }
22
23 init () {
24 // create db if not exist
25 const connection = mysql.createConnection({
26 host : 'localhost',
27 user : 'root',
28 password : 'password',
29 });
30
31 connection.connect((err) => {
32 connection.query('CREATE DATABASE IF NOT EXISTS rss',);
33 connection.end();
34 });
35 }
36
37 initTables () {
38 // user table
39 this.query(user.schema());
40 this.query(user.subscriberMapping());
41 this.query(user.postsMapping());
42
43 // post table
44 this.query(post.schema());
45 }
46
47 query(sql, cb) {
48 this.pool.getConnection((err, connection) => {
49 console.log(sql);
50
51 if (err) return console.log('error: ' + err.message);
52
53 connection.query(sql, (error, results, fields) => {
54 if (null != cb) cb(results);
55 connection.release();
56
57 if (error) return console.log('error: ' + error.message);
58 });
59 });
60 }
61
62 shutdown() {
63 this.pool.end((err) => {
64 console.log('Error occured when shutting down db: ' + err);
65 });
66 }
67
68 static instance() {
69 if (null == db._instance) {
70 db._instance = new db();
71 }
72 return db._instance;
73 }
74}
75db._instance = null;
76
77export default db;