all files / src/topics/ data.js

82.61% Statements 38/46
57.14% Branches 8/14
85.71% Functions 12/14
82.61% Lines 38/46
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85          141×     47×     26×     26× 30×   26×                                   13×     13× 13× 13× 13×                       63×     11×      
'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) {
		Iif (!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) {
			Iif (err || !topic) {
				return callback(err);
			}
 
			modifyTopic(topic);
			callback(null, topic);
		});
	};
 
	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) {
			Iif (err) {
				return callback(err);
			}
 
			topics.forEach(modifyTopic);
			callback(null, topics);
		});
	};
 
	function modifyTopic(topic) {
		Iif (!topic) {
			return;
		}
		topic.titleRaw = topic.title;
		topic.title = validator.escape(String(topic.title));
		topic.timestampISO = utils.toISOString(topic.timestamp);
		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.deleteTopicField = function(tid, field, callback) {
		db.deleteObjectField('topic:' + tid, field, callback);
	};
 
};