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.
 
 

131 lines
2.8 KiB

/**
* File which deals with adding and removing downloads from
* the admin section of the website.
*
* @author Jeffery Russell 6-30-18
*/
const TEMPLATE_FILE = "admin/adminDownloads.html";
//file IO
const utils = require('../utils/utils.js');
const includes = require('../includes/includes.js');
//updates db
const sql = require('../utils/sql');
//parses post data
const qs = require('querystring');
/**
* Processes post requests from the addDownload form
*
* @param postData
* @returns {*|Promise}
*/
const addDownloadPostData = function(postData)
{
return new Promise(function(resolve, reject)
{
const post = qs.parse(postData);
if(post.add_download)
{
sql.addDownload(post.add_download_name, post.add_download_file)
.then(function()
{
resolve();
}).catch(function(error)
{
reject(error);
})
}
else
{
resolve();
}
});
};
/**
* Handel form requests from the downloads table
*
* @param postData
* @returns {*|Promise}
*/
const removeDownloads = function(postData)
{
return new Promise(function(resolve, reject)
{
const post = qs.parse(postData);
if(post.delete_download)
{
sql.removeDownload(post.delete_download).then(function()
{
resolve();
}).catch(function(err)
{
reject(err);
});
}
else
{
resolve();
}
});
};
/**
* Displays all the download information in a table
* @param postData
* @returns {*|Promise}
*/
const displayDownloads = function(postData, templateContext)
{
return new Promise(function(resolve, reject)
{
sql.getAllDownloads().then(function(downloads)
{
templateContext.downloads = downloads;
resolve();
}).catch(function(error)
{
reject(error);
});
});
};
module.exports=
{
/**
* Renders tha download section of the admin page
*
* @param postData
* @returns {Promise}
*/
main: function(postData, templateContext)
{
console.log(postData);
console.log("downloads page called");
return new Promise(function(resolve, reject)
{
Promise.all([includes.fetchTemplate(TEMPLATE_FILE),
addDownloadPostData(postData),
removeDownloads(postData),
displayDownloads(postData, templateContext)]).then(function(template)
{
resolve(template[0]);
}).catch(function(error)
{
console.log("error in add downloads.js");
reject(error);
});
});
}
};