1. /**
  2. * Diffs two datasets of queues for dry-run scenarios with error logging.
  3. * @param {Array<Object>} queue1 The first dataset of queues. Each object should have a 'queue' property.
  4. * @param {Array<Object>} queue2 The second dataset of queues. Each object should have a 'queue' property.
  5. * @param {string} queueName The name of the queue to compare. Used for logging.
  6. * @returns {Array<Object>} An array of differences between the queues. Each object in the array will have 'queue' and 'difference' properties.
  7. */
  8. function diffQueues(queue1, queue2, queueName) {
  9. const differences = [];
  10. if (!Array.isArray(queue1) || !Array.isArray(queue2)) {
  11. console.error("Error: Input must be arrays.");
  12. return differences; // Return empty array if invalid input
  13. }
  14. if (queue1.length !== queue2.length) {
  15. console.warn("Warning: Queue datasets have different lengths. Diffing may not be meaningful.");
  16. }
  17. for (let i = 0; i < queue1.length; i++) {
  18. const item1 = queue1[i];
  19. const item2 = queue2[i];
  20. if (typeof item1 !== 'object' || typeof item2 !== 'object' || !item1.hasOwnProperty('queue') || !item2.hasOwnProperty('queue')) {
  21. console.error(`Error: Invalid queue item at index ${i}. Expected object with 'queue' property.`);
  22. continue; // Skip to next iteration
  23. }
  24. const queue1Value = item1.queue;
  25. const queue2Value = item2.queue;
  26. if (queue1Value !== queue2Value) {
  27. differences.push({
  28. queue: queueName, // Queue name for logging
  29. difference: {
  30. index: i,
  31. value1: queue1Value,
  32. value2: queue2Value
  33. }
  34. });
  35. }
  36. }
  37. return differences;
  38. }

Add your comment