From 748a36c9de4e22cd63e177a558770ef038819d31 Mon Sep 17 00:00:00 2001 From: Gabriel Ruschel <grc15@inf.ufpr.br> Date: Tue, 25 Apr 2017 11:51:50 -0300 Subject: [PATCH] Adapt classroom route and add subroutes --- src/libs/routes/classroom.js | 88 +++++++++++++++++++++++++----------- 1 file changed, 61 insertions(+), 27 deletions(-) diff --git a/src/libs/routes/classroom.js b/src/libs/routes/classroom.js index 37186e56..87c34d9e 100644 --- a/src/libs/routes/classroom.js +++ b/src/libs/routes/classroom.js @@ -12,8 +12,44 @@ const response = require(`${libs}/middlewares/response`); const ReqQueryFields = require(`${libs}/middlewares/reqQueryFields`); +const id2str = require(`${libs}/middlewares/id2str`); + let rqf = new ReqQueryFields(); +let rqfCount = new ReqQueryFields(); + +// Complete range of the enrollments dataset. +// Returns a tuple of start and ending years of the complete enrollments dataset. +classroomApp.get('/year_range', (req, res, next) => { + req.sql.from('escola') + .field('MIN(escola.ano_censo)', 'start_year') + .field('MAX(escola.ano_censo)', 'end_year'); + next(); +}, query, response('range')); + +classroomApp.get('/adm_dependency', (req, res, next) => { + req.sql.from('dependencia_adm') + .field('id') + .field('nome', 'name') + .where('id <= 4'); + next() +}, query, response('adm_dependency')); + +classroomApp.get('/adm_dependency_detailed', (req, res, next) => { + req.sql.from('dependencia_adm') + .field('id', 'id') + .field('nome', 'name'); + next() +}, query, response('adm_dependency_detailed')); + +classroomApp.get('/location', (req, res, next) => { + req.sql = squel.select() + .field('id') + .field('descricao', 'name') + .from('localizacao'); + next() +}, query, response('location')); + rqf.addField({ name: 'filter', field: false, @@ -79,56 +115,54 @@ rqf.addField({ foreignTable: 'escola' } }).addValue({ - name: 'year', + name: 'min_year', table: 'escola', tableField: 'ano_censo', resultField: 'year', where: { - relation: '=', + relation: '>=', type: 'integer', - field: 'ano_censo', - table: 'escola' + field: 'ano_censo' + } +}).addValue({ + name: 'max_year', + table: 'escola', + tableField: 'ano_censo', + resultField: 'year', + where: { + relation: '<=', + type: 'integer', + field: 'ano_censo' } }).addValue({ name: 'adm_dependency', - table: 'dependencia_adm', - tableField: 'nome', - resultField: 'adm_dependency_name', + table: 'escola', + tableField: 'dependencia_adm_id', + resultField: 'adm_dependency_id', where: { relation: '=', type: 'integer', - field: 'id' - }, - join: { - primary: 'id', - foreign: 'dependencia_adm_id', - foreignTable: 'escola' + field: 'dependencia_adm_id' } }).addValue({ name: 'adm_dependency_detailed', - table: 'dependencia_adm', - tableField: 'nome', - resultField: 'adm_dependency_detailed_name', + table: 'escola', + tableField: 'dependencia_adm_priv', + resultField: 'adm_dependency_detailed_id', where: { relation: '=', type: 'integer', - field: 'id' - }, - join: { - primary: 'id', - foreign: 'dependencia_adm_priv', - foreignTable: 'escola' + field: 'dependencia_adm_priv' } }).addValue({ - name: 'locality', + name: 'location', table: 'escola', tableField: 'cod_localizacao', - resultField: 'locality', + resultField: 'location_id', where: { relation: '=', type: 'integer', - field: 'cod_localizacao', - table: 'escola' + field: 'cod_localizacao' } }); @@ -142,6 +176,6 @@ classroomApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => { .order('escola.ano_censo') .where('escola.situacao_de_funcionamento = 1 AND escola.local_func_predio_escolar = 1'); next(); -}, query, response('classroom')); +}, query, id2str.transform(true), response('classroom')); module.exports = classroomApp; -- GitLab