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