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 };