Skip to content
Snippets Groups Projects
Commit e22f1e79 authored by Hamer Iboshi's avatar Hamer Iboshi
Browse files

Implementation of multiple where, that has tableField and fild as a array,...

Implementation of multiple where, that has tableField and fild as a array, 'where' contain the fild 'condition' as a condition (ex.: AND, OR)  of where
parent e66c2c2f
No related branches found
No related tags found
3 merge requests!116Release v1.0.0,!47School number count,!44Feature multiple where
...@@ -210,26 +210,21 @@ class ReqQueryFields { ...@@ -210,26 +210,21 @@ class ReqQueryFields {
// Se o valor é um campo a ser incluído no SELECT // Se o valor é um campo a ser incluído no SELECT
if(typeof field.field !== 'undefined' && field.field) { if(typeof field.field !== 'undefined' && field.field) {
log.debug('SELECT'); log.debug('SELECT');
// if (Array.isArray(value.tableField)) { if (Array.isArray(value.resultField)) {
// value.tableField.forEach((f, i) => { value.tableField.forEach((f, i) => {
// req.sql.field(value.table+'.'+f, value.resultField[i] || f) req.sql.field(value.table+'.'+f, value.resultField[i] || f)
// .group(value.table+'.'+f); .group(value.table+'.'+f);
// }) })
// } }else{
req.sql.field(value.table+'.'+value.tableField, value.resultField || value.tableField) req.sql.field(value.table+'.'+value.tableField, value.resultField || value.tableField)
.group(value.table+'.'+value.tableField) .group(value.table+'.'+value.tableField);
.order(value.table+'.'+value.tableField); }
} }
// Se o valor é um campo para ser usado no WHERE // Se o valor é um campo para ser usado no WHERE
if(typeof field.where !== 'undefined' && field.where) { if(typeof field.where !== 'undefined' && field.where) {
log.debug('WHERE'); log.debug('WHERE');
// Valor do where // Valor do where
//multiple where
// if (Array.isArray(value.tableField)){
//
// }
let whereValue = param[k]; let whereValue = param[k];
// Valor sempre vem como string, necessário fazer parse para o banco // 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 === 'integer') whereValue = parseInt(whereValue, 10);
...@@ -237,9 +232,25 @@ class ReqQueryFields { ...@@ -237,9 +232,25 @@ class ReqQueryFields {
if(value.where.type === 'string') whereValue = '%'+whereValue+'%'; if(value.where.type === 'string') whereValue = '%'+whereValue+'%';
if(value.where.type === 'boolean') whereValue = (whereValue.toLowerCase() === 'true' || parseInt(whereValue, 10) === 1); if(value.where.type === 'boolean') whereValue = (whereValue.toLowerCase() === 'true' || parseInt(whereValue, 10) === 1);
let tbl = value.where.table || value.table; let tbl = value.where.table || value.table;
let whereField = (value.where.type === 'string')? 'LOWER('+tbl+'.'+value.where.field+')' : tbl+'.'+value.where.field; // multiple where, only tested for boolean filds
let lower = (value.where.type === 'string') ? ' LOWER(?) ' : ' ? '; if (Array.isArray(value.tableField)) {
req.sql.where(whereField + ' ' + value.where.relation + lower, whereValue); let lower = (value.where.type === 'string') ? ' LOWER(?) ' : ' ? ';
let whereField = '';
let whereValues = [];
value.where.field.forEach((f, i, arr) => {
whereValues.push(whereValue);
whereField += (value.where.type === 'string') ? 'LOWER(' + tbl + '.' + value.where.field[i] + ')' : tbl + '.' + value.where.field[i];
whereField += ' ' + value.where.relation + ' ?';
if (i < arr.length - 1) {
whereField += ' ' + value.where.condition + ' ';
}
});
req.sql.where(whereField, ...whereValues);
} else {
let whereField = (value.where.type === 'string') ? 'LOWER(' + tbl + '.' + value.where.field + ')' : tbl + '.' + value.where.field;
let lower = (value.where.type === 'string') ? ' LOWER(?) ' : ' ? ';
req.sql.where(whereField + ' ' + value.where.relation + lower, whereValue);
}
} }
} }
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment