ql-stats-models
Version:
Document schemas for Quake Live Statistics and Ranks
194 lines (188 loc) • 2.9 kB
JavaScript
var keys = ['games',
'play_time',
'win',
'lose',
'quit',
'kills',
'deaths',
'damage_dealt',
'damage_taken',
'accuracy',
'assists',
'captures',
'combokill',
'defends',
'excellent',
'firstfrag',
'headshot',
'humiliation',
'impressive',
'midair',
'perfect',
'perforated',
'quadgod',
'rampage',
'revenge',
'ammo',
'armor',
'armor_regen',
'battlesuit',
'doubler',
'flight',
'green_armor',
'guard',
'haste',
'health',
'invis',
'invulnerability',
'kamikaze',
'medkit',
'mega_health',
'other_holdable',
'other_powerup',
'portal',
'quad',
'red_armor',
'regen',
'scout',
'teleporter',
'yellow_armor',
'gauntlet_d',
'gauntlet_dg',
'gauntlet_dr',
'gauntlet_h',
'gauntlet_k',
'gauntlet_p',
'gauntlet_s',
'gauntlet_t',
'rocket_p',
'rocket_k',
'rocket_d',
'rocket_s',
'rocket_h',
'rocket_t',
'rocket_dg',
'rocket_dr',
'lightning_p',
'lightning_k',
'lightning_d',
'lightning_s',
'lightning_h',
'lightning_t',
'lightning_dg',
'lightning_dr',
'railgun_p',
'railgun_k',
'railgun_d',
'railgun_s',
'railgun_h',
'railgun_t',
'railgun_dg',
'railgun_dr',
'plasma_p',
'plasma_k',
'plasma_d',
'plasma_s',
'plasma_h',
'plasma_t',
'plasma_dg',
'plasma_dr',
'grenade_p',
'grenade_k',
'grenade_d',
'grenade_s',
'grenade_h',
'grenade_t',
'grenade_dg',
'grenade_dr',
'bfg_p',
'bfg_k',
'bfg_d',
'bfg_s',
'bfg_h',
'bfg_t',
'bfg_dg',
'bfg_dr',
'hmg_p',
'hmg_k',
'hmg_d',
'hmg_s',
'hmg_h',
'hmg_t',
'hmg_dg',
'hmg_dr',
'chaingun_p',
'chaingun_k',
'chaingun_d',
'chaingun_s',
'chaingun_h',
'chaingun_t',
'chaingun_dg',
'chaingun_dr',
'nailgun_p',
'nailgun_k',
'nailgun_d',
'nailgun_s',
'nailgun_h',
'nailgun_t',
'nailgun_dg',
'nailgun_dr',
'proximitymine_p',
'proximitymine_k',
'proximitymine_d',
'proximitymine_s',
'proximitymine_h',
'proximitymine_t',
'proximitymine_dg',
'proximitymine_dr',
'shotgun_p',
'shotgun_k',
'shotgun_d',
'shotgun_s',
'shotgun_h',
'shotgun_t',
'shotgun_dg',
'shotgun_dr',
'other_p',
'other_k',
'other_d',
'other_s',
'other_h',
'other_t',
'other_dg',
'other_dr'];
var get = function () {
return keys;
},
makeKeyList = function (prefix) {
return get().map(function (item) {
return prefix || '' + item;
});
},
makeObjectWith = function (keys) {
var obj = {};
keys.forEach(function (key) {
obj[key] = 0;
});
return obj;
},
mapValues = function (obj, values) {
Object.keys(values).forEach(function (key) {
if (obj[key] !== null) {
obj[key] = values[key];
}
});
return obj;
},
addPrefix = function (prefix, obj) {
Object.keys(obj).forEach(function (key) {
obj[prefix + key] = obj[key];
delete obj[key];
});
return obj;
};
module.exports = {
buildIncrementQuery: function (gametype, stats) {
return addPrefix('game_stats.' + gametype + '.', mapValues(makeObjectWith(makeKeyList()), stats));
}
};