UNPKG

ql-stats-models

Version:

Document schemas for Quake Live Statistics and Ranks

194 lines (188 loc) 2.9 kB
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)); } };