From a64f29c9d7804df9c9feaf7c92b1cec2c4be7d27 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Wed, 18 Jan 2017 09:59:08 -0200 Subject: [PATCH] Add function addValueToField in reqQueryFields This adds the option to have values accepted only by one parameter, instead of globals, like it was then --- src/libs/middlewares/reqQueryFields.js | 32 ++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/libs/middlewares/reqQueryFields.js b/src/libs/middlewares/reqQueryFields.js index 27b0365b..4e6c55bc 100644 --- a/src/libs/middlewares/reqQueryFields.js +++ b/src/libs/middlewares/reqQueryFields.js @@ -27,6 +27,7 @@ class ReqQueryFields { // fieldValues: {} // } if(typeof this.fields[field.name] === 'undefined') { + log.debug("added field "+field.name); this.fields[field.name] = field; } return this; @@ -55,6 +56,21 @@ class ReqQueryFields { if(typeof this.fieldValues[fieldValue.name] === 'undefined') { this.fieldValues[fieldValue.name] = fieldValue; + log.debug("added value "+fieldValue.name); + } + return this; + } + + addValueToField(fieldValue, field) { + if(typeof this.fields[field] === 'undefined') { + throw 'No field with name ' +field+ ' defined'; + } + if(typeof this.fields[field].values === 'undefined') { + this.fields[field].values = {}; + } + if(typeof this.fields[field].values[fieldValue.name] === 'undefined') { + this.fields[field].values[fieldValue.name] = fieldValue; + log.debug("added value "+fieldValue.name+ ' to field ' + field); } return this; } @@ -66,8 +82,10 @@ class ReqQueryFields { let f = this.fields[key]; log.debug('f'); log.debug(f); - Object.keys(this.fieldValues).map((k, i) => { - let value = this.fieldValues[k]; + // Unimos os valores aceitos globalmente com os aceitos apenas pelo parâmetro + let values = _.merge(this.fieldValues, f.values); + Object.keys(values).map((k, i) => { + let value = values[k]; log.debug('value'); log.debug(value); params.push(value.name); @@ -119,9 +137,13 @@ class ReqQueryFields { let field = this.fields[key]; log.debug(field); let param = req[field.name]; + log.debug('param'); log.debug(param); Object.keys(param).map((k, i) => { - let values = this.fieldValues; + let values = _.merge(this.fieldValues, field.values); + log.debug('ValueS'); + log.debug(values); + log.debug('k'); log.debug(k); if(typeof values[k] !== 'undefined') { // Clonamos para não alterar @@ -151,8 +173,10 @@ class ReqQueryFields { // Valor sempre vem como string, necessário fazer parse para o banco if(value.where.type === 'integer') whereValue = parseInt(whereValue, 10); if(value.where.type === 'double') whereValue = parseFloat(whereValue); + if(value.where.type === 'string') whereValue = '%'+whereValue+'%'; let tbl = value.where.table || value.table; - req.sql.where(tbl+'.'+value.where.field+' '+value.where.relation+' ?', whereValue); + let whereField = (value.where.type === 'string')? 'LOWER('+tbl+'.'+value.where.field+')' : tbl+'.'+value.where.field; + req.sql.where(whereField+' '+value.where.relation+' LOWER(?)', whereValue); } } }); -- GitLab