From 9550c48fca39233e0b84cba2713161e4959ef2c5 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Tue, 6 Sep 2016 11:04:20 -0300 Subject: [PATCH] Fix query middleware --- src/libs/middlewares/query.js | 4 ++-- src/libs/middlewares/response.js | 21 +++++++++++++-------- src/libs/routes/api.js | 8 ++++---- src/libs/routes/city.js | 16 ++++++++-------- src/libs/routes/enrollment.js | 2 ++ src/libs/routes/region.js | 8 ++++---- src/libs/routes/state.js | 12 ++++++------ 7 files changed, 39 insertions(+), 32 deletions(-) diff --git a/src/libs/middlewares/query.js b/src/libs/middlewares/query.js index 6b91fc8f..7b0cc586 100644 --- a/src/libs/middlewares/query.js +++ b/src/libs/middlewares/query.js @@ -3,8 +3,8 @@ const log = require(`${libs}/log`)(module); const execQuery = require(`${libs}/db/query_exec`); function query(req, res, next) { - log.debug(req.query); - execQuery(req.query.text, req.query.values).then((result) => { + log.debug(req.sql); + execQuery(req.sql.text, req.sql.values).then((result) => { log.debug(result); req.result = result; next(); diff --git a/src/libs/middlewares/response.js b/src/libs/middlewares/response.js index 8328b4ff..accd84a2 100644 --- a/src/libs/middlewares/response.js +++ b/src/libs/middlewares/response.js @@ -1,13 +1,18 @@ +const libs = `${process.cwd()}/libs`; +const log = require(`${libs}/log`)(module); const xml = require('js2xmlparser'); -function response(req, res) { - if (req.query.format === 'csv') { - res.csv(req.result); - } else if (req.query.format === 'xml') { - res.send(xml('result', JSON.stringify({ city: req.result }))); - } else { - res.json({ result: req.result }); - } +function response(value) { + return function (req, res, next) { + log.debug(req.query.format); + if (req.query.format === 'csv') { + res.csv (req.result); + } else if (req.query.format === 'xml') { + res.send (xml('result', JSON.stringify({ [value]: req.result }))); + } else { + res.json({ result: req.result }); + } + }; } module.exports = response; diff --git a/src/libs/routes/api.js b/src/libs/routes/api.js index 9a23be8c..1a901d07 100644 --- a/src/libs/routes/api.js +++ b/src/libs/routes/api.js @@ -15,9 +15,9 @@ api.get('/', (req, res) => { }); // mount API routes -api.use('/v1/enrollment', enrollment); -api.use('/v1/state', state); -api.use('/v1/region', region); -api.use('/v1/city', city); +api.use('/api/v1/enrollment', enrollment); +api.use('/api/v1/state', state); +api.use('/api/v1/region', region); +api.use('/api/v1/city', city); module.exports = api; diff --git a/src/libs/routes/city.js b/src/libs/routes/city.js index aa28900b..6c7550f9 100644 --- a/src/libs/routes/city.js +++ b/src/libs/routes/city.js @@ -11,26 +11,26 @@ const query = require(`${libs}/middlewares/query`); const response = require(`${libs}/middlewares/response`); cityApp.get('/', (req, res, next) => { - req.query = squel.select().from('municipios').toParam(); + req.sql = squel.select().from('municipios').toParam(); next(); -}, query, response); +}, query, response('city')); cityApp.get('/:id', (req, res, next) => { - req.query = squel.select().from('municipios').where('pk_municipio_id = ?', + req.sql = squel.select().from('municipios').where('pk_municipio_id = ?', parseInt(req.params.id, 10)).toParam(); next(); -}, query, response); +}, query, response('city')); cityApp.get('/ibge/:id', (req, res, next) => { - req.query = squel.select().from('municipios').where('codigo_ibge = ?', + req.sql = squel.select().from('municipios').where('codigo_ibge = ?', req.params.id).toParam(); next(); -}, query, response); +}, query, response('city')); cityApp.get('/state/:id', (req, res, next) => { - req.query = squel.select().from('municipios').where('fk_estado_id = ?', + req.sql = squel.select().from('municipios').where('fk_estado_id = ?', parseInt(req.params.id, 10)); next(); -}, query, response); +}, query, response('city')); module.exports = cityApp; diff --git a/src/libs/routes/enrollment.js b/src/libs/routes/enrollment.js index 7ca2be3e..e3e6c399 100644 --- a/src/libs/routes/enrollment.js +++ b/src/libs/routes/enrollment.js @@ -6,6 +6,8 @@ const libs = `${process.cwd()}/libs`; const log = require(`${libs}/log`)(module); +const squel = require('squel'); + const dbQuery = require('../db/query_exec'); const response = require('../middlewares/response'); diff --git a/src/libs/routes/region.js b/src/libs/routes/region.js index 56c4cd2e..754cd616 100644 --- a/src/libs/routes/region.js +++ b/src/libs/routes/region.js @@ -11,14 +11,14 @@ const query = require(`${libs}/middlewares/query`); const response = require(`${libs}/middlewares/response`); regionApp.get('/', (req, res, next) => { - req.query = squel.select().from('regioes').toParam(); + req.sql = squel.select().from('regioes').toParam(); next(); -}, query, response); +}, query, response('region')); regionApp.get('/:id', (req, res, next) => { - req.query = squel.select().from('regioes').where('pk_regiao_id = ?', + req.sql = squel.select().from('regioes').where('pk_regiao_id = ?', parseInt(req.params.id, 10)).toParam(); next(); -}, query, response); +}, query, response('region')); module.exports = regionApp; diff --git a/src/libs/routes/state.js b/src/libs/routes/state.js index dae0eb71..637149f1 100644 --- a/src/libs/routes/state.js +++ b/src/libs/routes/state.js @@ -11,20 +11,20 @@ const query = require(`${libs}/middlewares/query`); const response = require(`${libs}/middlewares/response`); stateApp.get('/', (req, res, next) => { - req.query = squel.select().from('estados').toParam(); + req.sql = squel.select().from('estados').toParam(); next(); -}, query, response); +}, query, response('state')); stateApp.get('/:id', (req, res, next) => { - req.query = squel.select().from('estados').where('pk_estado_id = ?', + req.sql = squel.select().from('estados').where('pk_estado_id = ?', parseInt(req.params.id, 10)).toParam(); next(); -}, query, response); +}, query, response('state')); stateApp.get('/region/:id', (req, res, next) => { - req.query = squel.select().from('estados').where('fk_regiao_id = ?', + req.sql = squel.select().from('estados').where('fk_regiao_id = ?', parseInt(req.params.id, 10)).toParam(); next(); -}, query, response); +}, query, response('state')); module.exports = stateApp; -- GitLab