60 lines
1.3 KiB
JavaScript
Raw Normal View History

const sqlite3 = require('sqlite3');
class DatabaseClient {
constructor({ path, busyTimeout = 5000 }) {
this.db = new sqlite3.Database(path, (err) => {
if (err) {
console.error('unable to open sqlite file', err);
}
});
this.db.configure('busyTimeout', busyTimeout);
}
run(sql, params = []) {
return new Promise((resolve, reject) => {
this.db.run(sql, params, function (err) {
if (err) return reject(err);
resolve({ lastID: this.lastID, changes: this.changes });
});
});
}
get(sql, params = []) {
return new Promise((resolve, reject) => {
this.db.get(sql, params, (err, row) => {
if (err) return reject(err);
resolve(row);
});
});
}
all(sql, params = []) {
return new Promise((resolve, reject) => {
this.db.all(sql, params, (err, rows) => {
if (err) return reject(err);
resolve(rows);
});
});
}
exec(sql) {
return new Promise((resolve, reject) => {
this.db.exec(sql, (err) => {
if (err) return reject(err);
resolve();
});
});
}
close() {
return new Promise((resolve, reject) => {
this.db.close((err) => {
if (err) return reject(err);
resolve();
});
});
}
}
module.exports = DatabaseClient;