diff --git a/libs/middlewares/query.js b/libs/middlewares/query.js new file mode 100644 index 0000000000000000000000000000000000000000..d14958dc43f6610cb3aa502ec6491db6a8095899 --- /dev/null +++ b/libs/middlewares/query.js @@ -0,0 +1,16 @@ +var libs = process.cwd() + '/libs/' +var conn = require(libs + 'db/monet') +var log = require(libs + 'log')(module) + +function query(req, res, next) { + log.debug(req.query) + conn.query( + req.query.text, req.query.values, true + ).then(function(result) { + // log.debug(result) + req.result = result + next() + }) +} + +module.exports = query diff --git a/libs/routes/cities.js b/libs/routes/cities.js index 6a2220497fa90a47200fce15b0879c8cd5ed90c8..10d7ceef4cc7ceebad2577ae12fcea5b8d91019a 100644 --- a/libs/routes/cities.js +++ b/libs/routes/cities.js @@ -1,6 +1,7 @@ var express = require('express') var xml = require('js2xmlparser') var router = express.Router() +var squel = require('squel') var libs = process.cwd() + '/libs/' @@ -8,59 +9,34 @@ var log = require(libs + 'log')(module) var config = require(libs + 'config') var conn = require(libs + 'db/monet') +var query = require(libs + 'middlewares/query') function response(req, res) { - if (req.query.format === 'csv') { - res.csv(req.result.data) - } else if (req.query.format === 'xml') { - res.send(xml("result", JSON.stringify({city: req.result.data}))) - } - else { - res.json({ - result: req.result.data - }) - } + if (req.query.format === 'csv') { + res.csv(req.result.data) + } else if (req.query.format === 'xml') { + res.send(xml("result", JSON.stringify({city: req.result.data}))) + } + else { + res.json({ + result: req.result.data + }) + } } -router.get('/', function(req, res) { - conn.query( - 'SELECT * FROM municipios', true - ).then(function(result) { - log.debug(result) - req.result = result - response(req, res) - }) +router.get('/', function(req, res, next) { + req.query = squel.select().from('municipios').toParam() + next() +}, query, response) -}) +router.get('/:id', function(req, res, next) { + req.query = squel.select().from('municipios').where('pk_municipio_id=?', parseInt(req.params.id, 10)).toParam() + next() +}, query, response) -router.get('/:id', function(req, res) { - conn.query( - 'SELECT * FROM municipios WHERE pk_municipio_id='+req.params.id, true - ).then(function(result) { - log.debug(result) - req.result = result - response(req, res) - }) -}) - -router.get('/ibge/:id', function(req, res) { - conn.query( - 'SELECT * FROM municipios WHERE codigo_ibge='+req.params.id, true - ).then(function(result) { - log.debug(result) - req.result = result - response(req, res) - }) -}) - -router.get('/state/:id', function(req, res) { - conn.query( - 'SELECT * FROM municipios WHERE fk_estado_id='+req.params.id, true - ).then(function(result) { - log.debug(result) - req.result = result - response(req, res) - }) -}) +router.get('/state/:id', function(req, res, next) { + req.query = squel.select().from('municipios').where('fk_estado_id=?', parseInt(req.params.id, 10)).toParam() + next() +}, query, response) module.exports = router diff --git a/libs/routes/regions.js b/libs/routes/regions.js index 6c85fccb8a8b856769ccb46ca9fb821c81bab460..cfbbcd946572a8a30ebf00536ce9cbf544226f7f 100644 --- a/libs/routes/regions.js +++ b/libs/routes/regions.js @@ -1,6 +1,7 @@ var express = require('express') var xml = require('js2xmlparser') var router = express.Router() +var squel = require('squel') var libs = process.cwd() + '/libs/' @@ -9,37 +10,29 @@ var config = require(libs + 'config') var conn = require(libs + 'db/monet') +var query = require(libs + 'middlewares/query') + function response(req, res) { - if (req.query.format === 'csv') { - res.csv(req.result.data) - } else if (req.query.format === 'xml') { - res.send(xml("result", JSON.stringify({state: req.result.data}))) - } - else { - res.json({ - result: req.result.data - }) - } + if (req.query.format === 'csv') { + res.csv(req.result.data) + } else if (req.query.format === 'xml') { + res.send(xml("result", JSON.stringify({state: req.result.data}))) + } + else { + res.json({ + result: req.result.data + }) + } } -router.get('/', function(req, res) { - conn.query( - 'SELECT * FROM regioes', true - ).then(function(result) { - log.debug(result) - req.result = result - response(req, res) - }) -}) - -router.get('/:id', function(req, res) { - conn.query( - 'SELECT * FROM regioes WHERE pk_regiao_id='+req.params.id, true - ).then(function(result) { - log.debug(result) - req.result = result - response(req, res) - }) -}) +router.get('/', function(req, res, next) { + req.query = squel.select().from('regioes').toParam() + next() +}, query, response) + +router.get('/:id', function(req, res, next) { + req.query = squel.select().from('regioes').where('pk_regiao_id=?', parseInt(req.params.id, 10)).toParam() + next() +}, query, response) module.exports = router diff --git a/libs/routes/states.js b/libs/routes/states.js index 2192c5377a0e705ad59393dacf46a469491b7ad7..79959ef8fd4a19c3afc3f51328ec737396cb0bbe 100644 --- a/libs/routes/states.js +++ b/libs/routes/states.js @@ -1,6 +1,7 @@ var express = require('express') var xml = require('js2xmlparser') var router = express.Router() +var squel = require('squel') var libs = process.cwd() + '/libs/' @@ -9,47 +10,35 @@ var config = require(libs + 'config') var conn = require(libs + 'db/monet') +var query = require(libs + 'middlewares/query') + function response(req, res) { - if (req.query.format === 'csv') { - res.csv(req.result.data) - } else if (req.query.format === 'xml') { - res.send(xml("result", JSON.stringify({state: req.result.data}))) - } - else { - res.json({ - result: req.result.data - }) - } + console.log('respostas :)') + if (req.query.format === 'csv') { + res.csv(req.result.data) + } else if (req.query.format === 'xml') { + res.send(xml("result", JSON.stringify({state: req.result.data}))) + } + else { + res.json({ + result: req.result.data + }) + } } router.get('/', function(req, res, next) { - conn.query( - 'SELECT * FROM estados', true - ).then(function(result) { - log.debug(result) - req.result = result - response(req, res) - }) -}) + req.query = squel.select().from('estados').toParam() + next() +}, query, response) router.get('/:id', function(req, res, next) { - conn.query( - 'SELECT * FROM estados WHERE pk_estado_id='+req.params.id, true - ).then(function(result) { - log.debug(result) - req.result = result - response(req, res) - }) -}) + req.query = squel.select().from('estados').where('pk_estado_id = ?', parseInt(req.params.id, 10)).toParam() + next() +}, query, response) router.get('/region/:id', function(req, res, next) { - conn.query( - 'SELECT * FROM estados WHERE fk_regiao_id='+req.params.id, true - ).then(function(result) { - log.debug(result) - req.result = result - response(req, res) - }) -}) + req.query = squel.select().from('estados').where('fk_regiao_id = ?', parseInt(req.params.id, 10)).toParam() + next() +}, query, response) module.exports = router diff --git a/package.json b/package.json index 70eae984d543a33a91965143d67790c72924a2f2..c8c186c70762c34e88b90578f4f20a76b7317209 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "method-override": "^2.3.3", "monetdb": "^1.1.2", "nconf": "^0.6.x", + "squel": "^5.4.2", "winston": "^2.2.0" }, "license": "MIT", diff --git a/test/test.js b/test/test.js index bad774a4dcac019492a55fe957fd4aa8f42f39c4..d6b67ff84daf91c4abcb98e014cd8beee5c5c42f 100644 --- a/test/test.js +++ b/test/test.js @@ -139,20 +139,4 @@ describe('request cities', function(){ }) }); - it('should list a city by codigo_ibge', function(done){ - chai.request(server) - .get('/api/v1/cities/ibge/1200013') - .end(function(err, res){ - res.should.have.status(200); - res.should.be.json; - res.body.should.have.property('result'); - res.body.result.should.be.a('array'); - res.body.result[0].should.have.property('pk_municipio_id'); - res.body.result[0].should.have.property('fk_estado_id'); - res.body.result[0].should.have.property('nome'); - res.body.result[0].should.have.property('codigo_ibge'); - done(); - }) - }); - });