diff --git a/src/libs/db/query_exec.js b/src/libs/db/query_exec.js index c43b1dbee3640a71e1957db722e6eab84e1d8533..691117c5672df92ed565c2d4db5e27937b34dfbf 100644 --- a/src/libs/db/query_exec.js +++ b/src/libs/db/query_exec.js @@ -40,4 +40,10 @@ function execSqlQuery(sqlQuery, sqlQueryParams = []) { }); } -module.exports = execSqlQuery; +function execMultiQuery(querySet = []) { + // Issue all queries concurrently to the database, for every query object in the iterable + // NOTE: Array.map() returns a copy of the original array with each object 'mapped'. + return querySet.map((qry) => { return execSqlQuery(qry.toString()); }); +} + +module.exports = {execSqlQuery, execMultiQuery}; diff --git a/src/libs/middlewares/query.js b/src/libs/middlewares/query.js index f6dd21d7604d29ef82dde5d74d1d775994c37174..b76f6ff7759efeefc89ef0d394770871e7bd4c05 100644 --- a/src/libs/middlewares/query.js +++ b/src/libs/middlewares/query.js @@ -1,17 +1,28 @@ const libs = `${process.cwd()}/libs`; const log = require(`${libs}/log`)(module); -const execQuery = require(`${libs}/db/query_exec`); +const db = require(`${libs}/db/query_exec`); // Middleware that executes a query defined by a squel object in req.sql function query(req, res, next) { let sql = req.sql.toParam(); log.info(`Executando query ${req.sql.toString()}`); - execQuery(sql.text, sql.values).then((result) => { - req.result = result; - next(); + execute(sql.text, sql.values, (err, result) => { + if(err) { + log.error(err.stack); + next(new Error('Request could not be satisfied due to a database error.')); + } else { + req.result = result; + next(); + } + }); +} + +function execute(text, values, cb) { + db.execSqlQuery(text, values).then((result) => { + cb(null, result); }, (error) => { log.error(error.stack); - next(new Error('Request could not be satisfied due to a database error.')); + cb(new Error('Request could not be satisfied due to a database error.')); }); }