48 lines
986 B
JavaScript
48 lines
986 B
JavaScript
const sqlite = require('sqlite-async');
|
|
|
|
class Database {
|
|
constructor(db_file) {
|
|
this.db_file = db_file;
|
|
this.db = undefined;
|
|
}
|
|
|
|
async connect() {
|
|
this.db = await sqlite.open(this.db_file);
|
|
}
|
|
async migrate() {
|
|
return this.db.exec(`
|
|
DROP TABLE IF EXISTS queries;
|
|
|
|
CREATE TABLE IF NOT EXISTS queries (
|
|
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
query VARCHAR(500) NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
`);
|
|
}
|
|
|
|
async addQuery(query) {
|
|
return new Promise(async (resolve, reject) => {
|
|
try {
|
|
let stmt = await this.db.prepare('INSERT INTO queries (query) VALUES (?)');
|
|
resolve(await stmt.run(query));
|
|
} catch(e) {
|
|
reject(e);
|
|
}
|
|
});
|
|
}
|
|
|
|
async getQueries() {
|
|
return new Promise(async (resolve, reject) => {
|
|
try {
|
|
let stmt = await this.db.prepare('SELECT * FROM queries');
|
|
resolve(await stmt.all());
|
|
} catch(e) {
|
|
reject(e);
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
module.exports = Database; |