/**
* Diffs two datasets of queues for dry-run scenarios with error logging.
* @param {Array<Object>} queue1 The first dataset of queues. Each object should have a 'queue' property.
* @param {Array<Object>} queue2 The second dataset of queues. Each object should have a 'queue' property.
* @param {string} queueName The name of the queue to compare. Used for logging.
* @returns {Array<Object>} An array of differences between the queues. Each object in the array will have 'queue' and 'difference' properties.
*/
function diffQueues(queue1, queue2, queueName) {
const differences = [];
if (!Array.isArray(queue1) || !Array.isArray(queue2)) {
console.error("Error: Input must be arrays.");
return differences; // Return empty array if invalid input
}
if (queue1.length !== queue2.length) {
console.warn("Warning: Queue datasets have different lengths. Diffing may not be meaningful.");
}
for (let i = 0; i < queue1.length; i++) {
const item1 = queue1[i];
const item2 = queue2[i];
if (typeof item1 !== 'object' || typeof item2 !== 'object' || !item1.hasOwnProperty('queue') || !item2.hasOwnProperty('queue')) {
console.error(`Error: Invalid queue item at index ${i}. Expected object with 'queue' property.`);
continue; // Skip to next iteration
}
const queue1Value = item1.queue;
const queue2Value = item2.queue;
if (queue1Value !== queue2Value) {
differences.push({
queue: queueName, // Queue name for logging
difference: {
index: i,
value1: queue1Value,
value2: queue2Value
}
});
}
}
return differences;
}
Add your comment