@powersync/service-module-mongodb-storage 0.0.0-dev-20250724064948 → 0.0.0-dev-20250724093011
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -5
- package/dist/migrations/db/migrations/1752661449910-sdk-reporting.js +5 -4
- package/dist/migrations/db/migrations/1752661449910-sdk-reporting.js.map +1 -1
- package/dist/storage/MongoReportStorage.d.ts +1 -1
- package/dist/storage/MongoReportStorage.js +22 -7
- package/dist/storage/MongoReportStorage.js.map +1 -1
- package/package.json +6 -6
- package/src/migrations/db/migrations/1752661449910-sdk-reporting.ts +8 -4
- package/src/storage/MongoReportStorage.ts +26 -11
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @powersync/service-module-mongodb-storage
|
|
2
2
|
|
|
3
|
-
## 0.0.0-dev-
|
|
3
|
+
## 0.0.0-dev-20250724093011
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
- Updated dependencies [4ebc3bf]
|
|
11
11
|
- Updated dependencies [1aafdaf]
|
|
12
12
|
- Updated dependencies [a700ec9]
|
|
13
|
-
- @powersync/service-core@0.0.0-dev-
|
|
14
|
-
- @powersync/service-types@0.0.0-dev-
|
|
15
|
-
- @powersync/lib-services-framework@0.0.0-dev-
|
|
16
|
-
- @powersync/lib-service-mongodb@0.0.0-dev-
|
|
13
|
+
- @powersync/service-core@0.0.0-dev-20250724093011
|
|
14
|
+
- @powersync/service-types@0.0.0-dev-20250724093011
|
|
15
|
+
- @powersync/lib-services-framework@0.0.0-dev-20250724093011
|
|
16
|
+
- @powersync/lib-service-mongodb@0.0.0-dev-20250724093011
|
|
17
17
|
|
|
18
18
|
## 0.10.4
|
|
19
19
|
|
|
@@ -8,15 +8,16 @@ export const up = async (context) => {
|
|
|
8
8
|
connect_at: 1,
|
|
9
9
|
jwt_exp: 1,
|
|
10
10
|
disconnect_at: 1
|
|
11
|
-
}, { name: '
|
|
11
|
+
}, { name: 'list_index' });
|
|
12
12
|
await db.sdk_report_events.createIndex({
|
|
13
|
-
user_id: 1
|
|
14
|
-
sdk: 1,
|
|
15
|
-
version: 1
|
|
13
|
+
user_id: 1
|
|
16
14
|
}, { name: 'user_id' });
|
|
17
15
|
await db.sdk_report_events.createIndex({
|
|
18
16
|
client_id: 1
|
|
19
17
|
}, { name: 'client_id' });
|
|
18
|
+
await db.sdk_report_events.createIndex({
|
|
19
|
+
sdk: 1
|
|
20
|
+
}, { name: 'sdk' });
|
|
20
21
|
}
|
|
21
22
|
finally {
|
|
22
23
|
await db.client.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1752661449910-sdk-reporting.js","sourceRoot":"","sources":["../../../../src/migrations/db/migrations/1752661449910-sdk-reporting.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,mCAAmC,CAAC;AAG7D,MAAM,CAAC,MAAM,EAAE,GAA0C,KAAK,EAAE,OAAO,EAAE,EAAE;IACzE,MAAM,EACJ,eAAe,EAAE,EAAE,aAAa,EAAE,EACnC,GAAG,OAAO,CAAC;IACZ,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAA6B,CAAC,CAAC;IAErF,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,4BAA4B,EAAE,CAAC;QAExC,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,CACpC;YACE,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;YACV,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,IAAI,EAAE,YAAY,EAAE,CACvB,CAAC;QAEF,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,CACpC;YACE,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"1752661449910-sdk-reporting.js","sourceRoot":"","sources":["../../../../src/migrations/db/migrations/1752661449910-sdk-reporting.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,mCAAmC,CAAC;AAG7D,MAAM,CAAC,MAAM,EAAE,GAA0C,KAAK,EAAE,OAAO,EAAE,EAAE;IACzE,MAAM,EACJ,eAAe,EAAE,EAAE,aAAa,EAAE,EACnC,GAAG,OAAO,CAAC;IACZ,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAA6B,CAAC,CAAC;IAErF,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,4BAA4B,EAAE,CAAC;QAExC,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,CACpC;YACE,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;YACV,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,IAAI,EAAE,YAAY,EAAE,CACvB,CAAC;QAEF,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,CACpC;YACE,OAAO,EAAE,CAAC;SACX,EACD,EAAE,IAAI,EAAE,SAAS,EAAE,CACpB,CAAC;QACF,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,CACpC;YACE,SAAS,EAAE,CAAC;SACb,EACD,EAAE,IAAI,EAAE,WAAW,EAAE,CACtB,CAAC;QACF,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,CACpC;YACE,GAAG,EAAE,CAAC;SACP,EACD,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAA0C,KAAK,EAAE,OAAO,EAAE,EAAE;IAC3E,MAAM,EACJ,eAAe,EAAE,EAAE,aAAa,EAAE,EACnC,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAA6B,CAAC,CAAC;IAErF,IAAI,CAAC;QACH,IAAI,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;YACzD,MAAM,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,MAAM,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,MAAM,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/D,MAAM,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAClD,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -8,7 +8,7 @@ export declare class MongoReportStorage implements storage.ReportStorageFactory
|
|
|
8
8
|
private sdkFacetPipeline;
|
|
9
9
|
private sdkProjectPipeline;
|
|
10
10
|
private updateDocFilter;
|
|
11
|
-
private
|
|
11
|
+
private listConnectionsDateRange;
|
|
12
12
|
private timeFrameQuery;
|
|
13
13
|
private timeFrameDeleteQuery;
|
|
14
14
|
deleteOldSdkData(data: event_types.DeleteOldSdkData): Promise<void>;
|
|
@@ -75,7 +75,7 @@ export class MongoReportStorage {
|
|
|
75
75
|
}
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
listConnectionsDateRange(data) {
|
|
79
79
|
const { range } = data;
|
|
80
80
|
if (!range) {
|
|
81
81
|
return undefined;
|
|
@@ -86,10 +86,8 @@ export class MongoReportStorage {
|
|
|
86
86
|
throw new Error('Invalid start date for `day` period. Max period is withing 2 days');
|
|
87
87
|
}
|
|
88
88
|
return {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
$gt: parsedDate
|
|
92
|
-
}
|
|
89
|
+
$lte: date,
|
|
90
|
+
$gt: parsedDate
|
|
93
91
|
};
|
|
94
92
|
}
|
|
95
93
|
timeFrameQuery(timeframe, interval = 1) {
|
|
@@ -153,7 +151,6 @@ export class MongoReportStorage {
|
|
|
153
151
|
async deleteOldSdkData(data) {
|
|
154
152
|
const { interval, timeframe } = data;
|
|
155
153
|
const timeframeFilter = this.timeFrameDeleteQuery(timeframe, interval);
|
|
156
|
-
console.log(timeframeFilter);
|
|
157
154
|
const result = await this.db.sdk_report_events.deleteMany({
|
|
158
155
|
connect_at: timeframeFilter,
|
|
159
156
|
$or: [{ disconnect_at: { $exists: true } }, { jwt_exp: { $lt: new Date() }, disconnect_at: { $exists: false } }]
|
|
@@ -201,13 +198,31 @@ export class MongoReportStorage {
|
|
|
201
198
|
});
|
|
202
199
|
}
|
|
203
200
|
async listCurrentConnections(data) {
|
|
201
|
+
const timeframeFilter = this.listConnectionsDateRange(data);
|
|
202
|
+
const explain = await this.db.sdk_report_events
|
|
203
|
+
.aggregate([
|
|
204
|
+
{
|
|
205
|
+
$match: {
|
|
206
|
+
disconnect_at: { $exists: false },
|
|
207
|
+
jwt_exp: { $gt: new Date() },
|
|
208
|
+
connect_at: timeframeFilter
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
this.sdkFacetPipeline(),
|
|
212
|
+
this.sdkProjectPipeline()
|
|
213
|
+
])
|
|
214
|
+
.explain();
|
|
215
|
+
explain.stages.map((stage) => {
|
|
216
|
+
const key = Object.keys(stage)[0];
|
|
217
|
+
console.log(JSON.stringify(stage[key], null, 2));
|
|
218
|
+
});
|
|
204
219
|
const result = await this.db.sdk_report_events
|
|
205
220
|
.aggregate([
|
|
206
221
|
{
|
|
207
222
|
$match: {
|
|
208
223
|
disconnect_at: { $exists: false },
|
|
209
224
|
jwt_exp: { $gt: new Date() },
|
|
210
|
-
|
|
225
|
+
connect_at: timeframeFilter
|
|
211
226
|
}
|
|
212
227
|
},
|
|
213
228
|
this.sdkFacetPipeline(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoReportStorage.js","sourceRoot":"","sources":["../../src/storage/MongoReportStorage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,SAAS,SAAS,CAAC,IAAU;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1B,OAAO;QACL,IAAI;QACJ,KAAK;QACL,KAAK;QACL,GAAG;QACH,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,kBAAkB;IACZ,MAAM,CAAoB;IAC3B,EAAE,CAAiB;IAEnC,YAAY,EAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAEO,gBAAgB;QACtB,OAAO;YACL,MAAM,EAAE;gBACN,YAAY,EAAE;oBACZ;wBACE,MAAM,EAAE;4BACN,GAAG,EAAE,UAAU;yBAChB;qBACF;oBACD;wBACE,MAAM,EAAE,OAAO;qBAChB;iBACF;gBACD,kBAAkB,EAAE;oBAClB;wBACE,MAAM,EAAE;4BACN,GAAG,EAAE,MAAM;4BACX,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;4BAClB,UAAU,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;4BACvC,QAAQ,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;yBACpC;qBACF;oBACD;wBACE,QAAQ,EAAE;4BACR,GAAG,EAAE,CAAC;4BACN,GAAG,EAAE,MAAM;4BACX,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;4BAC7B,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;yBAClC;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACxB,OAAO;YACL,QAAQ,EAAE;gBACR,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACrE,IAAI,EAAE,qBAAqB;aAC5B;SACF,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,QAAgB;QACtD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE;gBACV,8DAA8D;gBAC9D,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;gBAClC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;aACpC;SACF,CAAC;IACJ,CAAC;IAEO,
|
|
1
|
+
{"version":3,"file":"MongoReportStorage.js","sourceRoot":"","sources":["../../src/storage/MongoReportStorage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@powersync/service-module-mongodb-storage",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
4
|
"types": "dist/index.d.ts",
|
|
5
|
-
"version": "0.0.0-dev-
|
|
5
|
+
"version": "0.0.0-dev-20250724093011",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"license": "FSL-1.1-Apache-2.0",
|
|
8
8
|
"type": "module",
|
|
@@ -27,15 +27,15 @@
|
|
|
27
27
|
"lru-cache": "^10.2.2",
|
|
28
28
|
"ts-codec": "^1.3.0",
|
|
29
29
|
"uuid": "^11.1.0",
|
|
30
|
-
"@powersync/lib-service-mongodb": "0.0.0-dev-
|
|
31
|
-
"@powersync/lib-services-framework": "0.0.0-dev-
|
|
32
|
-
"@powersync/service-core": "0.0.0-dev-
|
|
33
|
-
"@powersync/service-types": "0.0.0-dev-
|
|
30
|
+
"@powersync/lib-service-mongodb": "0.0.0-dev-20250724093011",
|
|
31
|
+
"@powersync/lib-services-framework": "0.0.0-dev-20250724093011",
|
|
32
|
+
"@powersync/service-core": "0.0.0-dev-20250724093011",
|
|
33
|
+
"@powersync/service-types": "0.0.0-dev-20250724093011",
|
|
34
34
|
"@powersync/service-jsonbig": "0.17.10",
|
|
35
35
|
"@powersync/service-sync-rules": "0.27.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@powersync/service-core-tests": "0.0.0-dev-
|
|
38
|
+
"@powersync/service-core-tests": "0.0.0-dev-20250724093011"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc -b",
|
|
@@ -17,14 +17,12 @@ export const up: migrations.PowerSyncMigrationFunction = async (context) => {
|
|
|
17
17
|
jwt_exp: 1,
|
|
18
18
|
disconnect_at: 1
|
|
19
19
|
},
|
|
20
|
-
{ name: '
|
|
20
|
+
{ name: 'list_index' }
|
|
21
21
|
);
|
|
22
22
|
|
|
23
23
|
await db.sdk_report_events.createIndex(
|
|
24
24
|
{
|
|
25
|
-
user_id: 1
|
|
26
|
-
sdk: 1,
|
|
27
|
-
version: 1
|
|
25
|
+
user_id: 1
|
|
28
26
|
},
|
|
29
27
|
{ name: 'user_id' }
|
|
30
28
|
);
|
|
@@ -34,6 +32,12 @@ export const up: migrations.PowerSyncMigrationFunction = async (context) => {
|
|
|
34
32
|
},
|
|
35
33
|
{ name: 'client_id' }
|
|
36
34
|
);
|
|
35
|
+
await db.sdk_report_events.createIndex(
|
|
36
|
+
{
|
|
37
|
+
sdk: 1
|
|
38
|
+
},
|
|
39
|
+
{ name: 'sdk' }
|
|
40
|
+
);
|
|
37
41
|
} finally {
|
|
38
42
|
await db.client.close();
|
|
39
43
|
}
|
|
@@ -86,7 +86,7 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
private
|
|
89
|
+
private listConnectionsDateRange(data: event_types.ListCurrentConnectionsRequest) {
|
|
90
90
|
const { range } = data;
|
|
91
91
|
if (!range) {
|
|
92
92
|
return undefined;
|
|
@@ -97,10 +97,8 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
|
97
97
|
throw new Error('Invalid start date for `day` period. Max period is withing 2 days');
|
|
98
98
|
}
|
|
99
99
|
return {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
$gt: parsedDate
|
|
103
|
-
}
|
|
100
|
+
$lte: date,
|
|
101
|
+
$gt: parsedDate
|
|
104
102
|
};
|
|
105
103
|
}
|
|
106
104
|
|
|
@@ -167,7 +165,6 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
|
167
165
|
async deleteOldSdkData(data: event_types.DeleteOldSdkData): Promise<void> {
|
|
168
166
|
const { interval, timeframe } = data;
|
|
169
167
|
const timeframeFilter = this.timeFrameDeleteQuery(timeframe, interval);
|
|
170
|
-
console.log(timeframeFilter);
|
|
171
168
|
const result = await this.db.sdk_report_events.deleteMany({
|
|
172
169
|
connect_at: timeframeFilter,
|
|
173
170
|
$or: [{ disconnect_at: { $exists: true } }, { jwt_exp: { $lt: new Date() }, disconnect_at: { $exists: false } }]
|
|
@@ -181,7 +178,7 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
|
181
178
|
const { interval, timeframe } = data;
|
|
182
179
|
const timeframeFilter = this.timeFrameQuery(timeframe, interval);
|
|
183
180
|
const result = await this.db.sdk_report_events
|
|
184
|
-
.aggregate([
|
|
181
|
+
.aggregate<event_types.ListCurrentConnections>([
|
|
185
182
|
{
|
|
186
183
|
$match: {
|
|
187
184
|
connect_at: timeframeFilter
|
|
@@ -191,7 +188,7 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
|
191
188
|
this.sdkProjectPipeline()
|
|
192
189
|
])
|
|
193
190
|
.toArray();
|
|
194
|
-
return result[0]
|
|
191
|
+
return result[0];
|
|
195
192
|
}
|
|
196
193
|
|
|
197
194
|
async reportSdkConnect(data: event_types.SdkConnectBucketData): Promise<void> {
|
|
@@ -223,20 +220,38 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
|
223
220
|
async listCurrentConnections(
|
|
224
221
|
data: event_types.ListCurrentConnectionsRequest
|
|
225
222
|
): Promise<event_types.ListCurrentConnections> {
|
|
226
|
-
const
|
|
223
|
+
const timeframeFilter = this.listConnectionsDateRange(data);
|
|
224
|
+
const explain = await this.db.sdk_report_events
|
|
227
225
|
.aggregate([
|
|
228
226
|
{
|
|
229
227
|
$match: {
|
|
230
228
|
disconnect_at: { $exists: false },
|
|
231
229
|
jwt_exp: { $gt: new Date() },
|
|
232
|
-
|
|
230
|
+
connect_at: timeframeFilter
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
this.sdkFacetPipeline(),
|
|
234
|
+
this.sdkProjectPipeline()
|
|
235
|
+
])
|
|
236
|
+
.explain();
|
|
237
|
+
explain.stages.map((stage: any) => {
|
|
238
|
+
const key = Object.keys(stage)[0];
|
|
239
|
+
console.log(JSON.stringify(stage[key], null, 2));
|
|
240
|
+
});
|
|
241
|
+
const result = await this.db.sdk_report_events
|
|
242
|
+
.aggregate<event_types.ListCurrentConnections>([
|
|
243
|
+
{
|
|
244
|
+
$match: {
|
|
245
|
+
disconnect_at: { $exists: false },
|
|
246
|
+
jwt_exp: { $gt: new Date() },
|
|
247
|
+
connect_at: timeframeFilter
|
|
233
248
|
}
|
|
234
249
|
},
|
|
235
250
|
this.sdkFacetPipeline(),
|
|
236
251
|
this.sdkProjectPipeline()
|
|
237
252
|
])
|
|
238
253
|
.toArray();
|
|
239
|
-
return result[0]
|
|
254
|
+
return result[0];
|
|
240
255
|
}
|
|
241
256
|
|
|
242
257
|
async [Symbol.asyncDispose]() {
|