@@ -4,9 +4,18 @@ const job = require('../../../../api/parts/jobs/job.js'),
4
4
tracker = require ( '../../../../api/parts/mgmt/tracker.js' ) ,
5
5
log = require ( '../../../../api/utils/log.js' ) ( 'job:stats' ) ,
6
6
config = require ( "../../../../frontend/express/config.js" ) ,
7
+ pluginManager = require ( '../../../pluginManager.js' ) ,
7
8
moment = require ( 'moment-timezone' ) ,
8
9
request = require ( 'countly-request' ) ;
9
10
11
+ const promisedLoadConfigs = function ( db ) {
12
+ return new Promise ( ( resolve ) => {
13
+ pluginManager . loadConfigs ( db , ( ) => {
14
+ resolve ( ) ;
15
+ } ) ;
16
+ } ) ;
17
+ } ;
18
+
10
19
/** Representing a StatsJob. Inherits api/parts/jobs/job.js (job.Job) */
11
20
class StatsJob extends job . Job {
12
21
/**
@@ -36,7 +45,7 @@ class StatsJob extends job.Job {
36
45
s : { $sum : "$s" }
37
46
}
38
47
}
39
- ] , { allowDiskUse : true } , function ( error , allData ) {
48
+ ] , { allowDiskUse : true } , async function ( error , allData ) {
40
49
if ( ! error ) {
41
50
var data = { } ;
42
51
data . all = 0 ;
@@ -56,21 +65,34 @@ class StatsJob extends job.Job {
56
65
data . avg = Math . round ( ( data . all / allData . length ) * 100 ) / 100 ;
57
66
var date = new Date ( ) ;
58
67
var usersData = [ ] ;
59
- members . forEach ( ( member ) => {
60
- usersData . push ( {
61
- device_id : member . email ,
62
- timestamp : Math . floor ( date . getTime ( ) / 1000 ) ,
63
- hour : date . getHours ( ) ,
64
- dow : date . getDay ( ) ,
65
- user_details : JSON . stringify ( {
66
- custom : {
67
- dataPointsAll : data . all ,
68
- dataPointsMonthlyAvg : data . avg ,
69
- dataPointsLast3Months : data . month3
70
- }
71
- } )
72
- } ) ;
68
+
69
+ await promisedLoadConfigs ( db ) ;
70
+
71
+ let domain = '' ;
72
+
73
+ try {
74
+ // try to extract hostname from full domain url
75
+ const urlObj = new URL ( pluginManager . getConfig ( 'api' ) . domain ) ;
76
+ domain = urlObj . hostname ;
77
+ }
78
+ catch ( _ ) {
79
+ // do nothing, domain from config will be used as is
80
+ }
81
+
82
+ usersData . push ( {
83
+ device_id : domain ,
84
+ timestamp : Math . floor ( date . getTime ( ) / 1000 ) ,
85
+ hour : date . getHours ( ) ,
86
+ dow : date . getDay ( ) ,
87
+ user_details : JSON . stringify ( {
88
+ custom : {
89
+ dataPointsAll : data . all ,
90
+ dataPointsMonthlyAvg : data . avg ,
91
+ dataPointsLast3Months : data . month3
92
+ }
93
+ } )
73
94
} ) ;
95
+
74
96
var formData = {
75
97
app_key : "e70ec21cbe19e799472dfaee0adb9223516d238f" ,
76
98
requests : JSON . stringify ( usersData )
0 commit comments