From a8acd7f4e1c324a55e0875fda88dee0ccbea080d Mon Sep 17 00:00:00 2001
From: MrFry <mrfry@airmail.cc>
Date: Sat, 2 Nov 2019 13:59:49 +0100
Subject: [PATCH] ID stats fixes

---
 utils/actions.js |  2 +-
 utils/ids.js     | 38 ++++++++++++++++++++++++++++----------
 2 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/utils/actions.js b/utils/actions.js
index 44ba9b3..321de76 100644
--- a/utils/actions.js
+++ b/utils/actions.js
@@ -92,7 +92,7 @@ function ProcessIncomingRequest (data) {
     let subjRow = '\t' + d.subj
     if (d.id) {
       subjRow += ' ( CID: ' + logger.logHashed(d.id) + ')'
-      idStats.LogId(d.id)
+      idStats.LogId(d.id, d.subj)
     }
     logger.Log(subjRow)
     if (d.version !== undefined) { msg += '. Version: ' + d.version }
diff --git a/utils/ids.js b/utils/ids.js
index 7dcb506..44b0bf7 100644
--- a/utils/ids.js
+++ b/utils/ids.js
@@ -28,7 +28,7 @@ const logger = require('../utils/logger.js')
 const idStatFile = 'stats/idstats'
 const idVStatFile = 'stats/idvstats'
 
-const writeInterval = 10
+const writeInterval = 1
 
 let data = {}
 let vData = {}
@@ -52,23 +52,41 @@ function Load () {
   }
 }
 
-function LogId (id) {
-  Inc(id)
-  AddVisitStat(id)
+function LogId (id, subj) {
+  Inc(id, subj)
+  AddVisitStat(id, subj)
   Save()
 }
 
-function Inc (value) {
-  if (data[value] === undefined) { data[value] = 0 }
-  data[value]++
+function AddSubjToList (list, subj) {
+  if (list.indexOf(subj) === -1) {
+    list.push(subj)
+  }
 }
 
-function AddVisitStat (name) {
+function Inc (value, subj) {
+  if (data[value] === undefined) {
+    data[value] = {
+      count: 0,
+      subjs: []
+    }
+  }
+  data[value].count++
+  AddSubjToList(data[value].subjs, subj)
+}
+
+function AddVisitStat (name, subj) {
   var m = new Date()
   const now = m.getFullYear() + '/' + ('0' + (m.getMonth() + 1)).slice(-2) + '/' + ('0' + m.getDate()).slice(-2)
   if (vData[now] === undefined) { vData[now] = {} }
-  if (vData[now][name] === undefined) { vData[now][name] = 0 }
-  vData[now][name]++
+  if (vData[now][name] === undefined) {
+    vData[now][name] = {
+      count: 0,
+      subjs: []
+    }
+  }
+  vData[now][name].count++
+  AddSubjToList(vData[now][name].subjs, subj)
 }
 
 function Save () {