aboutsummaryrefslogtreecommitdiffstats
path: root/server/managers/stats.js
blob: 20f1ae3dadb23834479cbe91ea7436fda28d180b (plain)
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
/**
  * Simple generic stats collection script for events occurances (etc)
  *
  * Version: v2.0.0
  * Developer: Marzavec ( https://github.com/marzavec )
  * License: WTFPL ( http://www.wtfpl.net/txt/copying/ )
  *
  */

class Stats {
  /**
    * Create a stats instance.
    *
    */
  constructor () {
    this._stats = {};
  }

  /**
    * Retrieve value of arbitrary `key` reference
    *
    * @param {String} key Reference to the arbitrary store name
    */
  get (key) {
    return this._stats[key];
  }

  /**
    * Set value of arbitrary `key` reference
    *
    * @param {String} key Reference to the arbitrary store name
    * @param {Number} value New value for `key`
    */
  set (key, value) {
    this._stats[key] = value;
  }

  /**
    * Increase value of arbitrary `key` reference, by 1 or `amount`
    *
    * @param {String} key Reference to the arbitrary store name
    * @param {Number} amount Value to increase `key` by, or 1 if omitted
    */
  increment (key, amount) {
    this.set(key, (this.get(key) || 0) + (amount || 1));
  }

  /**
    * Reduce value of arbitrary `key` reference, by 1 or `amount`
    *
    * @param {String} key Reference to the arbitrary store name
    * @param {Number} amount Value to decrease `key` by, or 1 if omitted
    */
  decrement (key, amount) {
    this.set(key, (this.get(key) || 0) - (amount || 1));
  }
}

module.exports = Stats;