|
7 | 7 | */ |
8 | 8 |
|
9 | 9 | //period to check |
10 | | -var startDate = new Date("2024-04-2T00:00:00"); |
11 | | -var endDate = new Date("2024-04-3T00:00:00"); |
| 10 | +var startDate = new Date("2021-04-02T00:00:00"); |
| 11 | +var endDate = new Date("2025-04-03T00:00:00"); |
12 | 12 | var apps = []; //Put in your APP ID like ["3469834986y34968y206y2"] |
13 | 13 |
|
14 | | -var internal_events = []; |
15 | | -var verbose = true; |
16 | | - |
17 | 14 | var Promise = require("bluebird"); |
18 | | -var crypto = require('crypto'); |
19 | 15 | var pluginManager = require("../../../plugins/pluginManager"); |
| 16 | +var results = {}; |
| 17 | +var dates = {}; |
20 | 18 |
|
21 | 19 | function output_data(dates, results) { |
22 | 20 | var datesList = Object.keys(dates).sort(function(a, b) { |
@@ -70,80 +68,48 @@ Promise.all([pluginManager.dbConnection("countly"), pluginManager.dbConnection(" |
70 | 68 | queryApps = {_id: {$in: apps}}; |
71 | 69 | } |
72 | 70 |
|
73 | | - countlyDb.collection("apps").find(queryApps).toArray(function(err, apps) { |
| 71 | + countlyDb.collection("apps").find(queryApps).toArray(function(err, apps2) { |
74 | 72 | if (err) { |
75 | 73 | console.log(err); |
76 | 74 | countlyDb.close(); |
77 | 75 | drillDb.close(); |
78 | 76 | } |
79 | 77 | else { |
80 | | - Promise.each(apps, function(app) { |
81 | | - console.log('------' + app.name + '------'); |
82 | | - return new Promise(function(resolve) { |
83 | | - var dates = {}; |
84 | | - var results = {}; |
85 | | - //fetch events list |
86 | | - countlyDb.collection("events").findOne({"_id": app._id}, {"list": 1}, function(err, events) { |
87 | | - events = events || []; |
88 | | - var list = events.list || []; |
89 | | - if (verbose) { |
90 | | - console.log(list.length + " events found"); |
91 | | - } |
92 | | - for (var z = 0; z < internal_events.length; z++) { |
93 | | - if (list.indexOf(internal_events[z]) === -1) { |
94 | | - list.push(internal_events[z]); |
95 | | - } |
| 78 | + var query = {"cd": {"$gte": startDate, "$lt": endDate}}; |
| 79 | + if (apps.length > 0) { |
| 80 | + |
| 81 | + var a = []; |
| 82 | + for (var i = 0; i < apps2.length; i++) { |
| 83 | + a.push(apps2[i]._id + ""); |
| 84 | + } |
| 85 | + query.a = {$in: a}; |
| 86 | + } |
| 87 | + var pipeline = [{"$match": query}, {"$group": {"_id": {"a": "$a", "e": "$e", "d": "$d"}, "c": {"$sum": 1}}}]; |
| 88 | + drillDb.collection("drill_events").aggregate(pipeline, {"allowDiskUse": true}).toArray(function(err, data) { |
| 89 | + if (err) { |
| 90 | + console.log(err); |
| 91 | + } |
| 92 | + if (data && data.length > 0) { |
| 93 | + results["_total"] = results["_total"] || {}; |
| 94 | + |
| 95 | + for (var z = 0; z < data.length; z++) { |
| 96 | + var event = data[z]._id.e; |
| 97 | + if (!dates[data[z]._id.d]) { |
| 98 | + dates[data[z]._id.d] = true; |
96 | 99 | } |
97 | | - Promise.each(list, function(event) { |
98 | | - return new Promise(function(resolve2) { |
99 | | - //get hashed drill collection name |
100 | | - let collection = "drill_events" + crypto.createHash('sha1').update(event + app._id).digest('hex'); |
101 | | - if (verbose) { |
102 | | - console.log(collection); |
103 | | - } |
104 | | - var pipeline = [ |
105 | | - {"$match": {"cd": {"$gte": startDate, "$lt": endDate}}}, |
106 | | - {"$group": {"_id": "$d", "c": {"$sum": 1}}} |
107 | | - ]; |
108 | | - drillDb.collection(collection).aggregate(pipeline, {"allowDiskUse": true}).toArray(function(err, data) { |
109 | | - if (err) { |
110 | | - console.log(err); |
111 | | - } |
112 | | - if (data.length > 0) { |
113 | | - results["_total"] = results["_total"] || {}; |
114 | | - results[event] = {}; |
115 | | - for (var z = 0; z < data.length; z++) { |
116 | | - if (!dates[data[z]._id]) { |
117 | | - dates[data[z]._id] = true; |
118 | | - } |
119 | | - results[event][data[z]._id] = data[z].c; |
120 | | - results["_total"][data[z]._id] = results["_total"][data[z]._id] || 0; |
121 | | - results["_total"][data[z]._id] += data[z].c || 0; |
122 | | - } |
123 | | - } |
124 | | - resolve2(); |
125 | | - }); |
126 | | - }); |
127 | | - }).then(function() { |
128 | | - //output |
129 | | - //sort dates |
130 | | - output_data(dates, results); |
131 | | - resolve(); |
132 | | - }).catch(function(err) { |
133 | | - output_data(dates, results); |
134 | | - console.log(err); |
135 | | - resolve(); |
136 | | - }); |
137 | | - }); |
138 | | - }); |
139 | | - }).then(function() { |
140 | | - countlyDb.close(); |
141 | | - drillDb.close(); |
142 | | - }).catch(function(err) { |
143 | | - console.log(err); |
| 100 | + results[data[z]._id.e] = {}; |
| 101 | + results[event][data[z]._id.d] = data[z].c; |
| 102 | + results["_total"][data[z]._id.d] = results["_total"][data[z]._id.d] || 0; |
| 103 | + results["_total"][data[z]._id.d] += data[z].c || 0; |
| 104 | + } |
| 105 | + output_data(dates, results); |
| 106 | + } |
| 107 | + |
144 | 108 | countlyDb.close(); |
145 | 109 | drillDb.close(); |
146 | 110 | }); |
| 111 | + |
| 112 | + |
147 | 113 | } |
148 | 114 | }); |
149 | 115 | }); |
0 commit comments