Revert "Revert "Added all db write methods to a queue.""

This reverts commit 9cf4a7ed55.
This commit is contained in:
Ajay Ramachandran
2019-12-10 19:22:35 -05:00
parent 691d87d4ff
commit 379bbee4ab
2 changed files with 83 additions and 7 deletions

69
writeQueue.js Normal file
View File

@@ -0,0 +1,69 @@
'use strict';
//used to queue objects to be written to the db
class WriteQueue {
/**
* @param {Statement} statement
* @param {Array} inputs
* @param {callback} callback
*/
constructor(statement, inputs, callback) {
this.statement = statement;
this.inputs = inputs;
this.callback = callback;
}
run() {
return new Promise((resolve, reject) => {
this.statement.run(this.inputs, (err) => this.end(err, resolve, reject));
});
}
end(err, resolve, reject) {
resolve();
if (this.callback) {
this.callback(err);
}
}
}
module.exports = {
WriteQueue,
addToWriteQueue
}
/**
* Array of class write queue
*
* @typedef WriteQueue[]
*/
var dbQueue = [];
//is a queue check currently running
var queueRunning = false;
/**
* Adds an item to the write queue and starts the run function if needed.
*
* @param {WriteQueue} item
*/
function addToWriteQueue(item) {
dbQueue.push(item);
if (!queueRunning) {
runThroughWriteQueue();
}
}
async function runThroughWriteQueue() {
queueRunning = true;
while (dbQueue.length > 0) {
await dbQueue[0].run();
dbQueue.splice(0, 1);
}
queueRunning = false;
}