wp-node
Version:
Caches WordPress in mongo using WordPress Jetpack JSON API
75 lines (51 loc) • 1.73 kB
JavaScript
;
module.exports = function(core) {
var wordpressCache = {};
var processCategories = function(categories, res){
categories = (typeof categories !== 'string') ? categories.map(function(category){
return category.toLowerCase();
}) : [categories.toLowerCase()];
core.db.collection('cache' , function(err, collection){
collection.update(
{ 'content.wn_name' : { $in : categories } },
{ $set : { invalid : true } },
{ multi : true },
function(err, result) {
if (err){
console.error(err);
}
core.log('Removed ' + result + ' entries. In cat');
res.send();
});
});
res.send();
};
wordpressCache.clearCache = function(req, res, next) {
var secret = req.body.secret;
if (!secret) {
console.warn('No secret provided.')
return next('Missing secret');
}
if (secret !== core.secret) {
console.error('Invalid key.');
return next('Wrong Key');
}
if (req.body.type && req.body.type === 'categories')
return processCategories(req.body.categories, res);
var post_id = parseInt(req.body.post_id);
core.log('Removing cache for post_id ' + post_id + '. WordPress Request');
core.db.collection('cache' , function(err, collection){
const query = !core.flush_all
? { 'content.id': post_id }
: {}
collection.update(query,{ $set : { invalid : true } }, {multi : true}, function(err, result) {
if (err) {
core.log(err);
}
core.log('Removed ' + result + ' entries.');
res.send();
});
})
}
return wordpressCache;
}