Files
NodeBB/src/topics/data.js

91 lines
2.1 KiB
JavaScript
Raw Normal View History

2015-09-25 17:38:58 -04:00
'use strict';
var validator = require('validator');
var db = require('../database');
var categories = require('../categories');
var utils = require('../../public/src/utils');
module.exports = function(Topics) {
Topics.getTopicField = function(tid, field, callback) {
db.getObjectField('topic:' + tid, field, callback);
};
Topics.getTopicFields = function(tid, fields, callback) {
db.getObjectFields('topic:' + tid, fields, callback);
};
Topics.getTopicsFields = function(tids, fields, callback) {
if (!Array.isArray(tids) || !tids.length) {
return callback(null, []);
}
var keys = tids.map(function(tid) {
return 'topic:' + tid;
});
db.getObjectsFields(keys, fields, callback);
};
Topics.getTopicData = function(tid, callback) {
db.getObject('topic:' + tid, function(err, topic) {
if (err || !topic) {
return callback(err);
}
2015-10-06 15:16:50 -04:00
modifyTopic(topic);
callback(null, topic);
2015-09-25 17:38:58 -04:00
});
};
Topics.getTopicsData = function(tids, callback) {
var keys = [];
for (var i=0; i<tids.length; ++i) {
keys.push('topic:' + tids[i]);
}
db.getObjects(keys, function(err, topics) {
if (err) {
return callback(err);
}
2015-10-06 15:16:50 -04:00
topics.forEach(modifyTopic);
callback(null, topics);
2015-09-25 17:38:58 -04:00
});
};
2015-10-06 15:16:50 -04:00
function modifyTopic(topic) {
2015-09-25 17:38:58 -04:00
if (!topic) {
2015-10-06 15:16:50 -04:00
return;
2015-09-25 17:38:58 -04:00
}
2016-02-18 20:26:09 +02:00
topic.titleRaw = topic.title;
2016-03-21 18:41:33 +02:00
topic.title = validator.escape(String(topic.title));
2016-03-03 20:13:30 +02:00
topic.timestampISO = utils.toISOString(topic.timestamp);
2015-09-25 17:38:58 -04:00
topic.lastposttimeISO = utils.toISOString(topic.lastposttime);
}
Topics.getCategoryData = function(tid, callback) {
Topics.getTopicField(tid, 'cid', function(err, cid) {
if (err) {
return callback(err);
}
categories.getCategoryData(cid, callback);
});
};
Topics.setTopicField = function(tid, field, value, callback) {
db.setObjectField('topic:' + tid, field, value, callback);
};
Topics.setTopicFields = function(tid, data, callback) {
callback = callback || function() {};
db.setObject('topic:' + tid, data, callback);
};
2016-03-01 17:53:16 -05:00
Topics.deleteTopicField = function(tid, field, callback) {
db.deleteObjectField('topic:' + tid, field, callback);
};
2015-09-25 17:38:58 -04:00
};