/** DB query */
const sql = require('../utils/sql');

/** Object used to render blog post previews */
const batchPreview = require('../posts/renderBatchOfPreviewes');

/**
 * Renders all posts in a single category
 *
 * @param resultURL
 * @returns {*}
 */
const renderPosts = function(resultURL, page)
{
    const splitURL = resultURL.split("/");
    if(splitURL.length >= 3)
    {
        return new Promise(function(resolve, reject)
        {
            sql.getPostsFromCategory(splitURL[2]).then(function(posts)
            {
                resolve(batchPreview.main(resultURL, posts, page, 5));
            }).catch(function(error)
            {
                reject(error);
            })
        });
    }
    else
    {
        reject("Page Not Found");
    }
};

module.exports=
    {
        /**
         * Calls posts and sidebar modules to render blog contents in order
         *
         * @param requestURL
         * @param request
         * @returns {Promise}
         */
        main: function(requestURL, request)
        {
            return new Promise(function(resolve, reject)
            {
                var page = request.query.page;
                Promise.all([renderPosts(requestURL, page),
                    require("../sidebar/sidebar.js").main()]).then(function(content)
                {
                    resolve(content.join(''));
                }).catch(function(err)
                {
                    reject(err);
                })
            });
        }
    };