71 lines
1.7 KiB
JavaScript
71 lines
1.7 KiB
JavaScript
'use strict'
|
|
|
|
const mysql = require('mysql2')
|
|
|
|
const mysqlURL = process.env.DB_URL || 'mysql://user:password@localhost:3306/database'
|
|
|
|
let hosts = mysqlURL.split("://")[1].split("/")[0];
|
|
let mysql_database = mysqlURL.split("://")[1].split("/")[1].split("?")[0];
|
|
let mysql_user = hosts.split("@")[0].split(":")[0];
|
|
let mysql_password = hosts.split("@")[0].split(":")[1];
|
|
let mysql_host = hosts.split("@")[1].split(":")[0];
|
|
let mysql_port = hosts.split("@")[1].split(":")[1];
|
|
|
|
const db = mysql.createPool({
|
|
host: mysql_host,
|
|
user: mysql_user,
|
|
password: mysql_password,
|
|
database: mysql_database,
|
|
port: mysql_port
|
|
})
|
|
|
|
db.query(`CREATE TABLE IF NOT EXISTS tb_count (
|
|
id INTEGER PRIMARY KEY AUTO_INCREMENT
|
|
NOT NULL
|
|
UNIQUE,
|
|
name VARCHAR (32) NOT NULL
|
|
UNIQUE,
|
|
num BIGINT NOT NULL
|
|
DEFAULT (0)
|
|
);`)
|
|
|
|
function getNum(name) {
|
|
return new Promise((resolve, reject) => {
|
|
db.query('SELECT `name`, `num` from tb_count WHERE `name` = ?', name, (err, rows) => {
|
|
if (err) reject(err)
|
|
|
|
resolve(rows[0] || { name, num: 0 })
|
|
})
|
|
})
|
|
}
|
|
|
|
function getAll(name) {
|
|
return new Promise((resolve, reject) => {
|
|
db.query('SELECT * from tb_count', (err, rows) => {
|
|
if (err) reject(err)
|
|
|
|
resolve(rows)
|
|
})
|
|
})
|
|
}
|
|
|
|
function setNum(name, num) {
|
|
return new Promise((resolve, reject) => {
|
|
db.query(`INSERT INTO tb_count(\`name\`, \`num\`)
|
|
VALUES(?, ?)
|
|
ON DUPLICATE KEY UPDATE \`num\` = ?;`
|
|
, [name, num, num]
|
|
, (err, result) => {
|
|
if (err) reject(err)
|
|
|
|
resolve(result)
|
|
})
|
|
})
|
|
}
|
|
|
|
module.exports = {
|
|
getNum,
|
|
getAll,
|
|
setNum
|
|
}
|