const express = require('express');

const api = express();

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

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

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

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

const cache = require('apicache').options({ debug: config.debug, statusCodes: {include: [200]} }).middleware;

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

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

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

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

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

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

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

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

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

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

const workerpool = require('workerpool');

const pool = workerpool.pool();

function add(a, b) {
    return a+b;
}

api.get('/add', (req, res) => {
    pool.exec(add, [3,4])
        .then((result) => {
            log.debug('result');
            log.debug(result);
            pool.clear();
        });
    res.json({msg: 'Está sendo feito'});
});

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', cache('15 day'), classes);
api.use('/enrollment', cache('1 day'), enrollment);
api.use('/state', cache('15 day'), state);
api.use('/region', cache('15 day'), region);
api.use('/city', cache('15 day'), city);
api.use('/school', cache('15 day'), school);
api.use('/spatial', cache('1 day'), spatial);
api.use('/classroom', cache('15 day'), classroom);
api.use('/teacher', cache('1 day'), teacher);

module.exports = api;