Files
sqlite3PlayNodeJs/database.js
2018-09-18 12:58:41 -05:00

76 lines
2.1 KiB
JavaScript

const config = require('./config');
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database(config.dbFileName, sqlite3.OPEN_READWRITE, (err) => {
if (err) {
console.error("ERROR: opening DB failed: ", err.message);
}
console.log('Connected.');
});
let query = (SQL) => {
return new Promise((resolve, reject) => {
// this if assumes only SELECT has a resultset
if (SQL.toUpperCase().startsWith("SELECT")) {
db.all(SQL, [], (err, rows) => {
if (err) {
console.log("A");
reject("ERROR: fetching data: ", err.message);
}
console.log("B", rows);
resolve(rows);
});
} else {
db.run(SQL, (err) => {
if (err) {
reject("ERROR: inserting row: ", err.message);
}
resolve(true);
});
}
});
};
let close = () => {
return new Promise((resolve, reject) => {
db.close((err) => {
if (err) {
reject("ERROR: closing DB: ", err.message);
}
resolve(true);
});
});
}
/* let main = async () => {
query('insert into log (message) values (\'Outside\')');
let rows = null;
try {
await query('insert into log (message) values (\'start\')');
rows = await query('select * from Option');
rows.forEach((row) => {
console.log(row.ID + "\t" + row.PutCall);
})
await query('insert into log (message) values (\'end\')');
} catch (ex) {
console.error('Error', ex);
}
}
main(); */
let exitHandler = (eventType) => {
console.log("DB-Cleaning up (" + eventType + ")");
close();
}
// make sure we close the DB in case the process ends.
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach((eventType) => {
process.on(eventType, exitHandler.bind(null, eventType));
})
module.exports = {
query
};