ql-stats-models
Version:
Document schemas for Quake Live Statistics and Ranks
78 lines (70 loc) • 2.27 kB
JavaScript
var Promise = require('bluebird'),
mongoose = require('mongoose'),
storage = require('../../index'),
config = require('./config.json');
var helper = (function () {
var _db,
log = {info: function() {}}//console;
function connect () {
return new Promise(function (resolve, reject) {
_db = mongoose.createConnection(config.mongodb, function () {
log.info('Connected to:', config.mongodb);
resolve(_db);
});
});
}
function register(db) {
return new Promise(function (resolve, reject) {
storage.register(db).then(resolve);
log.info('Registered models:', Object.keys(_db.models).join(' '));
})
}
function close () {
var clearCollectionPromises = [];
log.info('Clearing collections:', Object.keys(_db.models).join(' '));
Object.keys(_db.models).forEach(function (key) {
clearCollectionPromises.push(new Promise(function (res, rej) {
_db.models[key].remove(res)
}));
});
return Promise.all(clearCollectionPromises)
.then(function () {
_db.models = {};
_db.modelSchemas = {};
_db.close();
log.info('Connection closed.');
});
}
return {
before: function () {
return new Promise(function(resolve, reject) {
connect().then(register).then(resolve);
});
},
after: function (done) {
close().then(done);
},
toLog: function(result){
log.info(result);
return Promise(function() {
return result;
})
},
events: {
matchReport: require('../fixtures/MATCH_REPORT.json'),
matchReportNotExisting: require('../fixtures/MATCH_REPORT-NOT_EXISTING.json'),
matchStarted:require('../fixtures/MATCH_STARTED.json'),
playerConnect: require('../fixtures/PLAYER_CONNECT.json'),
playerDeath: require('../fixtures/PLAYER_DEATH.json'),
playerDisconnect: require('../fixtures/PLAYER_DISCONNECT.json'),
playerKill: require('../fixtures/PLAYER_KILL.json'),
playerMedal: require('../fixtures/PLAYER_MEDAL.json'),
playerStats: require('../fixtures/PLAYER_STATS.json'),
playerStats2: require('../fixtures/PLAYER_STATS_2.json'),
playerStatsWarmup: require('../fixtures/PLAYER_STATS_WARMUP.json'),
playerSwithTeam: require('../fixtures/PLAYER_SWITCHTEAM.json'),
roundOver: require('../fixtures/ROUND_OVER.json')
}
};
})();
module.exports = helper;