From fd1f325ae68753c072ca175dba25e3344a928f79 Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Thu, 7 Dec 2017 11:01:39 -0200
Subject: [PATCH] [ci skip]Create matchQueries middleware

---
 src/libs/middlewares/matchQueries.js | 41 ++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
 create mode 100644 src/libs/middlewares/matchQueries.js

diff --git a/src/libs/middlewares/matchQueries.js b/src/libs/middlewares/matchQueries.js
new file mode 100644
index 00000000..410da807
--- /dev/null
+++ b/src/libs/middlewares/matchQueries.js
@@ -0,0 +1,41 @@
+// Retorna um array de "tuplas" com objetos que são iguais em duas queries distintas, com exceçã do valor total
+function matchQueries(queryA = [], queryB = []) {
+    match = [];
+    // Para cada objeto na query A
+    queryA.forEach((result) => {
+        // Obtém as chaves do objeto
+        let keys = Object.keys(result);
+        // Remove o total
+        let index = keys.indexOf('total');
+        if(index > -1) keys.splice(index, 1);
+
+        let objMatch = null;
+
+        // Busca um objeto igual na query B
+        for(let i=0; i < queryB.length; ++i) {
+            let partialMatch = queryB[i];
+            let foundMatch = true;
+            for(let j=0; j < keys.length; ++j) {
+                let key = keys[j];
+                // Se diferem, não são um match
+                if(partialMatch[key] !== result[key]) {
+                    foundMatch = false;
+                    break;
+                }
+            }
+            // Se encontrou, pode parar
+            if(foundMatch) {
+                objMatch = partialMatch;
+                break;
+            }
+        }
+
+        // Inclui um array com os dois objetos dentro do array de matches
+        if(objMatch) {
+            match.push([result, objMatch]);
+        }
+    });
+    return match;
+}
+
+module.exports = matchQueries;
\ No newline at end of file
-- 
GitLab