From eb8c333c90744cef11d1647fde626855ffebcfcf Mon Sep 17 00:00:00 2001
From: Vytor Calixto <vytorcalixto@gmail.com>
Date: Tue, 27 Sep 2016 09:20:34 -0300
Subject: [PATCH] .toParam is now called by query middleware

Also the req.sql attribute is being created ("injected") before all routes

Related: simcaq/SCRUM#18
---
 src/libs/app.js               |  5 +++++
 src/libs/middlewares/query.js |  5 +++--
 src/libs/routes/city.js       | 14 +++++++-------
 src/libs/routes/region.js     |  6 +++---
 src/libs/routes/school.js     | 19 +++++++------------
 src/libs/routes/state.js      | 10 +++++-----
 6 files changed, 30 insertions(+), 29 deletions(-)

diff --git a/src/libs/app.js b/src/libs/app.js
index 8022c769..bf097510 100644
--- a/src/libs/app.js
+++ b/src/libs/app.js
@@ -4,6 +4,7 @@ const bodyParser = require('body-parser');
 const methodOverride = require('method-override');
 const cors = require('cors');
 const compression = require('compression');
+const squel = require('squel');
 
 const log = require('./log')(module);
 
@@ -27,6 +28,10 @@ app.use(cors());
 app.use(methodOverride());
 app.use(cache('1 day'));
 app.use(compression(9));
+// Middleware tha adds the squel object to req
+app.use((req, res, next) => {
+    req.sql = squel.select();
+});
 app.use(api);
 
 // catch 404 and forward to error handler
diff --git a/src/libs/middlewares/query.js b/src/libs/middlewares/query.js
index 74a0c505..4020631f 100644
--- a/src/libs/middlewares/query.js
+++ b/src/libs/middlewares/query.js
@@ -9,8 +9,9 @@ const execQuery = require(`${libs}/db/query_exec`);
  * @param  {Function} next [description]
  */
 function query(req, res, next) {
-    log.debug(req.sql);
-    execQuery(req.sql.text, req.sql.values).then((result) => {
+    let sql = req.sql.toParam();
+    log.debug(sql);
+    execQuery(sql.text, sql.values).then((result) => {
         log.debug(result);
         req.result = result;
         next();
diff --git a/src/libs/routes/city.js b/src/libs/routes/city.js
index 030aa3ce..a849bf8d 100644
--- a/src/libs/routes/city.js
+++ b/src/libs/routes/city.js
@@ -11,25 +11,25 @@ const query = require(`${libs}/middlewares/query`);
 const response = require(`${libs}/middlewares/response`);
 
 cityApp.get('/', (req, res, next) => {
-    req.sql = squel.select().from('municipios').toParam();
+    req.sql.from('municipios');
     next();
 }, query, response('city'));
 
 cityApp.get('/:id', (req, res, next) => {
-    req.sql = squel.select().from('municipios').where('pk_municipio_id = ?',
-        parseInt(req.params.id, 10)).toParam();
+    req.sql.from('municipios')
+        .where('pk_municipio_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('city'));
 
 cityApp.get('/ibge/:id', (req, res, next) => {
-    req.sql = squel.select().from('municipios').where('codigo_ibge = ?',
-        req.params.id).toParam();
+    req.sql.from('municipios')
+        .where('codigo_ibge = ?', req.params.id);
     next();
 }, query, response('city'));
 
 cityApp.get('/state/:id', (req, res, next) => {
-    req.sql = squel.select().from('municipios').where('fk_estado_id = ?',
-        parseInt(req.params.id, 10)).toParam();
+    req.sql.from('municipios')
+        .where('fk_estado_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('city'));
 
diff --git a/src/libs/routes/region.js b/src/libs/routes/region.js
index 754cd616..1492af61 100644
--- a/src/libs/routes/region.js
+++ b/src/libs/routes/region.js
@@ -11,13 +11,13 @@ const query = require(`${libs}/middlewares/query`);
 const response = require(`${libs}/middlewares/response`);
 
 regionApp.get('/', (req, res, next) => {
-    req.sql = squel.select().from('regioes').toParam();
+    req.sql.from('regioes');
     next();
 }, query, response('region'));
 
 regionApp.get('/:id', (req, res, next) => {
-    req.sql = squel.select().from('regioes').where('pk_regiao_id = ?',
-        parseInt(req.params.id, 10)).toParam();
+    req.sql.from('regioes')
+        .where('pk_regiao_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('region'));
 
diff --git a/src/libs/routes/school.js b/src/libs/routes/school.js
index bf3ee4fb..004e2f02 100644
--- a/src/libs/routes/school.js
+++ b/src/libs/routes/school.js
@@ -22,40 +22,35 @@ const response = require(`${libs}/middlewares/response`);
 //         .field('nome_entidade', 'name')
 //         .field('ano_censo', 'year')
 //         .field('fk_cod_estado')
-//         .field('fk_cod_municipio')
-//         .toParam();
+//         .field('fk_cod_municipio');
 //     next();
 // }, query, response('school'));
 
 schoolApp.get('/:id', (req, res, next) => {
-    req.sql = squel.select().from('escolas').where('pk_escola_id = ?',
-        parseInt(req.params.id, 10)).toParam();
+    req.sql.from('escolas')
+        .where('pk_escola_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('school'));
 
 schoolApp.get('/state/:id', (req, res, next) => {
-    req.sql = squel.select().from('escolas')
+    req.sql.from('escolas')
         .field('pk_escola_id')
         .field('nome_entidade', 'name')
         .field('ano_censo', 'year')
         .field('fk_cod_estado')
         .field('fk_cod_municipio')
-        .where('fk_cod_estado = ?',
-        parseInt(req.params.id, 10))
-        .toParam();
+        .where('fk_cod_estado = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('school'));
 
 schoolApp.get('/city/:id', (req, res, next) => {
-    req.sql = squel.select().from('escolas')
+    req.sql.from('escolas')
         .field('pk_escola_id')
         .field('nome_entidade', 'name')
         .field('ano_censo', 'year')
         .field('fk_cod_estado')
         .field('fk_cod_municipio')
-        .where('fk_cod_municipio = ?',
-        parseInt(req.params.id, 10))
-        .toParam();
+        .where('fk_cod_municipio = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('school'));
 
diff --git a/src/libs/routes/state.js b/src/libs/routes/state.js
index 637149f1..33487397 100644
--- a/src/libs/routes/state.js
+++ b/src/libs/routes/state.js
@@ -11,19 +11,19 @@ const query = require(`${libs}/middlewares/query`);
 const response = require(`${libs}/middlewares/response`);
 
 stateApp.get('/', (req, res, next) => {
-    req.sql = squel.select().from('estados').toParam();
+    req.sql.from('estados');
     next();
 }, query, response('state'));
 
 stateApp.get('/:id', (req, res, next) => {
-    req.sql = squel.select().from('estados').where('pk_estado_id = ?',
-        parseInt(req.params.id, 10)).toParam();
+    req.sql.from('estados')
+        .where('pk_estado_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('state'));
 
 stateApp.get('/region/:id', (req, res, next) => {
-    req.sql = squel.select().from('estados').where('fk_regiao_id = ?',
-        parseInt(req.params.id, 10)).toParam();
+    req.sql.from('estados')
+        .where('fk_regiao_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('state'));
 
-- 
GitLab