diff --git a/database.js b/database.js index 36d903a..963d0f7 100644 --- a/database.js +++ b/database.js @@ -20,10 +20,25 @@ let query = (SQL) => { resolve(rows); }); } else { - db.run(SQL, (err) => { + db.run(SQL, function (err) { if (err) { reject("ERROR: running statement: (" + SQL + ") " + err + err.stack); } + 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); + }); + + } resolve(true); }); } @@ -51,11 +66,12 @@ let exitHandler = (eventType) => { process.on(eventType, exitHandler.bind(null, eventType)); }) -/* let main = async () => { +let main = async () => { query('insert into log (message) values (\'Outside\')'); let rows = null; try { - await query('insert into log (message) values (\'start\')'); + let newId = await query('insert into log (message) values (\'start\')'); + console.log("ID created for start was " + newId); rows = await query('select * from Option'); rows.forEach((row) => { console.log(row.ID + "\t" + row.PutCall); @@ -68,7 +84,7 @@ let exitHandler = (eventType) => { process.stdin.resume();//so the program will not close instantly } -main(); */ +main(); module.exports = { diff --git a/playdb.sqlite3 b/playdb.sqlite3 index 44629b9..5741033 100644 Binary files a/playdb.sqlite3 and b/playdb.sqlite3 differ