69 lines
1.8 KiB
JavaScript
69 lines
1.8 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);
|
||
|
|
}
|
||
|
|
close();
|
||
|
|
}
|
||
|
|
|
||
|
|
main();
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
module.exports = {
|
||
|
|
query,
|
||
|
|
close
|
||
|
|
};
|