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) {
2015-09-25 17:38:58 -04:00
Topics.getTopicField = function (tid, field, callback) {
2015-09-25 17:38:58 -04:00
db.getObjectField('topic:' + tid, field, callback);
};
Topics.getTopicFields = function (tid, fields, callback) {
2015-09-25 17:38:58 -04:00
db.getObjectFields('topic:' + tid, fields, callback);
};
Topics.getTopicsFields = function (tids, fields, callback) {
2015-09-25 17:38:58 -04:00
if (!Array.isArray(tids) || !tids.length) {
return callback(null, []);
}
var keys = tids.map(function (tid) {
2015-09-25 17:38:58 -04:00
return 'topic:' + tid;
});
db.getObjectsFields(keys, fields, callback);
};
Topics.getTopicData = function (tid, callback) {
db.getObject('topic:' + tid, function (err, topic) {
2015-09-25 17:38:58 -04:00
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) {
2015-09-25 17:38:58 -04:00
var keys = [];
for (var i = 0; i < tids.length; i += 1) {
2015-09-25 17:38:58 -04:00
keys.push('topic:' + tids[i]);
}
db.getObjects(keys, function (err, topics) {
2015-09-25 17:38:58 -04:00
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) {
2015-09-25 17:38:58 -04:00
if (err) {
return callback(err);
}
categories.getCategoryData(cid, callback);
});
};
Topics.setTopicField = function (tid, field, value, callback) {
2015-09-25 17:38:58 -04:00
db.setObjectField('topic:' + tid, field, value, callback);
};
Topics.setTopicFields = function (tid, data, callback) {
callback = callback || function () {};
db.setObject('topic:' + tid, data, callback);
};
Topics.deleteTopicField = function (tid, field, callback) {
2016-03-01 17:53:16 -05:00
db.deleteObjectField('topic:' + tid, field, callback);
};
2015-09-25 17:38:58 -04:00
};