diff options
Diffstat (limited to 'db/sqlite.js')
| -rw-r--r-- | db/sqlite.js | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/db/sqlite.js b/db/sqlite.js index 0912101..4b09dd1 100644 --- a/db/sqlite.js +++ b/db/sqlite.js @@ -1,11 +1,11 @@ 'use strict' const path = require('path') -const sqlite3 = require('sqlite3') +const Database = require('better-sqlite3') -const db = new sqlite3.Database(path.resolve(__dirname, '../count.db')) +const db = new Database(path.resolve(__dirname, '../count.db')) -db.run(`CREATE TABLE IF NOT EXISTS tb_count ( +db.exec(`CREATE TABLE IF NOT EXISTS tb_count ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, @@ -17,44 +17,53 @@ db.run(`CREATE TABLE IF NOT EXISTS tb_count ( function getNum(name) { return new Promise((resolve, reject) => { - db.get('SELECT `name`, `num` from tb_count WHERE `name` = ?', name, (err, row) => { - if (err) reject(err) - - resolve(row || { name, num: 0 }) - }) + const stmt = db.prepare('SELECT `name`, `num` from tb_count WHERE `name` = ?') + const row = stmt.get(name) + resolve(row || { name, num: 0 }) }) } function getAll(name) { return new Promise((resolve, reject) => { - db.get('SELECT * from tb_count', (err, row) => { - if (err) reject(err) - - resolve(row) - }) + const stmt = db.prepare('SELECT * from tb_count') + const rows = stmt.all() + resolve(rows) }) } function setNum(name, num) { return new Promise((resolve, reject) => { - db.run(`INSERT INTO tb_count(\`name\`, \`num\`) + db.exec(`INSERT INTO tb_count(\`name\`, \`num\`) VALUES($name, $num) ON CONFLICT(name) DO UPDATE SET \`num\` = $num;` - , { - $name: name, - $num: num - } - , (err, row) => { - if (err) reject(err) - - resolve(row) - }) + , + { $name: name, $num: num } + ) + + resolve() + }) +} + +function setNumMulti(counters) { + return new Promise((resolve, reject) => { + const stmt = db.prepare(`INSERT INTO tb_count(\`name\`, \`num\`) + VALUES($name, $num) + ON CONFLICT(name) DO + UPDATE SET \`num\` = $num;`) + + const setMany = db.transaction((counters) => { + for (const counter of counters) stmt.run(counter) + }) + + setMany(counters) + resolve() }) } module.exports = { getNum, getAll, - setNum -}
\ No newline at end of file + setNum, + setNumMulti +} |