Skip to content
Snippets Groups Projects
Select Git revision
  • d84670f2f34158a4ddf3e37383904f7e28b0653e
  • master default protected
  • homologa protected
  • development protected
  • msh22-development-patch-10494
  • nova-correcao-funcionarios-2024
  • revert-222fa403
  • enrollment_rate
  • es23-docentes-por-ente-federativo
  • teachers-ies
  • es23-superior-enrollment
  • instruction_level_fix2
  • hotfix-enrollment-aggregate
  • instruction_level_fixes
  • docentes-ies-ente-federativo
  • receita-potencial
  • #974-receita-potencial
  • db-conn
  • years-of-study-mean
  • new-indicators
  • issue_935
  • v1.16.0
  • v1.15.1
  • v1.14.2
  • v1.14.1
  • v1.14.0
  • v1.14
  • v1.9.0
  • v1.8.3
  • v1.8.2
  • v1.8.1
  • v1.8.0
  • v1.7.0
  • v1.6.1
  • v1.6.0
  • v1.5.0
  • v1.4.2
  • v1.4.1
  • v1.4.0
  • v1.3.3
  • v1.3.2
41 results

financial.js

Blame
  • financial.js 4.18 KiB
    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.result = [
            {id: 1, name: "1"},
            {id: 2, name: "2"}
        ]
        next();
    }, 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'
        }
    }).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: 'city',
        table: 'indicadores_financeiros',
        tableField: 'municipio_id',
        resultField: 'city_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('indicadores_financeiros.ano_censo', 'year')
        .field('estado.sigla', 'state_abbreviation')
        .field('indicadores_financeiros.valor', 'valor')
        .field('indicadores_financeiros.esfera_adm', 'sphere_adm_id')
        .field('indicadores_financeiros.dados_financeiros', 'financial_data_id')
        .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')
        .group('indicadores_financeiros.dados_financeiros')
        .group('indicadores_financeiros.esfera_adm')
        next();
    }, query, addMissing(rqf), id2str.transform(), response('financial'));
    
    module.exports = financialApp;