Skip to content
Snippets Groups Projects
Commit d9323534 authored by Fernando Erd's avatar Fernando Erd :ok_hand:
Browse files

Add initial structure

parent 3c0ac0b8
No related branches found
No related tags found
1 merge request!161Issue/504
Pipeline #18204 failed
...@@ -84,6 +84,8 @@ const enrollmentProjection = require(`${libs}/routes/enrollmentProjection`); ...@@ -84,6 +84,8 @@ const enrollmentProjection = require(`${libs}/routes/enrollmentProjection`);
const employees = require(`${libs}/routes/employees`); const employees = require(`${libs}/routes/employees`);
const financial = require(`${libs}/routes/financial`);
api.get('/', (req, res) => { api.get('/', (req, res) => {
res.json({ msg: 'SimCAQ API is running' }); res.json({ msg: 'SimCAQ API is running' });
}); });
...@@ -128,6 +130,7 @@ api.use('/class_count', classCount); ...@@ -128,6 +130,7 @@ api.use('/class_count', classCount);
api.use('/portal_mec_inep', portalMecInep); api.use('/portal_mec_inep', portalMecInep);
api.use('/enrollment_projection', enrollmentProjection); api.use('/enrollment_projection', enrollmentProjection);
api.use('/employees', employees); api.use('/employees', employees);
api.use('/financial', financial);
module.exports = api; module.exports = api;
const express = require('express');
const financialApp = express.Router();
const libs = `${process.cwd()}/libs`;
const log = require(`${libs}/log`)(module);
const squel = require('squel');
const query = require(`${libs}/middlewares/query`).query;
const response = require(`${libs}/middlewares/response`);
const ReqQueryFields = require(`${libs}/middlewares/reqQueryFields`);
const id2str = require(`${libs}/middlewares/id2str`);
const addMissing = require(`${libs}/middlewares/addMissing`);
const config = require(`${libs}/config`);
const cache = require('apicache').options({ debug: config.debug, statusCodes: {include: [200]} }).middleware;
let rqf = new ReqQueryFields();
financialApp.get('/year_range', (req, res, next) => {
req.sql.from('indicadores_financeiros')
.field('MIN(indicadores_financeiros.ano_censo)', 'start_year')
.field('MAX(indicadores_financeiros.ano_censo)', 'end_year');
next();
}, query, response('range'));
financialApp.get('/years', (req, res, next) => {
req.sql.from('indicadores_financeiros')
.field('DISTINCT indicadores_financeiros.ano_censo', 'year');
next();
}, query, response('years'));
financialApp.get('/sphere_adm', (req, res, next) => {
req.sql.from('indicadores_financeiros')
.field('DISTINCT indicadores_financeiros.esfera_adm', 'sphere_adm');
next();
}, query, response('sphere_adm'));
financialApp.get('/financial_data', (req, res, next) => {
req.sql.from('indicadores_financeiros')
.field('DISTINCT indicadores_financeiros.dados_financeiros', 'financial_data');
next();
}, query, response('financial_data'));
rqf.addField({
name: 'filter',
field: false,
where: true
}).addField({
name: 'dims',
field: true,
where: false
}).addValue({
name: 'state',
table: 'estado',
tableField: ['sigla', 'id'],
resultField: ['sigla_uf', 'cod_uf'],
where: {
relation: '=',
type: 'integer',
field: 'estado_id',
table: 'indicadores_financeiros'
},
join: {
primary: 'id',
foreign: 'estado_id',
foreignTable: 'indicadores_financeiros'
}
}).addValueToField({
name: 'city',
table: 'municipio',
tableField: 'nome',
resultField: 'city_name',
where: {
relation: '=',
type: 'integer',
field: 'municipio_id',
table: 'indicadores_financeiros'
},
join: {
primary: 'id',
foreign: 'municipio_id',
foreignTable: 'indicadores_financeiros'
}
}, 'filter').addValueToField({
name: 'city',
table: 'municipio',
tableField: ['nome', 'id'],
resultField: ['city_name', 'city_id'],
where: {
relation: '=',
type: 'integer',
field: 'id'
},
join: {
primary: 'id',
foreign: 'municipio_id',
foreignTable: 'indicadores_financeiros'
}
}).addValue({
name: 'min_year',
table: 'indicadores_financeiros',
tableField: 'ano_censo',
resultField: 'year',
where: {
relation: '>=',
type: 'integer',
table: 'indicadores_financeiros',
field: 'ano_censo'
}
}).addValue({
name: 'max_year',
table: 'indicadores_financeiros',
tableField: 'ano_censo',
resultField: 'year',
where: {
relation: '<=',
type: 'integer',
table: 'indicadores_financeiros',
field: 'ano_censo'
}
}).addValue({
name: 'sphere_adm',
table: 'indicadores_financeiros',
tableField: 'esfera_adm',
resultField: 'sphere_adm_id',
where: {
relation: '=',
type: 'integer',
field: 'esfera_adm'
}
}).addValue({
name: 'financial_data',
table: 'indicadores_financeiros',
tableField: 'dados_financeiros',
resultField: 'financial_data_id',
where: {
relation: '=',
type: 'integer',
field: 'dados_financeiros'
}
});
financialApp.get('/', rqf.parse(), rqf.build(), (req, res, next) => {
req.sql.from('indicadores_financeiros')
.field('indicadores_financeiros.estado_id', 'state_id')
.field('estado.sigla', 'state_abbreviation')
.field('indicadores_financeiros.valor', 'valor')
.join('estado', null, 'indicadores_financeiros.estado_id=estado.id')
.group('indicadores_financeiros.ano_censo')
.group('indicadores_financeiros.estado_id')
.group('estado.sigla')
.group('indicadores_financeiros.valor')
next();
}, query, addMissing(rqf), id2str.transform(), response('financial'));
module.exports = financialApp;
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