mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-10 21:47:02 +03:00
Revert "Revert "Added all db write methods to a queue.""
This reverts commit 9cf4a7ed55.
This commit is contained in:
69
writeQueue.js
Normal file
69
writeQueue.js
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user