Files

92 lines
3.0 KiB
JavaScript
Raw Permalink Normal View History

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) {
reject("ERROR: fetching data: " + err + err.stack);
2018-09-18 11:54:56 -05:00
}
resolve(rows);
});
} else {
2018-10-03 08:32:22 -05:00
db.run(SQL, function (err) {
2018-09-18 11:54:56 -05:00
if (err) {
reject("ERROR: running statement: (" + SQL + ") " + err + err.stack);
2018-09-18 11:54:56 -05:00
}
2018-10-03 08:32:22 -05:00
if (SQL.toUpperCase().startsWith("INSERT")) {
// the lastID is just the rowID - need to resolve the actual primary-Key ID by rowid.
// Note: this expects that there is an ID column in every table!
let table = SQL.replace(/^insert inot /i,'').replace(/ .*$/,'');
let sqlGetID = "select ID from " + table + " where rowid=" + this.lastID;
console.log(sqlGetID);
db.run(sqlGetID, function (err, rows) {
if (err) {
reject("ERROR: getting Record-ID after insert: " + err + err.stack);
}
resolve(rows[0].ID);
});
}
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);
});
});
}
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-10-03 08:32:22 -05:00
let main = async () => {
2018-09-18 11:54:56 -05:00
query('insert into log (message) values (\'Outside\')');
let rows = null;
try {
2018-10-03 08:32:22 -05:00
let newId = await query('insert into log (message) values (\'start\')');
console.log("ID created for start was " + newId);
2018-09-18 11:54:56 -05:00
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);
}
console.re
process.stdin.resume();//so the program will not close instantly
2018-09-18 12:58:41 -05:00
}
2018-10-03 08:32:22 -05:00
main();
2018-09-18 12:58:41 -05:00
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
};