Source: routes/datajunk/datajunk.js documentation

/**
 * @file DataJunk router controllers
 * @author based on whatever its take to suceed boilerplate by Trevis Gulby
 */

/**  ### {@link datajunk} page router overload definitions
 * @namespace datajunk
 * @memberof Routes.page
 */
/** The Express module import
 * @memberof Routes.page.datajunk
 * @property {Object} express the express object
 */
const express = require('express');

/** The Express router module import
 * @memberof Routes.page.signin
 * @property {Object} router the express.Router object
 */
const router = new express.Router();

/** @memberof Routes.page.signin */
const param = require('../../params/def_params');
/** User mongoose model import for authentication
 * @memberof Routes.page.signin
 */
const User = require('../../schemas/user');
/** Scrapper mongoose model import
 * @memberof Routes.page.datajunk
 */
const Scrapper = require('../../schemas/scrapper');

/** GET signin page
 * @memberof Routes.page.signin
 */
router.get('/', function (req, res, next) {
    let chck = req.session;

    if (chck && chck.userId) {
        User.findById(chck.userId).exec(function (error, user) {
            if (error || !user) {
                console.log('errr ..' + error);
                return res.redirect('/');
            } else if (user.scrapperid !== 'notset') {
                Scrapper.findById(user.scrapperid)
                    .exec((error, scrapper) => {
                        if (error) {
                            console.log(error);
                            return res.redirect('/datajunk');
                        }
                        param.logco('DATAJUNK', chck);
                        res.locals.data = user.toJSON();
                        res.locals.scrapper = scrapper.toJSON();
                        return res.render('page', param.datajunk);
                    });
            } else {
                param.logco('DATAJUNK', chck);
                param.datajunk.blocks.centerblock =
                    'blocks/datajunk/scrapper_block';
                res.locals.data = user.toJSON();
                return res.render('page', param.datajunk);
            }
        });
    } else {
        param.lognoco('DATAJUNK', chck);
        res.redirect('/login');
    }
});

/**
 * @param {string} path
 * @param {function} callback
 * @memberof Routes.page.datajunk
 */
router.post('/newscrapper', function (req, res, next) {
    let chck = req.session;
    if (!req.body.name || !req.body.name.length ||
        !(chck && chck.userId)) {
        let err = new Error('All fields required.');
        err.status = 400;
        console.log('err...' + err);
        return res.redirect('/datajunk');
    } else {
        User.findById(chck.userId).exec((error, user) => {
            if (user) {
                Scrapper.create({name: req.body.name}, (error, scrapper) => {
                    let apisid = {};
                    apisid['scrapperid'] = scrapper._id;
                    User.findOneAndUpdate({_id: chck.userId}, apisid,
                        (error, success) => {
                            if (error) {
                                res.redirect('/datajunk');
                            }
                            return res.redirect('/datajunk');
                        });
                });
            }
        });
    }
});
/**
 * @param {string} path
 * @param {function} callback
 * @memberof Routes.page.datajunk
 */
router.post('/scrapper/newsource', function (req, res, next) {
    param.logco('post scrapper newsource', req.session.userId);
    if (!req.body.name || !req.body.name.length ||
        !req.body.sourcegenre || !req.body.sourcetype ||
        !req.body.sourcename || !req.body.sourcereqpath ||
        !(req.session && req.session.userId)) {
        let err = new Error('All fields required.');
        err.status = 400;
        console.log(err);
        return res.redirect('/datajunk');
    } else {
        User.findById(req.session.userId).exec((error, user) => {
            if (user) {
                let newsource = {
                    scrapperid: user.scrapperid,
                    sourcegenre: req.body.sourcegenre,
                    sourcetype: req.body.sourcetype,
                    sourcename: req.body.sourcename,
                    sourceurl: req.body.sourceurl,
                    sourcereqhost: req.body.sourcereqhost,
                    sourcereqpath: req.body.sourcereqpath,
                    sourceregex: req.body.sourceregex,
                };
                Scrapper.addsource(newsource, (error, scrapper) => {
                    console.log(scrapper);
                    return res.redirect('/datajunk');
                });
            }
        });
    }
});

module.exports = router;