Personal blog written from scratch using Node.js, Bootstrap, and MySQL. https://jrtechs.net
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

68 lines
1.7 KiB

/** DB queries */
const sql = require('../utils/sql');
/**
* Function responsible for calling the appropriate sql requests to query
* database and serve correct blog post
*
* @param requestURL url requested from client
* @return {*|Promise} returns a resolved promise to preserve execution order
*/
const renderPost = function(requestURL)
{
return new Promise(function(resolve, reject)
{
const splitURL = requestURL.split("/");
//user entered /category/name/ or /category/name
if(splitURL.length == 3 || splitURL.length == 4)
{
sql.getPost(requestURL).then(function(post)
{
if(post != 0)
{
return require("../posts/singlePost.js").renderPost(post);
}
else
{
reject("Page Not Found");
}
}).then(function(html)
{
resolve("<div class='col-md-8'>" + html + "</div>");
}).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
* @returns {Promise|*}
*/
main: function(requestURL, request)
{
return new Promise(function(resolve, reject)
{
Promise.all([renderPost(requestURL),
require("../sidebar/sidebar.js").main()]).then(function(content)
{
resolve(content.join(''));
}).catch(function(error)
{
reject(error);
})
});
}
};