@powersync/service-module-mongodb-storage 0.0.0-dev-20250723144115 → 0.0.0-dev-20250724064948
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @powersync/service-module-mongodb-storage
|
|
2
2
|
|
|
3
|
-
## 0.0.0-dev-
|
|
3
|
+
## 0.0.0-dev-20250724064948
|
|
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-20250724064948
|
|
14
|
+
- @powersync/service-types@0.0.0-dev-20250724064948
|
|
15
|
+
- @powersync/lib-services-framework@0.0.0-dev-20250724064948
|
|
16
|
+
- @powersync/lib-service-mongodb@0.0.0-dev-20250724064948
|
|
17
17
|
|
|
18
18
|
## 0.10.4
|
|
19
19
|
|
|
@@ -9,7 +9,8 @@ export declare class MongoReportStorage implements storage.ReportStorageFactory
|
|
|
9
9
|
private sdkProjectPipeline;
|
|
10
10
|
private updateDocFilter;
|
|
11
11
|
private dayDateRange;
|
|
12
|
-
private
|
|
12
|
+
private timeFrameQuery;
|
|
13
|
+
private timeFrameDeleteQuery;
|
|
13
14
|
deleteOldSdkData(data: event_types.DeleteOldSdkData): Promise<void>;
|
|
14
15
|
scrapeSdkData(data: event_types.ScrapeSdkDataRequest): Promise<event_types.ListCurrentConnections>;
|
|
15
16
|
reportSdkConnect(data: event_types.SdkConnectBucketData): Promise<void>;
|
|
@@ -92,15 +92,15 @@ export class MongoReportStorage {
|
|
|
92
92
|
}
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
|
-
|
|
95
|
+
timeFrameQuery(timeframe, interval = 1) {
|
|
96
96
|
const { year, month, today, parsedDate } = parseJsDate(new Date());
|
|
97
|
-
switch (
|
|
97
|
+
switch (timeframe) {
|
|
98
98
|
case 'month': {
|
|
99
|
-
return { $lte: parsedDate, $gt: new Date(year, parsedDate.getMonth() -
|
|
99
|
+
return { $lte: parsedDate, $gt: new Date(year, parsedDate.getMonth() - interval) };
|
|
100
100
|
}
|
|
101
101
|
case 'week': {
|
|
102
102
|
const weekStartDate = new Date(parsedDate);
|
|
103
|
-
weekStartDate.setDate(weekStartDate.getDate() - 6 *
|
|
103
|
+
weekStartDate.setDate(weekStartDate.getDate() - 6 * interval);
|
|
104
104
|
const weekStart = parseJsDate(weekStartDate);
|
|
105
105
|
return {
|
|
106
106
|
$lte: parsedDate,
|
|
@@ -109,24 +109,53 @@ export class MongoReportStorage {
|
|
|
109
109
|
}
|
|
110
110
|
case 'hour': {
|
|
111
111
|
// Get the last hour from the current time
|
|
112
|
-
const previousHour = parsedDate.getHours() -
|
|
112
|
+
const previousHour = parsedDate.getHours() - interval;
|
|
113
113
|
return {
|
|
114
|
-
$
|
|
115
|
-
$
|
|
114
|
+
$gt: new Date(year, month, today, previousHour),
|
|
115
|
+
$lte: new Date(year, month, today, parsedDate.getHours())
|
|
116
116
|
};
|
|
117
117
|
}
|
|
118
118
|
default: {
|
|
119
119
|
return {
|
|
120
120
|
$lte: parsedDate,
|
|
121
|
-
$gt: new Date(year, month, today -
|
|
121
|
+
$gt: new Date(year, month, today - interval)
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
timeFrameDeleteQuery(timeframe, interval = 1) {
|
|
127
|
+
const { year, month, today, parsedDate } = parseJsDate(new Date());
|
|
128
|
+
switch (timeframe) {
|
|
129
|
+
case 'month': {
|
|
130
|
+
return { $lt: new Date(year, parsedDate.getMonth() - interval) };
|
|
131
|
+
}
|
|
132
|
+
case 'week': {
|
|
133
|
+
const weekStartDate = new Date(parsedDate);
|
|
134
|
+
weekStartDate.setDate(weekStartDate.getDate() - 6 * interval);
|
|
135
|
+
const { month, year, today } = parseJsDate(weekStartDate);
|
|
136
|
+
return {
|
|
137
|
+
$lt: new Date(year, month, today)
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
case 'hour': {
|
|
141
|
+
const previousHour = parsedDate.getHours() - interval;
|
|
142
|
+
return {
|
|
143
|
+
$lt: new Date(year, month, today, previousHour)
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
default: {
|
|
147
|
+
return {
|
|
148
|
+
$lt: new Date(year, month, today - interval)
|
|
122
149
|
};
|
|
123
150
|
}
|
|
124
151
|
}
|
|
125
152
|
}
|
|
126
153
|
async deleteOldSdkData(data) {
|
|
127
|
-
const {
|
|
154
|
+
const { interval, timeframe } = data;
|
|
155
|
+
const timeframeFilter = this.timeFrameDeleteQuery(timeframe, interval);
|
|
156
|
+
console.log(timeframeFilter);
|
|
128
157
|
const result = await this.db.sdk_report_events.deleteMany({
|
|
129
|
-
connect_at:
|
|
158
|
+
connect_at: timeframeFilter,
|
|
130
159
|
$or: [{ disconnect_at: { $exists: true } }, { jwt_exp: { $lt: new Date() }, disconnect_at: { $exists: false } }]
|
|
131
160
|
});
|
|
132
161
|
if (result.deletedCount > 0) {
|
|
@@ -134,12 +163,13 @@ export class MongoReportStorage {
|
|
|
134
163
|
}
|
|
135
164
|
}
|
|
136
165
|
async scrapeSdkData(data) {
|
|
137
|
-
const
|
|
166
|
+
const { interval, timeframe } = data;
|
|
167
|
+
const timeframeFilter = this.timeFrameQuery(timeframe, interval);
|
|
138
168
|
const result = await this.db.sdk_report_events
|
|
139
169
|
.aggregate([
|
|
140
170
|
{
|
|
141
171
|
$match: {
|
|
142
|
-
connect_at:
|
|
172
|
+
connect_at: timeframeFilter
|
|
143
173
|
}
|
|
144
174
|
},
|
|
145
175
|
this.sdkFacetPipeline(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoReportStorage.js","sourceRoot":"","sources":["../../src/storage/MongoReportStorage.ts"],"names":[],"mappings":"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
|
|
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-20250724064948",
|
|
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-20250724064948",
|
|
31
|
+
"@powersync/lib-services-framework": "0.0.0-dev-20250724064948",
|
|
32
|
+
"@powersync/service-core": "0.0.0-dev-20250724064948",
|
|
33
|
+
"@powersync/service-types": "0.0.0-dev-20250724064948",
|
|
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-20250724064948"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc -b",
|
|
@@ -104,15 +104,15 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
private
|
|
107
|
+
private timeFrameQuery(timeframe: event_types.TimeFrames, interval: number = 1): mongo.Filter<mongo.Document> {
|
|
108
108
|
const { year, month, today, parsedDate } = parseJsDate(new Date());
|
|
109
|
-
switch (
|
|
109
|
+
switch (timeframe) {
|
|
110
110
|
case 'month': {
|
|
111
|
-
return { $lte: parsedDate, $gt: new Date(year, parsedDate.getMonth() -
|
|
111
|
+
return { $lte: parsedDate, $gt: new Date(year, parsedDate.getMonth() - interval) };
|
|
112
112
|
}
|
|
113
113
|
case 'week': {
|
|
114
114
|
const weekStartDate = new Date(parsedDate);
|
|
115
|
-
weekStartDate.setDate(weekStartDate.getDate() - 6 *
|
|
115
|
+
weekStartDate.setDate(weekStartDate.getDate() - 6 * interval);
|
|
116
116
|
const weekStart = parseJsDate(weekStartDate);
|
|
117
117
|
return {
|
|
118
118
|
$lte: parsedDate,
|
|
@@ -121,25 +121,55 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
|
121
121
|
}
|
|
122
122
|
case 'hour': {
|
|
123
123
|
// Get the last hour from the current time
|
|
124
|
-
const previousHour = parsedDate.getHours() -
|
|
124
|
+
const previousHour = parsedDate.getHours() - interval;
|
|
125
125
|
return {
|
|
126
|
-
$
|
|
127
|
-
$
|
|
126
|
+
$gt: new Date(year, month, today, previousHour),
|
|
127
|
+
$lte: new Date(year, month, today, parsedDate.getHours())
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
130
|
default: {
|
|
131
131
|
return {
|
|
132
132
|
$lte: parsedDate,
|
|
133
|
-
$gt: new Date(year, month, today -
|
|
133
|
+
$gt: new Date(year, month, today - interval)
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
private timeFrameDeleteQuery(timeframe: event_types.TimeFrames, interval: number = 1): mongo.Filter<mongo.Document> {
|
|
140
|
+
const { year, month, today, parsedDate } = parseJsDate(new Date());
|
|
141
|
+
switch (timeframe) {
|
|
142
|
+
case 'month': {
|
|
143
|
+
return { $lt: new Date(year, parsedDate.getMonth() - interval) };
|
|
144
|
+
}
|
|
145
|
+
case 'week': {
|
|
146
|
+
const weekStartDate = new Date(parsedDate);
|
|
147
|
+
weekStartDate.setDate(weekStartDate.getDate() - 6 * interval);
|
|
148
|
+
const { month, year, today } = parseJsDate(weekStartDate);
|
|
149
|
+
return {
|
|
150
|
+
$lt: new Date(year, month, today)
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
case 'hour': {
|
|
154
|
+
const previousHour = parsedDate.getHours() - interval;
|
|
155
|
+
return {
|
|
156
|
+
$lt: new Date(year, month, today, previousHour)
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
default: {
|
|
160
|
+
return {
|
|
161
|
+
$lt: new Date(year, month, today - interval)
|
|
134
162
|
};
|
|
135
163
|
}
|
|
136
164
|
}
|
|
137
165
|
}
|
|
138
166
|
|
|
139
167
|
async deleteOldSdkData(data: event_types.DeleteOldSdkData): Promise<void> {
|
|
140
|
-
const {
|
|
168
|
+
const { interval, timeframe } = data;
|
|
169
|
+
const timeframeFilter = this.timeFrameDeleteQuery(timeframe, interval);
|
|
170
|
+
console.log(timeframeFilter);
|
|
141
171
|
const result = await this.db.sdk_report_events.deleteMany({
|
|
142
|
-
connect_at:
|
|
172
|
+
connect_at: timeframeFilter,
|
|
143
173
|
$or: [{ disconnect_at: { $exists: true } }, { jwt_exp: { $lt: new Date() }, disconnect_at: { $exists: false } }]
|
|
144
174
|
});
|
|
145
175
|
if (result.deletedCount > 0) {
|
|
@@ -148,12 +178,13 @@ export class MongoReportStorage implements storage.ReportStorageFactory {
|
|
|
148
178
|
}
|
|
149
179
|
|
|
150
180
|
async scrapeSdkData(data: event_types.ScrapeSdkDataRequest): Promise<event_types.ListCurrentConnections> {
|
|
151
|
-
const
|
|
181
|
+
const { interval, timeframe } = data;
|
|
182
|
+
const timeframeFilter = this.timeFrameQuery(timeframe, interval);
|
|
152
183
|
const result = await this.db.sdk_report_events
|
|
153
184
|
.aggregate([
|
|
154
185
|
{
|
|
155
186
|
$match: {
|
|
156
|
-
connect_at:
|
|
187
|
+
connect_at: timeframeFilter
|
|
157
188
|
}
|
|
158
189
|
},
|
|
159
190
|
this.sdkFacetPipeline(),
|