Skip to content
Snippets Groups Projects
Commit 4e7153e5 authored by João Victor Risso's avatar João Victor Risso
Browse files

Add initial support for parameters in the enrollments route

- Rename /matriculas to /enrollments
- Add initial support for parameters in the enrollments route
parent 9141a651
No related branches found
No related tags found
No related merge requests found
...@@ -14,6 +14,20 @@ router.get('/', function (req, res) { ...@@ -14,6 +14,20 @@ router.get('/', function (req, res) {
}) })
}) })
/**
* Complete range of the enrollments dataset
*
* Returns a tuple of start and ending years of the complete enrollments dataset.
*/
router.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(result) {
res.json({
result: result.data
})
});
})
router.get('/data', function(req, res) { router.get('/data', function(req, res) {
log.debug(req.query) log.debug(req.query)
log.debug(req.query.met) log.debug(req.query.met)
...@@ -27,27 +41,84 @@ router.get('/data', function(req, res) { ...@@ -27,27 +41,84 @@ router.get('/data', function(req, res) {
}) })
}) })
router.get('/matriculas.:format?', function(req, res) { router.get('/enrollments.:format?', function(req, res) {
log.debug(req.query); var params = req.query;
var id = 0;
var location_id = 0;
var adm_dependency_id = 0;
var start_year = 0;
var end_year = 0;
var enrollmentSql = "";
if (params.id)
{
id = parseInt(params.id, 10);
}
if (params.location_id)
{
location_id = parseInt(params.location_id, 10);
}
if (params.adm_dependency_id)
{
adm_dependency_id = parseInt(params.adm_dependency_id)
}
if (!params.start_year && !params.end_year)
{
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(result) {
start_year = result.data.start_year;
end_year = result.data.end_year;
});
}
if (params.start_year)
{
start_year = parseInt(params.start_year, 10);
} else if (start_year > 0) { // if start_year was not previously set
var yearSql = "SELECT MIN(t.ano_censo) AS start_year FROM turmas AS t";
conn.query(yearSql, true).then(function(result) {
start_year = result.data.start_year;
});
}
tbl_name = "matriculas"; if (params.end_year)
switch(req.query.agregar)
{ {
case "estado": end_year = parseInt(params.end_year, 10);
} else if (end_year > 0) { // if end_year was not previously set
var yearSql = "SELECT MAX(t.ano_censo) AS end_year FROM turmas AS t";
conn.query(yearSql, true).then(function(result) {
end_year = result.data.end_year;
});
}
switch(params.aggregate)
{
/** TODO: function to compute enrollments by state in the database not yet available
case "state":
tbl_name = "matriculas_estado"; tbl_name = "matriculas_estado";
break; break;
case "regiao": */
tbl_name = "matriculas_regiao"; case "region":
if (!id) { // FIXME: parametrized query for all regions is not yet available
enrollmentSql = "SELECT nome AS name, total, ano_inicio AS start_year, ano_fim AS end_year \
FROM matRegiao(1," + start_year + "," + end_year + "," + adm_dependency_id + "," + location_id + ")";
} else {
enrollmentSql = "SELECT nome AS name, total, ano_inicio AS start_year, ano_fim AS end_year \
FROM matRegiao(" + id + "," + start_year + "," + end_year + "," + adm_dependency_id + "," + location_id + ")";
}
break; break;
default:
enrollmentSql = "SELECT nome AS name, total, ano_inicio AS start_year, ano_fim AS end_year \
FROM matBrasil(" + start_year + "," + end_year + "," + adm_dependency_id + "," + location_id + ")";
} }
log.info("Querying table '" + tbl_name + "'"); log.debug(params);
log.debug("Executing query :\"" + enrollmentSql + "\"");
/* FIXME: Replace parameter substitution conn.query(enrollmentSql, true).then(function(result) {
- Might not be needed since the parameter tbl_name is not supplied by the user */
conn.query(
'SELECT * FROM ' + tbl_name, true
).then(function(result) {
log.debug(result); log.debug(result);
if (req.params.format === 'csv') { if (req.params.format === 'csv') {
res.csv(result.data) res.csv(result.data)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment