2018-09-18 11:54:56 -05:00
|
|
|
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) {
|
2018-09-18 16:13:19 -05:00
|
|
|
reject("ERROR: fetching data: " + err + err.stack);
|
2018-09-18 11:54:56 -05:00
|
|
|
}
|
|
|
|
|
resolve(rows);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
db.run(SQL, (err) => {
|
|
|
|
|
if (err) {
|
2018-09-18 16:13:19 -05:00
|
|
|
reject("ERROR: running statement: (" + SQL + ") " + err + err.stack);
|
2018-09-18 11:54:56 -05:00
|
|
|
}
|
|
|
|
|
resolve(true);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let close = () => {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
db.close((err) => {
|
|
|
|
|
if (err) {
|
|
|
|
|
reject("ERROR: closing DB: ", err.message);
|
|
|
|
|
}
|
|
|
|
|
resolve(true);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-18 16:13:19 -05:00
|
|
|
let exitHandler = (eventType) => {
|
|
|
|
|
console.log("DB-Cleaning up (" + eventType + ")");
|
|
|
|
|
close().then(process.exit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 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));
|
|
|
|
|
})
|
|
|
|
|
|
2018-09-18 12:58:41 -05:00
|
|
|
/* let main = async () => {
|
2018-09-18 11:54:56 -05:00
|
|
|
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);
|
|
|
|
|
}
|
2018-09-18 16:13:19 -05:00
|
|
|
console.re
|
|
|
|
|
process.stdin.resume();//so the program will not close instantly
|
2018-09-18 12:58:41 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
main(); */
|
|
|
|
|
|
2018-09-18 11:54:56 -05:00
|
|
|
|
|
|
|
|
module.exports = {
|
2018-09-18 12:58:41 -05:00
|
|
|
query
|
2018-09-18 11:54:56 -05:00
|
|
|
};
|