const express = require('express');

const api = express();

const libs = `${process.cwd()}/libs`;

const config = require(`${libs}/config`);

const classes = require('./class');

const enrollment = require('./enrollment');

const state = require('./state');

const region = require('./region');

const city = require('./city');

const school = require('./school');

const simulation = require('./simulation');

const user = require('./user');

const classroom = require('./classroom');

const teacher = require('./teacher');

const idhme = require('./idhme');

const pibpercapita = require('./pibpercapita')

const population = require('./population')

const rateSchool = require('./rateSchool')

const glossEnrollmentRatio = require('./glossEnrollmentRatio')

const liquidEnrollmentRatio = require('./liquidEnrollmentRatio')

const idhm = require('./idhm');

const idhmr = require('./idhmr');

const idhml = require('./idhml');

const oauth2 = require(`${libs}/middlewares/oauth2`);

const verifyToken = require(`${libs}/routes/verifyToken`);

const resetToken = require(`${libs}/routes/resetToken`);

const educationYears = require(`${libs}/routes/educationYears`);

const downloads = require(`${libs}/routes/downloads`);

const infrastructure = require(`${libs}/routes/infrastructure`);

const distributionFactor = require(`${libs}/routes/distributionFactor`);

const siope = require(`${libs}/routes/siope`);

api.get('/', (req, res) => {
    res.json({ msg: 'SimCAQ API is running' });
});

// mount API routes
api.use('/user', user);
api.use('/simulation', simulation);
api.use('/class', classes);
api.use('/enrollment', enrollment);
api.use('/state', state);
api.use('/region', region);
api.use('/city', city);
api.use('/school', school);
api.use('/classroom', classroom);
api.use('/teacher', teacher);
api.use('/idhmr', idhmr);
api.use('/idhm', idhm);
api.use('/idhme', idhme);
api.use('/pibpercapita', pibpercapita);
api.use('/population', population);
api.use('/rate_school', rateSchool);
api.use('/gloss_enrollment_ratio', glossEnrollmentRatio);
api.use('/liquid_enrollment_ratio', liquidEnrollmentRatio);
api.use('/idhml', idhml);
api.use('/auth/token', oauth2.token);
api.use('/verify', verifyToken);
api.use('/reset', resetToken);
api.use('/education_years', educationYears);
api.use('/downloads', downloads);
api.use('/infrastructure', infrastructure);
api.use('/distribution_factor', distributionFactor);
api.use('/siope', siope);

module.exports = api;