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');
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
module.exports = function (Topics) {
|
2015-09-25 17:38:58 -04:00
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
Topics.getTopicField = function (tid, field, callback) {
|
2015-09-25 17:38:58 -04:00
|
|
|
db.getObjectField('topic:' + tid, field, callback);
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
Topics.getTopicFields = function (tid, fields, callback) {
|
2015-09-25 17:38:58 -04:00
|
|
|
db.getObjectFields('topic:' + tid, fields, callback);
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
Topics.getTopicsFields = function (tids, fields, callback) {
|
2015-09-25 17:38:58 -04:00
|
|
|
if (!Array.isArray(tids) || !tids.length) {
|
|
|
|
|
return callback(null, []);
|
|
|
|
|
}
|
2016-10-13 11:43:39 +02:00
|
|
|
var keys = tids.map(function (tid) {
|
2015-09-25 17:38:58 -04:00
|
|
|
return 'topic:' + tid;
|
|
|
|
|
});
|
|
|
|
|
db.getObjectsFields(keys, fields, callback);
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
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
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
Topics.getTopicsData = function (tids, callback) {
|
2015-09-25 17:38:58 -04:00
|
|
|
var keys = [];
|
|
|
|
|
|
2017-02-18 01:12:18 -07:00
|
|
|
for (var i = 0; i < tids.length; i += 1) {
|
2015-09-25 17:38:58 -04:00
|
|
|
keys.push('topic:' + tids[i]);
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
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);
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
Topics.setTopicField = function (tid, field, value, callback) {
|
2015-09-25 17:38:58 -04:00
|
|
|
db.setObjectField('topic:' + tid, field, value, callback);
|
|
|
|
|
};
|
|
|
|
|
|
2016-07-13 17:38:21 -04:00
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
Topics.setTopicFields = function (tid, data, callback) {
|
|
|
|
|
callback = callback || function () {};
|
2016-07-13 17:38:21 -04:00
|
|
|
db.setObject('topic:' + tid, data, callback);
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
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
|
|
|
};
|