@powersync/service-module-postgres-storage 0.0.0-dev-20250819134004 → 0.0.0-dev-20250820110726
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 +9 -9
- package/dist/.tsbuildinfo +1 -1
- package/dist/migrations/scripts/1684951997326-init.js +7 -5
- package/dist/migrations/scripts/1684951997326-init.js.map +1 -1
- package/dist/storage/PostgresReportStorageFactory.js +8 -8
- package/dist/storage/PostgresReportStorageFactory.js.map +1 -1
- package/dist/utils/db.js +1 -1
- package/dist/utils/db.js.map +1 -1
- package/package.json +9 -9
- package/src/migrations/scripts/1684951997326-init.ts +7 -5
- package/src/storage/PostgresReportStorageFactory.ts +8 -8
- package/src/utils/db.ts +1 -1
- package/test/src/__snapshots__/{sdk-report-storage.test.ts.snap → connection-report-storage.test.ts.snap} +70 -31
- package/test/src/{sdk-report-storage.test.ts → connection-report-storage.test.ts} +12 -12
|
@@ -165,7 +165,7 @@ export const up = async (context) => {
|
|
|
165
165
|
);
|
|
166
166
|
`.execute();
|
|
167
167
|
await db.sql `
|
|
168
|
-
CREATE TABLE
|
|
168
|
+
CREATE TABLE connection_report_events (
|
|
169
169
|
id TEXT PRIMARY KEY,
|
|
170
170
|
user_agent TEXT NOT NULL,
|
|
171
171
|
client_id TEXT NOT NULL,
|
|
@@ -176,10 +176,12 @@ export const up = async (context) => {
|
|
|
176
176
|
disconnected_at TIMESTAMP WITH TIME ZONE
|
|
177
177
|
)
|
|
178
178
|
`.execute();
|
|
179
|
-
await db.sql `
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
await db.sql `CREATE INDEX
|
|
179
|
+
await db.sql `
|
|
180
|
+
CREATE INDEX sdk_list_index ON connection_report_events (connected_at, jwt_exp, disconnected_at)
|
|
181
|
+
`.execute();
|
|
182
|
+
await db.sql `CREATE INDEX sdk_user_id_index ON connection_report_events (user_id)`.execute();
|
|
183
|
+
await db.sql `CREATE INDEX sdk_client_id_index ON connection_report_events (client_id)`.execute();
|
|
184
|
+
await db.sql `CREATE INDEX sdk_index ON connection_report_events (sdk)`.execute();
|
|
183
185
|
});
|
|
184
186
|
}
|
|
185
187
|
catch (e_1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1684951997326-init.js","sourceRoot":"","sources":["../../../src/migrations/scripts/1684951997326-init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,EAAE,GAA0C,KAAK,EAAE,OAAO,EAAE,EAAE;;;QACzE,MAAM,EACJ,eAAe,EAAE,EAAE,aAAa,EAAE,EACnC,GAAG,OAAO,CAAC;QACZ,MAAY,MAAM,kCAAG,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,OAAA,CAAC;QAE5D;;;WAGG;QACH,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACpC,MAAM,EAAE,CAAC,GAAG,CAAA;;;;KAIX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;KAIX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;KAeX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA,8CAA8C,CAAC,OAAO,EAAE,CAAC;YAErE,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;KAeX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;KAWX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;KAEX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;KAEX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;KAUX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;;;KAaX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA,0EAA0E,CAAC,OAAO,EAAE,CAAC;YAEjG,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;KAMX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;KAOX,CAAC,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;KAWX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"1684951997326-init.js","sourceRoot":"","sources":["../../../src/migrations/scripts/1684951997326-init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,EAAE,GAA0C,KAAK,EAAE,OAAO,EAAE,EAAE;;;QACzE,MAAM,EACJ,eAAe,EAAE,EAAE,aAAa,EAAE,EACnC,GAAG,OAAO,CAAC;QACZ,MAAY,MAAM,kCAAG,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,OAAA,CAAC;QAE5D;;;WAGG;QACH,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACpC,MAAM,EAAE,CAAC,GAAG,CAAA;;;;KAIX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;KAIX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;KAeX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA,8CAA8C,CAAC,OAAO,EAAE,CAAC;YAErE,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;KAeX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;KAWX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;KAEX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;KAEX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;KAUX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;;;KAaX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA,0EAA0E,CAAC,OAAO,EAAE,CAAC;YAEjG,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;KAMX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;KAOX,CAAC,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;KAWX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;KAEX,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,EAAE,CAAC,GAAG,CAAA,sEAAsE,CAAC,OAAO,EAAE,CAAC;YAE7F,MAAM,EAAE,CAAC,GAAG,CAAA,0EAA0E,CAAC,OAAO,EAAE,CAAC;YAEjG,MAAM,EAAE,CAAC,GAAG,CAAA,0DAA0D,CAAC,OAAO,EAAE,CAAC;QACnF,CAAC,CAAC,CAAC;;;;;;;;;;;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAA0C,KAAK,EAAE,OAAO,EAAE,EAAE;;;QAC3E,MAAM,EACJ,eAAe,EAAE,EAAE,aAAa,EAAE,EACnC,GAAG,OAAO,CAAC;QACZ,MAAY,MAAM,kCAAG,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,OAAA,CAAC;QAC5D,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;;;;;;;;;;;CAC1B,CAAC"}
|
|
@@ -53,7 +53,7 @@ export class PostgresReportStorageFactory {
|
|
|
53
53
|
SELECT
|
|
54
54
|
*
|
|
55
55
|
FROM
|
|
56
|
-
|
|
56
|
+
connection_report_events
|
|
57
57
|
WHERE
|
|
58
58
|
disconnected_at IS NULL
|
|
59
59
|
AND jwt_exp > NOW()
|
|
@@ -101,7 +101,7 @@ export class PostgresReportStorageFactory {
|
|
|
101
101
|
SELECT
|
|
102
102
|
*
|
|
103
103
|
FROM
|
|
104
|
-
|
|
104
|
+
connection_report_events
|
|
105
105
|
WHERE
|
|
106
106
|
disconnected_at IS NULL
|
|
107
107
|
AND jwt_exp > NOW()
|
|
@@ -156,7 +156,7 @@ export class PostgresReportStorageFactory {
|
|
|
156
156
|
const { gte, lt } = this.updateTableFilter();
|
|
157
157
|
const uuid = v4();
|
|
158
158
|
const result = await this.db.sql `
|
|
159
|
-
UPDATE
|
|
159
|
+
UPDATE connection_report_events
|
|
160
160
|
SET
|
|
161
161
|
connected_at = ${{ type: 1184, value: connectIsoString }},
|
|
162
162
|
sdk = ${{ type: 'varchar', value: sdk }},
|
|
@@ -172,7 +172,7 @@ export class PostgresReportStorageFactory {
|
|
|
172
172
|
if (result.results[1].status === 'UPDATE 0') {
|
|
173
173
|
await this.db.sql `
|
|
174
174
|
INSERT INTO
|
|
175
|
-
|
|
175
|
+
connection_report_events (
|
|
176
176
|
user_id,
|
|
177
177
|
client_id,
|
|
178
178
|
connected_at,
|
|
@@ -199,7 +199,7 @@ export class PostgresReportStorageFactory {
|
|
|
199
199
|
const disconnectIsoString = disconnected_at.toISOString();
|
|
200
200
|
const connectIsoString = connected_at.toISOString();
|
|
201
201
|
await this.db.sql `
|
|
202
|
-
UPDATE
|
|
202
|
+
UPDATE connection_report_events
|
|
203
203
|
SET
|
|
204
204
|
disconnected_at = ${{ type: 1184, value: disconnectIsoString }},
|
|
205
205
|
jwt_exp = NULL
|
|
@@ -221,7 +221,7 @@ export class PostgresReportStorageFactory {
|
|
|
221
221
|
SELECT
|
|
222
222
|
*
|
|
223
223
|
FROM
|
|
224
|
-
|
|
224
|
+
connection_report_events
|
|
225
225
|
WHERE
|
|
226
226
|
connected_at >= ${{ type: 1184, value: start.toISOString() }}
|
|
227
227
|
AND connected_at <= ${{ type: 1184, value: end.toISOString() }}
|
|
@@ -263,7 +263,7 @@ export class PostgresReportStorageFactory {
|
|
|
263
263
|
async deleteOldConnectionData(data) {
|
|
264
264
|
const { date } = data;
|
|
265
265
|
const result = await this.db.sql `
|
|
266
|
-
DELETE FROM
|
|
266
|
+
DELETE FROM connection_report_events
|
|
267
267
|
WHERE
|
|
268
268
|
connected_at < ${{ type: 1184, value: date.toISOString() }}
|
|
269
269
|
AND (
|
|
@@ -276,7 +276,7 @@ export class PostgresReportStorageFactory {
|
|
|
276
276
|
`.execute();
|
|
277
277
|
const deletedRows = toInteger(result.results[1].status.split(' ')[1] || '0');
|
|
278
278
|
if (deletedRows > 0) {
|
|
279
|
-
logger.info(`TTL from ${date.toISOString()}: ${deletedRows} PostgresSQL rows have been removed from
|
|
279
|
+
logger.info(`TTL from ${date.toISOString()}: ${deletedRows} PostgresSQL rows have been removed from connection_report_events.`);
|
|
280
280
|
}
|
|
281
281
|
}
|
|
282
282
|
async [Symbol.asyncDispose]() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresReportStorageFactory.js","sourceRoot":"","sources":["../../src/storage/PostgresReportStorageFactory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PostgresReportStorageFactory.js","sourceRoot":"","sources":["../../src/storage/PostgresReportStorageFactory.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/db.js
CHANGED
|
@@ -19,7 +19,7 @@ export const dropTables = async (client) => {
|
|
|
19
19
|
await db.sql `DROP TABLE IF EXISTS custom_write_checkpoints`.execute();
|
|
20
20
|
await db.sql `DROP SEQUENCE IF EXISTS op_id_sequence`.execute();
|
|
21
21
|
await db.sql `DROP SEQUENCE IF EXISTS sync_rules_id_sequence`.execute();
|
|
22
|
-
await db.sql `DROP TABLE IF EXISTS
|
|
22
|
+
await db.sql `DROP TABLE IF EXISTS connection_report_events`.execute();
|
|
23
23
|
});
|
|
24
24
|
};
|
|
25
25
|
//# sourceMappingURL=db.js.map
|
package/dist/utils/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/utils/db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAEhE,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,MAAmC,EAAE,EAAE;IACtE,sDAAsD;IACtD,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACvC,MAAM,EAAE,CAAC,GAAG,CAAA,kCAAkC,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,EAAE,CAAC,GAAG,CAAA,wCAAwC,CAAC,OAAO,EAAE,CAAC;QAC/D,MAAM,EAAE,CAAC,GAAG,CAAA,iCAAiC,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,EAAE,CAAC,GAAG,CAAA,+BAA+B,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,EAAE,CAAC,GAAG,CAAA,kCAAkC,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,EAAE,CAAC,GAAG,CAAA,mCAAmC,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC,GAAG,CAAA,oCAAoC,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,EAAE,CAAC,GAAG,CAAA,wCAAwC,CAAC,OAAO,EAAE,CAAC;QAC/D,MAAM,EAAE,CAAC,GAAG,CAAA,+CAA+C,CAAC,OAAO,EAAE,CAAC;QACtE,MAAM,EAAE,CAAC,GAAG,CAAA,wCAAwC,CAAC,OAAO,EAAE,CAAC;QAC/D,MAAM,EAAE,CAAC,GAAG,CAAA,gDAAgD,CAAC,OAAO,EAAE,CAAC;QACvE,MAAM,EAAE,CAAC,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/utils/db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAEhE,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,MAAmC,EAAE,EAAE;IACtE,sDAAsD;IACtD,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACvC,MAAM,EAAE,CAAC,GAAG,CAAA,kCAAkC,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,EAAE,CAAC,GAAG,CAAA,wCAAwC,CAAC,OAAO,EAAE,CAAC;QAC/D,MAAM,EAAE,CAAC,GAAG,CAAA,iCAAiC,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,EAAE,CAAC,GAAG,CAAA,+BAA+B,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,EAAE,CAAC,GAAG,CAAA,kCAAkC,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,EAAE,CAAC,GAAG,CAAA,mCAAmC,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC,GAAG,CAAA,oCAAoC,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,EAAE,CAAC,GAAG,CAAA,wCAAwC,CAAC,OAAO,EAAE,CAAC;QAC/D,MAAM,EAAE,CAAC,GAAG,CAAA,+CAA+C,CAAC,OAAO,EAAE,CAAC;QACtE,MAAM,EAAE,CAAC,GAAG,CAAA,wCAAwC,CAAC,OAAO,EAAE,CAAC;QAC/D,MAAM,EAAE,CAAC,GAAG,CAAA,gDAAgD,CAAC,OAAO,EAAE,CAAC;QACvE,MAAM,EAAE,CAAC,GAAG,CAAA,+CAA+C,CAAC,OAAO,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@powersync/service-module-postgres-storage",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
4
|
"types": "dist/@types/index.d.ts",
|
|
5
|
-
"version": "0.0.0-dev-
|
|
5
|
+
"version": "0.0.0-dev-20250820110726",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"publishConfig": {
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
"p-defer": "^4.0.1",
|
|
29
29
|
"ts-codec": "^1.3.0",
|
|
30
30
|
"uuid": "^11.1.0",
|
|
31
|
-
"@powersync/lib-service-postgres": "0.0.0-dev-
|
|
32
|
-
"@powersync/lib-services-framework": "0.0.0-dev-
|
|
33
|
-
"@powersync/service-core": "0.0.0-dev-
|
|
34
|
-
"@powersync/service-types": "0.0.0-dev-
|
|
35
|
-
"@powersync/service-core-tests": "0.0.0-dev-
|
|
36
|
-
"@powersync/service-jpgwire": "0.0.0-dev-
|
|
37
|
-
"@powersync/service-jsonbig": "0.0.0-dev-
|
|
38
|
-
"@powersync/service-sync-rules": "0.0.0-dev-
|
|
31
|
+
"@powersync/lib-service-postgres": "0.0.0-dev-20250820110726",
|
|
32
|
+
"@powersync/lib-services-framework": "0.0.0-dev-20250820110726",
|
|
33
|
+
"@powersync/service-core": "0.0.0-dev-20250820110726",
|
|
34
|
+
"@powersync/service-types": "0.0.0-dev-20250820110726",
|
|
35
|
+
"@powersync/service-core-tests": "0.0.0-dev-20250820110726",
|
|
36
|
+
"@powersync/service-jpgwire": "0.0.0-dev-20250820110726",
|
|
37
|
+
"@powersync/service-jsonbig": "0.0.0-dev-20250820110726",
|
|
38
|
+
"@powersync/service-sync-rules": "0.0.0-dev-20250820110726"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"typescript": "^5.7.3"
|
|
@@ -129,7 +129,7 @@ export const up: migrations.PowerSyncMigrationFunction = async (context) => {
|
|
|
129
129
|
);
|
|
130
130
|
`.execute();
|
|
131
131
|
await db.sql`
|
|
132
|
-
CREATE TABLE
|
|
132
|
+
CREATE TABLE connection_report_events (
|
|
133
133
|
id TEXT PRIMARY KEY,
|
|
134
134
|
user_agent TEXT NOT NULL,
|
|
135
135
|
client_id TEXT NOT NULL,
|
|
@@ -141,13 +141,15 @@ export const up: migrations.PowerSyncMigrationFunction = async (context) => {
|
|
|
141
141
|
)
|
|
142
142
|
`.execute();
|
|
143
143
|
|
|
144
|
-
await db.sql`
|
|
144
|
+
await db.sql`
|
|
145
|
+
CREATE INDEX sdk_list_index ON connection_report_events (connected_at, jwt_exp, disconnected_at)
|
|
146
|
+
`.execute();
|
|
145
147
|
|
|
146
|
-
await db.sql`CREATE INDEX sdk_user_id_index ON
|
|
148
|
+
await db.sql`CREATE INDEX sdk_user_id_index ON connection_report_events (user_id)`.execute();
|
|
147
149
|
|
|
148
|
-
await db.sql`CREATE INDEX sdk_client_id_index ON
|
|
150
|
+
await db.sql`CREATE INDEX sdk_client_id_index ON connection_report_events (client_id)`.execute();
|
|
149
151
|
|
|
150
|
-
await db.sql`CREATE INDEX sdk_index ON
|
|
152
|
+
await db.sql`CREATE INDEX sdk_index ON connection_report_events (sdk)`.execute();
|
|
151
153
|
});
|
|
152
154
|
};
|
|
153
155
|
|
|
@@ -63,7 +63,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
|
|
|
63
63
|
SELECT
|
|
64
64
|
*
|
|
65
65
|
FROM
|
|
66
|
-
|
|
66
|
+
connection_report_events
|
|
67
67
|
WHERE
|
|
68
68
|
disconnected_at IS NULL
|
|
69
69
|
AND jwt_exp > NOW()
|
|
@@ -111,7 +111,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
|
|
|
111
111
|
SELECT
|
|
112
112
|
*
|
|
113
113
|
FROM
|
|
114
|
-
|
|
114
|
+
connection_report_events
|
|
115
115
|
WHERE
|
|
116
116
|
disconnected_at IS NULL
|
|
117
117
|
AND jwt_exp > NOW()
|
|
@@ -168,7 +168,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
|
|
|
168
168
|
const { gte, lt } = this.updateTableFilter();
|
|
169
169
|
const uuid = v4();
|
|
170
170
|
const result = await this.db.sql`
|
|
171
|
-
UPDATE
|
|
171
|
+
UPDATE connection_report_events
|
|
172
172
|
SET
|
|
173
173
|
connected_at = ${{ type: 1184, value: connectIsoString }},
|
|
174
174
|
sdk = ${{ type: 'varchar', value: sdk }},
|
|
@@ -184,7 +184,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
|
|
|
184
184
|
if (result.results[1].status === 'UPDATE 0') {
|
|
185
185
|
await this.db.sql`
|
|
186
186
|
INSERT INTO
|
|
187
|
-
|
|
187
|
+
connection_report_events (
|
|
188
188
|
user_id,
|
|
189
189
|
client_id,
|
|
190
190
|
connected_at,
|
|
@@ -211,7 +211,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
|
|
|
211
211
|
const disconnectIsoString = disconnected_at.toISOString();
|
|
212
212
|
const connectIsoString = connected_at.toISOString();
|
|
213
213
|
await this.db.sql`
|
|
214
|
-
UPDATE
|
|
214
|
+
UPDATE connection_report_events
|
|
215
215
|
SET
|
|
216
216
|
disconnected_at = ${{ type: 1184, value: disconnectIsoString }},
|
|
217
217
|
jwt_exp = NULL
|
|
@@ -236,7 +236,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
|
|
|
236
236
|
SELECT
|
|
237
237
|
*
|
|
238
238
|
FROM
|
|
239
|
-
|
|
239
|
+
connection_report_events
|
|
240
240
|
WHERE
|
|
241
241
|
connected_at >= ${{ type: 1184, value: start.toISOString() }}
|
|
242
242
|
AND connected_at <= ${{ type: 1184, value: end.toISOString() }}
|
|
@@ -278,7 +278,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
|
|
|
278
278
|
async deleteOldConnectionData(data: event_types.DeleteOldConnectionData): Promise<void> {
|
|
279
279
|
const { date } = data;
|
|
280
280
|
const result = await this.db.sql`
|
|
281
|
-
DELETE FROM
|
|
281
|
+
DELETE FROM connection_report_events
|
|
282
282
|
WHERE
|
|
283
283
|
connected_at < ${{ type: 1184, value: date.toISOString() }}
|
|
284
284
|
AND (
|
|
@@ -292,7 +292,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
|
|
|
292
292
|
const deletedRows = toInteger(result.results[1].status.split(' ')[1] || '0');
|
|
293
293
|
if (deletedRows > 0) {
|
|
294
294
|
logger.info(
|
|
295
|
-
`TTL from ${date.toISOString()}: ${deletedRows} PostgresSQL rows have been removed from
|
|
295
|
+
`TTL from ${date.toISOString()}: ${deletedRows} PostgresSQL rows have been removed from connection_report_events.`
|
|
296
296
|
);
|
|
297
297
|
}
|
|
298
298
|
}
|
package/src/utils/db.ts
CHANGED
|
@@ -23,6 +23,6 @@ export const dropTables = async (client: lib_postgres.DatabaseClient) => {
|
|
|
23
23
|
await db.sql`DROP TABLE IF EXISTS custom_write_checkpoints`.execute();
|
|
24
24
|
await db.sql`DROP SEQUENCE IF EXISTS op_id_sequence`.execute();
|
|
25
25
|
await db.sql`DROP SEQUENCE IF EXISTS sync_rules_id_sequence`.execute();
|
|
26
|
-
await db.sql`DROP TABLE IF EXISTS
|
|
26
|
+
await db.sql`DROP TABLE IF EXISTS connection_report_events`.execute();
|
|
27
27
|
});
|
|
28
28
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
-
exports[`
|
|
3
|
+
exports[`Connection report storage > Should create a connection event if its after a day 1`] = `
|
|
4
4
|
[
|
|
5
5
|
{
|
|
6
6
|
"client_id": "client_week",
|
|
@@ -17,7 +17,24 @@ exports[`SDK reporting storage > Should create a sdk event if its after a day 1`
|
|
|
17
17
|
]
|
|
18
18
|
`;
|
|
19
19
|
|
|
20
|
-
exports[`
|
|
20
|
+
exports[`Connection report storage > Should create a sdk event if its after a day 1`] = `
|
|
21
|
+
[
|
|
22
|
+
{
|
|
23
|
+
"client_id": "client_week",
|
|
24
|
+
"sdk": "powersync-js/1.24.5",
|
|
25
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
26
|
+
"user_id": "user_week",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"client_id": "client_week",
|
|
30
|
+
"sdk": "powersync-js/1.24.5",
|
|
31
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
32
|
+
"user_id": "user_week",
|
|
33
|
+
},
|
|
34
|
+
]
|
|
35
|
+
`;
|
|
36
|
+
|
|
37
|
+
exports[`Connection report storage > Should delete rows older than specified range 1`] = `
|
|
21
38
|
{
|
|
22
39
|
"sdks": [
|
|
23
40
|
{
|
|
@@ -50,7 +67,33 @@ exports[`SDK reporting storage > Should delete rows older than specified range 1
|
|
|
50
67
|
}
|
|
51
68
|
`;
|
|
52
69
|
|
|
53
|
-
exports[`
|
|
70
|
+
exports[`Connection report storage > Should show connected users with start range 1`] = `
|
|
71
|
+
{
|
|
72
|
+
"sdks": [
|
|
73
|
+
{
|
|
74
|
+
"clients": 1,
|
|
75
|
+
"sdk": "powersync-dart/1.6.4",
|
|
76
|
+
"users": 1,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
"users": 1,
|
|
80
|
+
}
|
|
81
|
+
`;
|
|
82
|
+
|
|
83
|
+
exports[`Connection report storage > Should show connected users with start range and end range 1`] = `
|
|
84
|
+
{
|
|
85
|
+
"sdks": [
|
|
86
|
+
{
|
|
87
|
+
"clients": 1,
|
|
88
|
+
"sdk": "powersync-js/1.21.1",
|
|
89
|
+
"users": 1,
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
"users": 1,
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
95
|
+
|
|
96
|
+
exports[`Connection report storage > Should show connection report data for user over the past day 1`] = `
|
|
54
97
|
{
|
|
55
98
|
"sdks": [
|
|
56
99
|
{
|
|
@@ -73,7 +116,7 @@ exports[`SDK reporting storage > Should show SDK scrape data for user over the p
|
|
|
73
116
|
}
|
|
74
117
|
`;
|
|
75
118
|
|
|
76
|
-
exports[`
|
|
119
|
+
exports[`Connection report storage > Should show connection report data for user over the past month 1`] = `
|
|
77
120
|
{
|
|
78
121
|
"sdks": [
|
|
79
122
|
{
|
|
@@ -116,7 +159,7 @@ exports[`SDK reporting storage > Should show SDK scrape data for user over the p
|
|
|
116
159
|
}
|
|
117
160
|
`;
|
|
118
161
|
|
|
119
|
-
exports[`
|
|
162
|
+
exports[`Connection report storage > Should show connection report data for user over the past week 1`] = `
|
|
120
163
|
{
|
|
121
164
|
"sdks": [
|
|
122
165
|
{
|
|
@@ -149,33 +192,18 @@ exports[`SDK reporting storage > Should show SDK scrape data for user over the p
|
|
|
149
192
|
}
|
|
150
193
|
`;
|
|
151
194
|
|
|
152
|
-
exports[`
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
"users": 1,
|
|
162
|
-
}
|
|
163
|
-
`;
|
|
164
|
-
|
|
165
|
-
exports[`SDK reporting storage > Should show connected users with start range and end range 1`] = `
|
|
166
|
-
{
|
|
167
|
-
"sdks": [
|
|
168
|
-
{
|
|
169
|
-
"clients": 1,
|
|
170
|
-
"sdk": "powersync-js/1.21.1",
|
|
171
|
-
"users": 1,
|
|
172
|
-
},
|
|
173
|
-
],
|
|
174
|
-
"users": 1,
|
|
175
|
-
}
|
|
195
|
+
exports[`Connection report storage > Should update a connected sdk event and make it disconnected 1`] = `
|
|
196
|
+
[
|
|
197
|
+
{
|
|
198
|
+
"client_id": "client_three",
|
|
199
|
+
"sdk": "powersync-js/1.21.2",
|
|
200
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
201
|
+
"user_id": "user_three",
|
|
202
|
+
},
|
|
203
|
+
]
|
|
176
204
|
`;
|
|
177
205
|
|
|
178
|
-
exports[`
|
|
206
|
+
exports[`Connection report storage > Should update a connection event and make it disconnected 1`] = `
|
|
179
207
|
[
|
|
180
208
|
{
|
|
181
209
|
"client_id": "client_three",
|
|
@@ -186,7 +214,18 @@ exports[`SDK reporting storage > Should update a connected sdk event and make it
|
|
|
186
214
|
]
|
|
187
215
|
`;
|
|
188
216
|
|
|
189
|
-
exports[`
|
|
217
|
+
exports[`Connection report storage > Should update a connection event if its within a day 1`] = `
|
|
218
|
+
[
|
|
219
|
+
{
|
|
220
|
+
"client_id": "client_one",
|
|
221
|
+
"sdk": "powersync-dart/1.6.4",
|
|
222
|
+
"user_agent": "powersync-dart/1.6.4 Dart (flutter-web) Chrome/128 android",
|
|
223
|
+
"user_id": "user_one",
|
|
224
|
+
},
|
|
225
|
+
]
|
|
226
|
+
`;
|
|
227
|
+
|
|
228
|
+
exports[`Connection report storage > Should update a sdk event if its within a day 1`] = `
|
|
190
229
|
[
|
|
191
230
|
{
|
|
192
231
|
"client_id": "client_one",
|
|
@@ -11,7 +11,7 @@ function removeVolatileFields(sdks: event_types.ClientConnection[]): Partial<eve
|
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
describe('
|
|
14
|
+
describe('Connection report storage', async () => {
|
|
15
15
|
const factory = await POSTGRES_REPORT_STORAGE_FACTORY();
|
|
16
16
|
const now = new Date();
|
|
17
17
|
const nowAdd5minutes = new Date(
|
|
@@ -103,7 +103,7 @@ describe('SDK reporting storage', async () => {
|
|
|
103
103
|
async function loadData() {
|
|
104
104
|
await factory.db.sql`
|
|
105
105
|
INSERT INTO
|
|
106
|
-
|
|
106
|
+
connection_report_events (
|
|
107
107
|
user_id,
|
|
108
108
|
client_id,
|
|
109
109
|
connected_at,
|
|
@@ -188,7 +188,7 @@ describe('SDK reporting storage', async () => {
|
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
function deleteData() {
|
|
191
|
-
return factory.db.sql`TRUNCATE TABLE
|
|
191
|
+
return factory.db.sql`TRUNCATE TABLE connection_report_events`.execute();
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
beforeAll(async () => {
|
|
@@ -227,21 +227,21 @@ describe('SDK reporting storage', async () => {
|
|
|
227
227
|
});
|
|
228
228
|
expect(current).toMatchSnapshot();
|
|
229
229
|
});
|
|
230
|
-
it('Should show
|
|
230
|
+
it('Should show connection report data for user over the past month', async () => {
|
|
231
231
|
const sdk = await factory.getClientConnectionReports({
|
|
232
232
|
start: monthAgo,
|
|
233
233
|
end: now
|
|
234
234
|
});
|
|
235
235
|
expect(sdk).toMatchSnapshot();
|
|
236
236
|
});
|
|
237
|
-
it('Should show
|
|
237
|
+
it('Should show connection report data for user over the past week', async () => {
|
|
238
238
|
const sdk = await factory.getClientConnectionReports({
|
|
239
239
|
start: weekAgo,
|
|
240
240
|
end: now
|
|
241
241
|
});
|
|
242
242
|
expect(sdk).toMatchSnapshot();
|
|
243
243
|
});
|
|
244
|
-
it('Should show
|
|
244
|
+
it('Should show connection report data for user over the past day', async () => {
|
|
245
245
|
const sdk = await factory.getClientConnectionReports({
|
|
246
246
|
start: dayAgo,
|
|
247
247
|
end: now
|
|
@@ -249,7 +249,7 @@ describe('SDK reporting storage', async () => {
|
|
|
249
249
|
expect(sdk).toMatchSnapshot();
|
|
250
250
|
});
|
|
251
251
|
|
|
252
|
-
it('Should update a
|
|
252
|
+
it('Should update a connection event if its within a day', async () => {
|
|
253
253
|
const newConnectAt = new Date(
|
|
254
254
|
now.getFullYear(),
|
|
255
255
|
now.getMonth(),
|
|
@@ -268,7 +268,7 @@ describe('SDK reporting storage', async () => {
|
|
|
268
268
|
});
|
|
269
269
|
|
|
270
270
|
const sdk = await factory.db
|
|
271
|
-
.sql`SELECT * FROM
|
|
271
|
+
.sql`SELECT * FROM connection_report_events WHERE user_id = ${{ type: 'varchar', value: user_one.user_id }}`.rows<event_types.ClientConnection>();
|
|
272
272
|
expect(sdk).toHaveLength(1);
|
|
273
273
|
expect(new Date(sdk[0].connected_at).toISOString()).toEqual(newConnectAt.toISOString());
|
|
274
274
|
expect(new Date(sdk[0].jwt_exp!).toISOString()).toEqual(jwtExp.toISOString());
|
|
@@ -277,7 +277,7 @@ describe('SDK reporting storage', async () => {
|
|
|
277
277
|
expect(cleaned).toMatchSnapshot();
|
|
278
278
|
});
|
|
279
279
|
|
|
280
|
-
it('Should update a
|
|
280
|
+
it('Should update a connection event and make it disconnected', async () => {
|
|
281
281
|
const disconnectAt = new Date(
|
|
282
282
|
now.getFullYear(),
|
|
283
283
|
now.getMonth(),
|
|
@@ -297,14 +297,14 @@ describe('SDK reporting storage', async () => {
|
|
|
297
297
|
});
|
|
298
298
|
|
|
299
299
|
const sdk = await factory.db
|
|
300
|
-
.sql`SELECT * FROM
|
|
300
|
+
.sql`SELECT * FROM connection_report_events WHERE user_id = ${{ type: 'varchar', value: user_three.user_id }}`.rows<event_types.ClientConnection>();
|
|
301
301
|
expect(sdk).toHaveLength(1);
|
|
302
302
|
expect(new Date(sdk[0].disconnected_at!).toISOString()).toEqual(disconnectAt.toISOString());
|
|
303
303
|
const cleaned = removeVolatileFields(sdk);
|
|
304
304
|
expect(cleaned).toMatchSnapshot();
|
|
305
305
|
});
|
|
306
306
|
|
|
307
|
-
it('Should create a
|
|
307
|
+
it('Should create a connection event if its after a day', async () => {
|
|
308
308
|
const newConnectAt = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, now.getHours());
|
|
309
309
|
const jwtExp = new Date(newConnectAt.getFullYear(), newConnectAt.getMonth(), newConnectAt.getDate() + 1);
|
|
310
310
|
|
|
@@ -318,7 +318,7 @@ describe('SDK reporting storage', async () => {
|
|
|
318
318
|
});
|
|
319
319
|
|
|
320
320
|
const sdk = await factory.db
|
|
321
|
-
.sql`SELECT * FROM
|
|
321
|
+
.sql`SELECT * FROM connection_report_events WHERE user_id = ${{ type: 'varchar', value: user_week.user_id }}`.rows<event_types.ClientConnection>();
|
|
322
322
|
expect(sdk).toHaveLength(2);
|
|
323
323
|
const cleaned = removeVolatileFields(sdk);
|
|
324
324
|
expect(cleaned).toMatchSnapshot();
|