diff --git a/build/config.json b/build/config.json deleted file mode 100644 index 076d753b76600fa1d9c0fbd0d1d60c5a60998a90..0000000000000000000000000000000000000000 --- a/build/config.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "port": 3000, - "monetdb": { - "host": "simcaqdb1", - "port": 50000, - "dbname": "simcaq_dev", - "user": "monetdb", - "password":"monetdb", - "nrConnections": 16 - }, - "default": { - "api": { - "version" : "v1" - } - } -} diff --git a/build/libs/app.js b/build/libs/app.js deleted file mode 100644 index a678b1c48f2fc93277fa47d2aff07c1fdf3aa659..0000000000000000000000000000000000000000 --- a/build/libs/app.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -var express = require('express'); -var cookieParser = require('cookie-parser'); -var bodyParser = require('body-parser'); -var methodOverride = require('method-override'); -var cors = require('cors'); - -var log = require('./log')(module); - -var api = require('./routes/api'); -var states = require('./routes/states'); -var regions = require('./routes/regions'); -var cities = require('./routes/cities'); - -var app = express(); - -app.use(bodyParser.json()); -app.use(bodyParser.urlencoded({ extended: false })); -app.use(cookieParser()); -app.use(cors()); -app.use(methodOverride()); - -app.use('/v1/', api); -app.use('/v1/states', states); -app.use('/v1/regions', regions); -app.use('/v1/cities', cities); - -// catch 404 and forward to error handler -app.use(function (req, res, next) { - res.status(404); - log.debug('%s %d %s', req.method, res.statusCode, req.url); - res.json({ error: 'Not found' }).end(); -}); - -// error handlers -app.use(function (err, req, res, next) { - res.status(err.status || 500); - log.error('%s %d %s', req.method, res.statusCode, err.message); - res.json({ error: err.message }).end(); -}); - -module.exports = app; \ No newline at end of file diff --git a/build/libs/config.js b/build/libs/config.js deleted file mode 100644 index 2f7bd18e7d52121f1f78d197bc31d79cebd0bb25..0000000000000000000000000000000000000000 --- a/build/libs/config.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -var nconf = require('nconf'); - -nconf.argv().env().file({ file: process.cwd() + '/config.json' }); - -module.exports = nconf; \ No newline at end of file diff --git a/build/libs/db/monet.js b/build/libs/db/monet.js deleted file mode 100644 index c8d29099ae9f4802b09ac38136583ecc979aa2df..0000000000000000000000000000000000000000 --- a/build/libs/db/monet.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -var MonetDBPool = require('monetdb-pool'); - -var libs = process.cwd() + '/libs'; - -var config = require(libs + '/config'); - -var poolOptions = { - nrConnections: config.get('monetdb:nrConnections') -}; - -var options = { - host: config.get('monetdb:host'), - port: config.get('monetdb:port'), - dbname: config.get('monetdb:dbname'), - user: config.get('monetdb:user'), - password: config.get('monetdb:password') -}; - -var conn = new MonetDBPool(poolOptions, options); -conn.connect(); - -module.exports = conn; \ No newline at end of file diff --git a/build/libs/db/query_decorator.js b/build/libs/db/query_decorator.js deleted file mode 100644 index ce0697d756a4f0f7fba74542889c47976fc5dc9a..0000000000000000000000000000000000000000 --- a/build/libs/db/query_decorator.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; - -var libs = process.cwd() + "/libs"; -var log = require(libs + "/log")(module); -var conn = require(libs + "/db/monet"); - -/** - * Basic decorator to wrap SQL query strings - */ -exports.execQuery = function (sqlQuery, sqlQueryParams) { - log.debug("Executing SQL query '" + sqlQuery + "' with params '" + sqlQueryParams + "'"); - conn.prepare(sqlQuery, true).then(function (dbQuery) { - dbQuery.exec(sqlQueryParams).then(function (dbResult) { - log.debug(dbResult.data); - log.debug("Query result: " + dbResult.data); - return dbResult; - }, function (error) { - log.error("SQL query execution error: " + error.message); - return error; - }); - }); -}; \ No newline at end of file diff --git a/build/libs/enrollment/all.js b/build/libs/enrollment/all.js deleted file mode 100644 index 9a390c31f71bc7eae1522a280a2dc8f6723185bf..0000000000000000000000000000000000000000 --- a/build/libs/enrollment/all.js +++ /dev/null @@ -1 +0,0 @@ -"use strict"; \ No newline at end of file diff --git a/build/libs/enrollment/city.js b/build/libs/enrollment/city.js deleted file mode 100644 index 9a390c31f71bc7eae1522a280a2dc8f6723185bf..0000000000000000000000000000000000000000 --- a/build/libs/enrollment/city.js +++ /dev/null @@ -1 +0,0 @@ -"use strict"; \ No newline at end of file diff --git a/build/libs/enrollment/common.js b/build/libs/enrollment/common.js deleted file mode 100644 index 9c78895181d5b81053b58d89d2bc2d3c93340e02..0000000000000000000000000000000000000000 --- a/build/libs/enrollment/common.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -var libs = process.cwd() + '/libs'; - -var log = require(libs + '/log')(module); - -var sqlDecorator = require(libs + '/query_decorator'); - -var yearRange = function yearRange() { - var yearSql = 'SELECT MIN(t.ano_censo) AS start_year, MAX(t.ano_censo)' + 'AS end_year FROM turmas AS t'; - log.debug('Generated SQL query for enrollments\' year range'); - return sqlDecorator.execQuery(yearSql, []); -}; - -module.exports = yearRange; \ No newline at end of file diff --git a/build/libs/enrollment/country.js b/build/libs/enrollment/country.js deleted file mode 100644 index 9a390c31f71bc7eae1522a280a2dc8f6723185bf..0000000000000000000000000000000000000000 --- a/build/libs/enrollment/country.js +++ /dev/null @@ -1 +0,0 @@ -"use strict"; \ No newline at end of file diff --git a/build/libs/enrollment/region.js b/build/libs/enrollment/region.js deleted file mode 100644 index 9a390c31f71bc7eae1522a280a2dc8f6723185bf..0000000000000000000000000000000000000000 --- a/build/libs/enrollment/region.js +++ /dev/null @@ -1 +0,0 @@ -"use strict"; \ No newline at end of file diff --git a/build/libs/enrollment/state.js b/build/libs/enrollment/state.js deleted file mode 100644 index 9a390c31f71bc7eae1522a280a2dc8f6723185bf..0000000000000000000000000000000000000000 --- a/build/libs/enrollment/state.js +++ /dev/null @@ -1 +0,0 @@ -"use strict"; \ No newline at end of file diff --git a/build/libs/log.js b/build/libs/log.js deleted file mode 100644 index e93d2ff2b7a0a81141b85099b8b97835a74159b3..0000000000000000000000000000000000000000 --- a/build/libs/log.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var winston = require('winston'); - -winston.emitErrs = true; - -function getFilePath(module) { - // using filename in log statements - return module.filename.split('/').slice(-2).join('/'); -} - -function logger(module) { - return new winston.Logger({ - transports: [new winston.transports.File({ - level: 'info', - filename: process.cwd() + '/logs/all.log', - handleException: true, - json: false, - maxSize: 5242880, // 5MB - maxFiles: 2, - colorize: false - }), new winston.transports.Console({ - level: 'debug', - label: getFilePath(module), - handleException: true, - json: true, - colorize: true - })], - exitOnError: false - }); -} - -module.exports = logger; \ No newline at end of file diff --git a/build/libs/query_decorator.js b/build/libs/query_decorator.js deleted file mode 100644 index ce0697d756a4f0f7fba74542889c47976fc5dc9a..0000000000000000000000000000000000000000 --- a/build/libs/query_decorator.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; - -var libs = process.cwd() + "/libs"; -var log = require(libs + "/log")(module); -var conn = require(libs + "/db/monet"); - -/** - * Basic decorator to wrap SQL query strings - */ -exports.execQuery = function (sqlQuery, sqlQueryParams) { - log.debug("Executing SQL query '" + sqlQuery + "' with params '" + sqlQueryParams + "'"); - conn.prepare(sqlQuery, true).then(function (dbQuery) { - dbQuery.exec(sqlQueryParams).then(function (dbResult) { - log.debug(dbResult.data); - log.debug("Query result: " + dbResult.data); - return dbResult; - }, function (error) { - log.error("SQL query execution error: " + error.message); - return error; - }); - }); -}; \ No newline at end of file diff --git a/build/libs/routes/api.js b/build/libs/routes/api.js deleted file mode 100644 index 812eae438319d38aaabeeb2a15cf0f7aa02953ea..0000000000000000000000000000000000000000 --- a/build/libs/routes/api.js +++ /dev/null @@ -1,308 +0,0 @@ -'use strict'; - -var express = require('express'); - -var xml = require('js2xmlparser'); - -var enrollmentApp = express(); - -var libs = process.cwd() + '/libs'; - -var log = require(libs + '/log')(module); - -var conn = require(libs + '/db/monet'); - -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 }); - } -} - -enrollmentApp.get('/', function (req, res) { - res.json({ msg: 'SimCAQ API is running' }); -}); - -/** - * Complete range of the enrollments dataset - * - * Returns a tuple of start and ending years of the complete enrollments dataset. - */ -enrollmentApp.get('/year_range', function (req, res) { - var yearSql = 'SELECT MIN(t.ano_censo) AS start_year, MAX(t.ano_censo)' + 'AS end_year FROM turmas AS t'; - - conn.query(yearSql, true).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); -}); - -enrollmentApp.get('/education_level', function (req, res) { - var edLevelSql = 'SELECT pk_etapa_ensino_id AS id, desc_etapa AS ' + 'education_level FROM etapa_ensino'; - conn.query(edLevelSql, true).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); -}); - -enrollmentApp.get('/data', function (req, res) { - log.debug(req.query); - log.debug(req.query.met); - log.debug(req.query.dim); - var schoolClassSql = 'SELECT * FROM turmas'; - conn.query(schoolClassSql, true).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); -}); - -enrollmentApp.use('/enrollments', function (req, res, next) { - var params = req.query; - req.paramCnt = 0; - - if (typeof params.id !== 'undefined') { - req.id = parseInt(params.id, 10); - req.paramCnt += 1; - } - - if (typeof params.location_id !== 'undefined') { - req.location_id = parseInt(params.location_id, 10); - req.paramCnt += 1; - } - - if (typeof params.adm_dependency_id !== 'undefined') { - req.adm_dependency_id = parseInt(params.adm_dependency_id, 10); - req.paramCnt += 1; - } - - if (typeof params.census_year !== 'undefined') { - req.census_year = parseInt(params.census_year, 10); - req.paramCnt += 1; - } - - if (typeof params.education_level_id !== 'undefined') { - req.education_level_id = parseInt(params.education_level_id, 10); - req.paramCnt += 1; - } - - next(); -}); - -enrollmentApp.use('/enrollments', function (req, res, next) { - var params = req.query; - if (typeof params.aggregate !== 'undefined' && params.aggregate === 'region') { - log.debug('Using enrollments query for regions'); - req.sqlQuery = 'SELECT r.nome AS name, COALESCE(SUM(t.num_matriculas), 0) AS total ' + 'FROM regioes AS r ' + 'INNER JOIN estados AS e ON r.pk_regiao_id = e.fk_regiao_id ' + 'INNER JOIN municipios AS m ON e.pk_estado_id = m.fk_estado_id ' + 'LEFT OUTER JOIN turmas AS t ON ( ' + 'm.pk_municipio_id = t.fk_municipio_id '; - req.sqlQueryParams = []; - - if (typeof req.census_year !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.ano_censo = ?'; - req.sqlQueryParams.push(req.census_year); - } - - if (typeof req.adm_dependency_id !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.fk_dependencia_adm_id = ?'; - req.sqlQueryParams.push(req.adm_dependency_id); - } - - if (typeof req.location_id !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.id_localizacao = ?'; - req.sqlQueryParams.push(req.location_id); - } - - if (typeof req.education_level_id !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.fk_etapa_ensino_id = ?'; - req.sqlQueryParams.push(req.education_level_id); - } - - req.sqlQuery += ')'; - if (typeof req.id !== 'undefined') { - req.sqlQuery += ' WHERE '; - req.sqlQuery += 'r.pk_regiao_id = ?'; - req.sqlQueryParams.push(req.id); - } - req.sqlQuery += ' GROUP BY r.nome'; - } - next(); -}); - -enrollmentApp.use('/enrollments', function (req, res, next) { - var params = req.query; - if (typeof params.aggregate !== 'undefined' && params.aggregate === 'state') { - log.debug('Using enrollments query for states'); - req.sqlQuery = 'SELECT e.nome AS name, COALESCE(SUM(t.num_matriculas), 0) as total ' + 'FROM estados AS e ' + 'INNER JOIN municipios AS m ON m.fk_estado_id = e.pk_estado_id ' + 'LEFT OUTER JOIN turmas AS t ON (' + 'm.pk_municipio_id = t.fk_municipio_id '; - req.sqlQueryParams = []; - - if (typeof req.census_year !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.ano_censo = ?'; - req.sqlQueryParams.push(req.census_year); - } - - if (typeof req.adm_dependency_id !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.fk_dependencia_adm_id = ?'; - req.sqlQueryParams.push(req.adm_dependency_id); - } - - if (typeof req.location_id !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.id_localizacao = ?'; - req.sqlQueryParams.push(req.location_id); - } - - if (typeof req.education_level_id !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.fk_etapa_ensino_id = ?'; - req.sqlQueryParams.push(req.education_level_id); - } - - req.sqlQuery += ')'; - - if (typeof req.id !== 'undefined') { - req.sqlQuery += ' WHERE '; - req.sqlQuery += 'e.pk_estado_id = ?'; - req.sqlQueryParams.push(req.id); - } - - req.sqlQuery += ' GROUP BY e.nome'; - } - next(); -}); - -enrollmentApp.use('/enrollments', function (req, res, next) { - var params = req.query; - if (typeof params.aggregate !== 'undefined' && params.aggregate === 'city') { - log.debug('Using enrollments query for cities'); - req.sqlQuery = 'SELECT m.nome AS name, COALESCE(SUM(t.num_matriculas), 0) as total ' + 'FROM municipios AS m ' + 'LEFT OUTER JOIN turmas AS t ON ( ' + 'm.pk_municipio_id = t.fk_municipio_id'; - req.sqlQueryParams = []; - - if (typeof req.census_year !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.ano_censo = ?'; - req.sqlQueryParams.push(req.census_year); - } - - if (typeof req.adm_dependency_id !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.fk_dependencia_adm_id = ?'; - req.sqlQueryParams.push(req.adm_dependency_id); - } - - if (typeof req.location_id !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.id_localizacao = ?'; - req.sqlQueryParams.push(req.location_id); - } - - if (typeof req.education_level_id !== 'undefined') { - req.sqlQuery += ' AND '; - req.sqlQuery += 't.fk_etapa_ensino_id = ?'; - req.sqlQueryParams.push(req.education_level_id); - } - - req.sqlQuery += ')'; - - if (typeof req.id !== 'undefined') { - req.sqlQuery += ' WHERE '; - req.sqlQuery += 'm.pk_municipio_id = ?'; - req.sqlQueryParams.push(req.id); - } - - req.sqlQuery += 'GROUP BY m.nome'; - } - next(); -}); - -enrollmentApp.use('/enrollments', function (req, res, next) { - var params = req.query; - if (typeof params.aggregate === 'undefined') { - log.debug('Using enrollments query for the whole country'); - req.sqlQuery = 'SELECT \'Brasil\' AS name, COALESCE(SUM(t.num_matriculas),0) AS total ' + 'FROM turmas AS t'; - req.sqlQueryParams = []; - - if (req.paramCnt > 0) { - req.sqlQuery += ' WHERE '; - } - - if (typeof req.census_year !== 'undefined') { - req.sqlQuery += 't.ano_censo = ?'; - req.sqlQueryParams.push(req.census_year); - } - - if (typeof req.adm_dependency_id !== 'undefined') { - if (req.sqlQueryParams.length > 0) { - req.sqlQuery += ' AND '; - } - req.sqlQuery += 't.fk_dependencia_adm_id = ?'; - req.sqlQueryParams.push(req.adm_dependency_id); - } - - if (typeof req.location_id !== 'undefined') { - if (req.sqlQueryParams.length > 0) { - req.sqlQuery += ' AND '; - } - req.sqlQuery += 't.id_localizacao = ?'; - req.sqlQueryParams.push(req.location_id); - } - - if (typeof req.education_level_id !== 'undefined') { - if (req.sqlQueryParams.length > 0) { - req.sqlQuery += ' AND '; - } - req.sqlQuery += 't.fk_etapa_ensino_id = ?'; - req.sqlQueryParams.push(req.education_level_id); - } - } - next(); -}); - -enrollmentApp.get('/enrollments', function (req, res, next) { - log.debug('Request parameters: ' + req); - if (typeof req.sqlQuery === 'undefined') { - // Should only happen if there is a bug in the chaining of the - // '/enrollments' route, since when no +aggregate+ parameter is given, - // it defaults to use the query for the whole country. - log.error('BUG -- No SQL query was found to be executed!'); - res.send('Request could not be satisfied due to an internal error'); - } else { - log.debug('SQL query: ${ req.sqlQuery }?'); - log.debug(req.sqlQuery); - - conn.prepare(req.sqlQuery, true).then(function (dbQuery) { - dbQuery.exec(req.sqlQueryParams).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); - }); - } -}); - -module.exports = enrollmentApp; \ No newline at end of file diff --git a/build/libs/routes/cities.js b/build/libs/routes/cities.js deleted file mode 100644 index 6a0048f2c1cd2c5892f6aadba2f35410ea93debc..0000000000000000000000000000000000000000 --- a/build/libs/routes/cities.js +++ /dev/null @@ -1,85 +0,0 @@ -'use strict'; - -var express = require('express'); - -var xml = require('js2xmlparser'); - -var cityApp = express(); - -var libs = process.cwd() + '/libs'; - -var log = require(libs + '/log')(module); - -var conn = require(libs + '/db/monet'); - -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 }); - } -} - -cityApp.get('/', function (req, res) { - conn.query('SELECT * FROM municipios', true).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); -}); - -cityApp.get('/:id', function (req, res) { - var citySql = 'SELECT * FROM municipios WHERE pk_municipio_id = ?'; - var cityId = parseInt(req.params.id, 10); - conn.prepare(citySql, true).then(function (dbQuery) { - dbQuery.exec([cityId]).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); - }); -}); - -cityApp.get('/ibge/:id', function (req, res) { - var citySql = 'SELECT * FROM municipios WHERE codigo_ibge = ?'; - var cityIbgeCode = req.params.id; - conn.prepare(citySql, true).then(function (dbQuery) { - dbQuery.exec([cityIbgeCode]).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); - }); -}); - -cityApp.get('/state/:id', function (req, res) { - var citySql = 'SELECT * FROM municipios WHERE fk_estado_id = ?'; - var stateId = parseInt(req.params.id, 10); - conn.prepare(citySql, true).then(function (dbQuery) { - dbQuery.exec([stateId]).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); - }); -}); - -module.exports = cityApp; \ No newline at end of file diff --git a/build/libs/routes/regions.js b/build/libs/routes/regions.js deleted file mode 100644 index 75cf2bee0d1923460e3899b81c4fbdfcd5ae6d57..0000000000000000000000000000000000000000 --- a/build/libs/routes/regions.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -var express = require('express'); - -var xml = require('js2xmlparser'); - -var regionApp = express(); - -var libs = process.cwd() + '/libs'; - -var log = require(libs + '/log')(module); - -var conn = require(libs + '/db/monet'); - -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 }); - } -} - -regionApp.get('/', function (req, res) { - var regionSql = 'SELECT * FROM regioes'; - conn.query(regionSql, true).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); -}); - -regionApp.get('/:id', function (req, res) { - var regionSql = 'SELECT * FROM regioes WHERE pk_regiao_id = ?'; - var regionId = parseInt(req.params.id, 10); - conn.prepare(regionSql, true).then(function (dbQuery) { - dbQuery.exec([regionId]).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); - }); -}); - -module.exports = regionApp; \ No newline at end of file diff --git a/build/libs/routes/states.js b/build/libs/routes/states.js deleted file mode 100644 index 8579f3929b4ba24ff1308f1126706eb70874c339..0000000000000000000000000000000000000000 --- a/build/libs/routes/states.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; - -var express = require('express'); - -var xml = require('js2xmlparser'); - -var stateApp = express(); - -var libs = process.cwd() + '/libs'; - -var log = require(libs + '/log')(module); - -var conn = require(libs + '/db/monet'); - -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 }); - } -} - -stateApp.get('/', function (req, res, next) { - var stateSql = 'SELECT * FROM estados'; - conn.query(stateSql, true).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); -}); - -stateApp.get('/:id', function (req, res, next) { - var stateSql = 'SELECT * FROM estados WHERE pk_estado_id = ?'; - var stateId = parseInt(req.params.id, 10); - conn.prepare(stateSql, true).then(function (dbQuery) { - dbQuery.exec([stateId]).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); - }); -}); - -stateApp.get('/region/:id', function (req, res, next) { - var stateSql = 'SELECT * FROM estados WHERE fk_regiao_id = ?'; - var regionId = parseInt(req.params.id, 10); - conn.prepare(stateSql, true).then(function (dbQuery) { - dbQuery.exec([regionId]).then(function (dbResult) { - log.debug(dbResult); - req.result = dbResult; - response(req, res); - }, function (dbError) { - log.error('SQL query execution error: ' + dbError.message); - // FIXME: change response to HTTP 501 status - res.json({ error: 'An internal error has occurred' }).end(); - }); - }); -}); - -module.exports = stateApp; \ No newline at end of file diff --git a/build/logs/.gitignore b/build/logs/.gitignore deleted file mode 100644 index 397b4a7624e35fa60563a9c03b1213d93f7b6546..0000000000000000000000000000000000000000 --- a/build/logs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.log diff --git a/build/server.js b/build/server.js deleted file mode 100644 index 5f2171cc5b90c1149027cd7df7e6ec464de483c7..0000000000000000000000000000000000000000 --- a/build/server.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -var debug = require('debug')('node-express-base'); - -var libs = process.cwd() + '/libs'; - -var config = require(libs + '/config'); - -var log = require(libs + '/log')(module); - -var app = require(libs + '/app'); - -app.set('port', config.get('port') || 3000); - -var server = app.listen(app.get('port'), function () { - debug('Express server listening on port ' + server.address().port); - log.info('Express server listening on port ' + config.get('port')); -}); \ No newline at end of file diff --git a/build/test/test.js b/build/test/test.js deleted file mode 100644 index 55caa55c10bdd703997e6355a6fb432ebb66cd1a..0000000000000000000000000000000000000000 --- a/build/test/test.js +++ /dev/null @@ -1,139 +0,0 @@ -'use strict'; - -var chai = require('chai'); -var chaiHttp = require('chai-http'); -var assert = chai.assert; -var expect = chai.expect; -var should = chai.should(); // actually call the function -var server = require('../libs/app'); - -chai.use(chaiHttp); - -describe('request enrollments', function () { - it('should list enrollments', function (done) { - chai.request(server).get('/v1/enrollments').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('name'); - res.body.result[0].should.have.property('total'); - done(); - }); - }); -}); - -describe('request regions', function () { - it('should list all regions', function (done) { - chai.request(server).get('/v1/regions').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_regiao_id'); - res.body.result[0].should.have.property('nome'); - done(); - }); - }); - - it('should list region by id', function (done) { - chai.request(server).get('/v1/regions/1').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.should.have.length(1); - res.body.result[0].should.have.property('pk_regiao_id'); - res.body.result[0].should.have.property('nome'); - done(); - }); - }); -}); - -describe('request states', function () { - - it('should list all states', function (done) { - chai.request(server).get('/v1/states').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_estado_id'); - res.body.result[0].should.have.property('fk_regiao_id'); - res.body.result[0].should.have.property('nome'); - done(); - }); - }); - - it('should list a state by id', function (done) { - chai.request(server).get('/v1/states/11').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.should.have.length(1); - res.body.result[0].should.have.property('pk_estado_id'); - res.body.result[0].should.have.property('fk_regiao_id'); - res.body.result[0].should.have.property('nome'); - done(); - }); - }); - - it('should list states by region id', function (done) { - chai.request(server).get('/v1/states/region/1').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_estado_id'); - res.body.result[0].should.have.property('fk_regiao_id'); - res.body.result[0].should.have.property('nome'); - done(); - }); - }); -}); - -describe('request cities', function () { - - it('should list all cities', function (done) { - chai.request(server).get('/v1/cities').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(); - }); - }); - - it('should list a city by id', function (done) { - chai.request(server).get('/v1/cities/1').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(); - }); - }); - - it('should list a city by codigo_ibge', function (done) { - chai.request(server).get('/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(); - }); - }); -}); \ No newline at end of file