@powersync/service-module-mongodb-storage 0.12.12 → 0.12.14
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 +30 -0
- package/dist/storage/MongoBucketStorage.js +1 -0
- package/dist/storage/MongoBucketStorage.js.map +1 -1
- package/dist/storage/MongoReportStorage.d.ts +1 -0
- package/dist/storage/MongoReportStorage.js +13 -0
- package/dist/storage/MongoReportStorage.js.map +1 -1
- package/dist/storage/implementation/MongoBucketBatch.d.ts +3 -0
- package/dist/storage/implementation/MongoBucketBatch.js +29 -2
- package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.d.ts +1 -0
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.js +2 -0
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.js.map +1 -1
- package/dist/storage/implementation/MongoSyncBucketStorage.js +2 -2
- package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/PersistedBatch.d.ts +6 -1
- package/dist/storage/implementation/PersistedBatch.js +7 -0
- package/dist/storage/implementation/PersistedBatch.js.map +1 -1
- package/dist/storage/implementation/models.d.ts +1 -0
- package/dist/utils/util.d.ts +7 -0
- package/dist/utils/util.js +32 -0
- package/dist/utils/util.js.map +1 -1
- package/package.json +7 -7
- package/src/storage/MongoBucketStorage.ts +1 -0
- package/src/storage/MongoReportStorage.ts +22 -0
- package/src/storage/implementation/MongoBucketBatch.ts +37 -2
- package/src/storage/implementation/MongoPersistedSyncRulesContent.ts +2 -0
- package/src/storage/implementation/MongoSyncBucketStorage.ts +2 -3
- package/src/storage/implementation/PersistedBatch.ts +9 -0
- package/src/storage/implementation/models.ts +2 -0
- package/src/utils/util.ts +40 -0
- package/test/src/__snapshots__/connection-report-storage.test.ts.snap +238 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistedBatch.js","sourceRoot":"","sources":["../../../src/storage/implementation/PersistedBatch.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PersistedBatch.js","sourceRoot":"","sources":["../../../src/storage/implementation/PersistedBatch.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/util.d.ts
CHANGED
|
@@ -22,3 +22,10 @@ export declare function readSingleBatch<T>(cursor: mongo.AbstractCursor<T>): Pro
|
|
|
22
22
|
export declare function mapOpEntry(row: BucketDataDocument): utils.OplogEntry;
|
|
23
23
|
export declare function replicaIdToSubkey(table: bson.ObjectId, id: storage.ReplicaId): string;
|
|
24
24
|
export declare function setSessionSnapshotTime(session: mongo.ClientSession, time: bson.Timestamp): void;
|
|
25
|
+
export declare const createPaginatedConnectionQuery: <T extends mongo.Document>(query: mongo.Filter<T>, collection: mongo.Collection<T>, limit: number, cursor?: string) => Promise<{
|
|
26
|
+
items: mongo.WithId<T>[];
|
|
27
|
+
count: number;
|
|
28
|
+
/** Setting the cursor to the connected at date of the last item in the list */
|
|
29
|
+
cursor: any;
|
|
30
|
+
more: boolean;
|
|
31
|
+
}>;
|
package/dist/utils/util.js
CHANGED
|
@@ -106,4 +106,36 @@ export function setSessionSnapshotTime(session, time) {
|
|
|
106
106
|
throw new ServiceAssertionError(`Session snapshotTime is already set`);
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
+
export const createPaginatedConnectionQuery = async (query, collection, limit, cursor) => {
|
|
110
|
+
const createQuery = (cursor) => {
|
|
111
|
+
if (!cursor) {
|
|
112
|
+
return query;
|
|
113
|
+
}
|
|
114
|
+
const connected_at = query.connected_at
|
|
115
|
+
? { $lt: new Date(cursor), $gte: query.connected_at.$gte }
|
|
116
|
+
: { $lt: new Date(cursor) };
|
|
117
|
+
return {
|
|
118
|
+
...query,
|
|
119
|
+
connected_at
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
const findCursor = collection.find(createQuery(cursor), {
|
|
123
|
+
sort: {
|
|
124
|
+
/** We are sorting by connected at date descending to match cursor Postgres implementation */
|
|
125
|
+
connected_at: -1
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
const items = await findCursor.limit(limit).toArray();
|
|
129
|
+
const count = items.length;
|
|
130
|
+
/** The returned total has been defaulted to 0 due to the overhead using documentCount from the mogo driver.
|
|
131
|
+
* cursor.count has been deprecated.
|
|
132
|
+
* */
|
|
133
|
+
return {
|
|
134
|
+
items,
|
|
135
|
+
count,
|
|
136
|
+
/** Setting the cursor to the connected at date of the last item in the list */
|
|
137
|
+
cursor: count === limit ? items[items.length - 1].connected_at.toISOString() : undefined,
|
|
138
|
+
more: !(count !== limit)
|
|
139
|
+
};
|
|
140
|
+
};
|
|
109
141
|
//# sourceMappingURL=util.js.map
|
package/dist/utils/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/utils/util.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.12.
|
|
5
|
+
"version": "0.12.14",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"license": "FSL-1.1-ALv2",
|
|
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.6.
|
|
31
|
-
"@powersync/lib-services-framework": "0.7.
|
|
32
|
-
"@powersync/service-core": "1.
|
|
30
|
+
"@powersync/lib-service-mongodb": "0.6.14",
|
|
31
|
+
"@powersync/lib-services-framework": "0.7.12",
|
|
32
|
+
"@powersync/service-core": "1.18.0",
|
|
33
33
|
"@powersync/service-jsonbig": "0.17.12",
|
|
34
|
-
"@powersync/service-sync-rules": "0.29.
|
|
35
|
-
"@powersync/service-types": "0.13.
|
|
34
|
+
"@powersync/service-sync-rules": "0.29.8",
|
|
35
|
+
"@powersync/service-types": "0.13.3"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@powersync/service-core-tests": "0.12.
|
|
38
|
+
"@powersync/service-core-tests": "0.12.14"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc -b",
|
|
@@ -2,6 +2,7 @@ import { storage } from '@powersync/service-core';
|
|
|
2
2
|
import { event_types } from '@powersync/service-types';
|
|
3
3
|
import { PowerSyncMongo } from './implementation/db.js';
|
|
4
4
|
import { logger } from '@powersync/lib-services-framework';
|
|
5
|
+
import { createPaginatedConnectionQuery } from '../utils/util.js';
|
|
5
6
|
|
|
6
7
|
export class MongoReportStorage implements storage.ReportStorage {
|
|
7
8
|
public readonly db: PowerSyncMongo;
|
|
@@ -43,6 +44,27 @@ export class MongoReportStorage implements storage.ReportStorage {
|
|
|
43
44
|
return result[0];
|
|
44
45
|
}
|
|
45
46
|
|
|
47
|
+
async getGeneralClientConnectionAnalytics(
|
|
48
|
+
data: event_types.ClientConnectionAnalyticsRequest
|
|
49
|
+
): Promise<event_types.PaginatedResponse<event_types.ClientConnection>> {
|
|
50
|
+
const { cursor, date_range } = data;
|
|
51
|
+
const limit = data?.limit || 100;
|
|
52
|
+
|
|
53
|
+
const connected_at = date_range ? { connected_at: { $lte: date_range.end, $gte: date_range.start } } : undefined;
|
|
54
|
+
const user_id = data.user_id != null ? { user_id: data.user_id } : undefined;
|
|
55
|
+
const client_id = data.client_id != null ? { client_id: data.client_id } : undefined;
|
|
56
|
+
return (await createPaginatedConnectionQuery(
|
|
57
|
+
{
|
|
58
|
+
...client_id,
|
|
59
|
+
...user_id,
|
|
60
|
+
...connected_at
|
|
61
|
+
},
|
|
62
|
+
this.db.connection_report_events,
|
|
63
|
+
limit,
|
|
64
|
+
cursor
|
|
65
|
+
)) as event_types.PaginatedResponse<event_types.ClientConnection>;
|
|
66
|
+
}
|
|
67
|
+
|
|
46
68
|
async reportClientConnection(data: event_types.ClientConnectionBucketData): Promise<void> {
|
|
47
69
|
const updateFilter = this.updateDocFilter(data.user_id, data.client_id!);
|
|
48
70
|
await this.db.connection_report_events.findOneAndUpdate(
|
|
@@ -82,6 +82,7 @@ export class MongoBucketBatch
|
|
|
82
82
|
private batch: OperationBatch | null = null;
|
|
83
83
|
private write_checkpoint_batch: storage.CustomWriteCheckpointOptions[] = [];
|
|
84
84
|
private markRecordUnavailable: BucketStorageMarkRecordUnavailable | undefined;
|
|
85
|
+
private clearedError = false;
|
|
85
86
|
|
|
86
87
|
/**
|
|
87
88
|
* Last LSN received associated with a checkpoint.
|
|
@@ -146,6 +147,10 @@ export class MongoBucketBatch
|
|
|
146
147
|
return this.last_checkpoint_lsn;
|
|
147
148
|
}
|
|
148
149
|
|
|
150
|
+
get noCheckpointBeforeLsn() {
|
|
151
|
+
return this.no_checkpoint_before_lsn;
|
|
152
|
+
}
|
|
153
|
+
|
|
149
154
|
async flush(options?: storage.BatchBucketFlushOptions): Promise<storage.FlushedResult | null> {
|
|
150
155
|
let result: storage.FlushedResult | null = null;
|
|
151
156
|
// One flush may be split over multiple transactions.
|
|
@@ -243,6 +248,8 @@ export class MongoBucketBatch
|
|
|
243
248
|
let resumeBatch: OperationBatch | null = null;
|
|
244
249
|
let transactionSize = 0;
|
|
245
250
|
|
|
251
|
+
let didFlush = false;
|
|
252
|
+
|
|
246
253
|
// Now batch according to the sizes
|
|
247
254
|
// This is a single batch if storeCurrentData == false
|
|
248
255
|
for await (let b of batch.batched(sizes)) {
|
|
@@ -292,7 +299,8 @@ export class MongoBucketBatch
|
|
|
292
299
|
if (persistedBatch!.shouldFlushTransaction()) {
|
|
293
300
|
// Transaction is getting big.
|
|
294
301
|
// Flush, and resume in a new transaction.
|
|
295
|
-
await persistedBatch!.flush(this.db, this.session, options);
|
|
302
|
+
const { flushedAny } = await persistedBatch!.flush(this.db, this.session, options);
|
|
303
|
+
didFlush ||= flushedAny;
|
|
296
304
|
persistedBatch = null;
|
|
297
305
|
// Computing our current progress is a little tricky here, since
|
|
298
306
|
// we're stopping in the middle of a batch.
|
|
@@ -303,10 +311,15 @@ export class MongoBucketBatch
|
|
|
303
311
|
|
|
304
312
|
if (persistedBatch) {
|
|
305
313
|
transactionSize = persistedBatch.currentSize;
|
|
306
|
-
await persistedBatch.flush(this.db, this.session, options);
|
|
314
|
+
const { flushedAny } = await persistedBatch.flush(this.db, this.session, options);
|
|
315
|
+
didFlush ||= flushedAny;
|
|
307
316
|
}
|
|
308
317
|
}
|
|
309
318
|
|
|
319
|
+
if (didFlush) {
|
|
320
|
+
await this.clearError();
|
|
321
|
+
}
|
|
322
|
+
|
|
310
323
|
return resumeBatch?.hasData() ? resumeBatch : null;
|
|
311
324
|
}
|
|
312
325
|
|
|
@@ -714,6 +727,7 @@ export class MongoBucketBatch
|
|
|
714
727
|
last_keepalive_ts: now,
|
|
715
728
|
snapshot_done: true,
|
|
716
729
|
last_fatal_error: null,
|
|
730
|
+
last_fatal_error_ts: null,
|
|
717
731
|
keepalive_op: null
|
|
718
732
|
};
|
|
719
733
|
|
|
@@ -848,6 +862,7 @@ export class MongoBucketBatch
|
|
|
848
862
|
last_checkpoint_lsn: lsn,
|
|
849
863
|
snapshot_done: true,
|
|
850
864
|
last_fatal_error: null,
|
|
865
|
+
last_fatal_error_ts: null,
|
|
851
866
|
last_keepalive_ts: new Date()
|
|
852
867
|
},
|
|
853
868
|
$unset: { snapshot_lsn: 1 }
|
|
@@ -1075,6 +1090,26 @@ export class MongoBucketBatch
|
|
|
1075
1090
|
});
|
|
1076
1091
|
}
|
|
1077
1092
|
|
|
1093
|
+
protected async clearError(): Promise<void> {
|
|
1094
|
+
// No need to clear an error more than once per batch, since an error would always result in restarting the batch.
|
|
1095
|
+
if (this.clearedError) {
|
|
1096
|
+
return;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
await this.db.sync_rules.updateOne(
|
|
1100
|
+
{
|
|
1101
|
+
_id: this.group_id
|
|
1102
|
+
},
|
|
1103
|
+
{
|
|
1104
|
+
$set: {
|
|
1105
|
+
last_fatal_error: null,
|
|
1106
|
+
last_fatal_error_ts: null
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
);
|
|
1110
|
+
this.clearedError = true;
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1078
1113
|
/**
|
|
1079
1114
|
* Gets relevant {@link SqlEventDescriptor}s for the given {@link SourceTable}
|
|
1080
1115
|
*/
|
|
@@ -13,6 +13,7 @@ export class MongoPersistedSyncRulesContent implements storage.PersistedSyncRule
|
|
|
13
13
|
public readonly sync_rules_content: string;
|
|
14
14
|
public readonly last_checkpoint_lsn: string | null;
|
|
15
15
|
public readonly last_fatal_error: string | null;
|
|
16
|
+
public readonly last_fatal_error_ts: Date | null;
|
|
16
17
|
public readonly last_keepalive_ts: Date | null;
|
|
17
18
|
public readonly last_checkpoint_ts: Date | null;
|
|
18
19
|
public readonly active: boolean;
|
|
@@ -29,6 +30,7 @@ export class MongoPersistedSyncRulesContent implements storage.PersistedSyncRule
|
|
|
29
30
|
// Handle legacy values
|
|
30
31
|
this.slot_name = doc.slot_name ?? `powersync_${this.id}`;
|
|
31
32
|
this.last_fatal_error = doc.last_fatal_error;
|
|
33
|
+
this.last_fatal_error_ts = doc.last_fatal_error_ts;
|
|
32
34
|
this.last_checkpoint_ts = doc.last_checkpoint_ts;
|
|
33
35
|
this.last_keepalive_ts = doc.last_keepalive_ts;
|
|
34
36
|
this.active = doc.state == 'ACTIVE';
|
|
@@ -39,7 +39,6 @@ import { MongoParameterCompactor } from './MongoParameterCompactor.js';
|
|
|
39
39
|
import { MongoWriteCheckpointAPI } from './MongoWriteCheckpointAPI.js';
|
|
40
40
|
import { idPrefixFilter, mapOpEntry, readSingleBatch, setSessionSnapshotTime } from '../../utils/util.js';
|
|
41
41
|
|
|
42
|
-
|
|
43
42
|
export interface MongoSyncBucketStorageOptions {
|
|
44
43
|
checksumOptions?: MongoChecksumOptions;
|
|
45
44
|
}
|
|
@@ -648,11 +647,11 @@ export class MongoSyncBucketStorage
|
|
|
648
647
|
},
|
|
649
648
|
{
|
|
650
649
|
$set: {
|
|
651
|
-
last_fatal_error: message
|
|
650
|
+
last_fatal_error: message,
|
|
651
|
+
last_fatal_error_ts: new Date()
|
|
652
652
|
}
|
|
653
653
|
}
|
|
654
654
|
);
|
|
655
|
-
await this.db.notifyCheckpoint();
|
|
656
655
|
}
|
|
657
656
|
|
|
658
657
|
async compact(options?: storage.CompactOptions) {
|
|
@@ -351,12 +351,21 @@ export class PersistedBatch {
|
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
353
|
|
|
354
|
+
const stats = {
|
|
355
|
+
bucketDataCount: this.bucketData.length,
|
|
356
|
+
parameterDataCount: this.bucketParameters.length,
|
|
357
|
+
currentDataCount: this.currentData.length,
|
|
358
|
+
flushedAny: flushedSomething
|
|
359
|
+
};
|
|
360
|
+
|
|
354
361
|
this.bucketData = [];
|
|
355
362
|
this.bucketParameters = [];
|
|
356
363
|
this.currentData = [];
|
|
357
364
|
this.bucketStates.clear();
|
|
358
365
|
this.currentSize = 0;
|
|
359
366
|
this.debugLastOpId = null;
|
|
367
|
+
|
|
368
|
+
return stats;
|
|
360
369
|
}
|
|
361
370
|
|
|
362
371
|
private getBucketStateUpdates(): mongo.AnyBulkWriteOperation<BucketStateDocument>[] {
|
package/src/utils/util.ts
CHANGED
|
@@ -114,3 +114,43 @@ export function setSessionSnapshotTime(session: mongo.ClientSession, time: bson.
|
|
|
114
114
|
throw new ServiceAssertionError(`Session snapshotTime is already set`);
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
+
|
|
118
|
+
export const createPaginatedConnectionQuery = async <T extends mongo.Document>(
|
|
119
|
+
query: mongo.Filter<T>,
|
|
120
|
+
collection: mongo.Collection<T>,
|
|
121
|
+
limit: number,
|
|
122
|
+
cursor?: string
|
|
123
|
+
) => {
|
|
124
|
+
const createQuery = (cursor?: string) => {
|
|
125
|
+
if (!cursor) {
|
|
126
|
+
return query;
|
|
127
|
+
}
|
|
128
|
+
const connected_at = query.connected_at
|
|
129
|
+
? { $lt: new Date(cursor), $gte: query.connected_at.$gte }
|
|
130
|
+
: { $lt: new Date(cursor) };
|
|
131
|
+
return {
|
|
132
|
+
...query,
|
|
133
|
+
connected_at
|
|
134
|
+
} as mongo.Filter<T>;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
const findCursor = collection.find(createQuery(cursor), {
|
|
138
|
+
sort: {
|
|
139
|
+
/** We are sorting by connected at date descending to match cursor Postgres implementation */
|
|
140
|
+
connected_at: -1
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
const items = await findCursor.limit(limit).toArray();
|
|
145
|
+
const count = items.length;
|
|
146
|
+
/** The returned total has been defaulted to 0 due to the overhead using documentCount from the mogo driver.
|
|
147
|
+
* cursor.count has been deprecated.
|
|
148
|
+
* */
|
|
149
|
+
return {
|
|
150
|
+
items,
|
|
151
|
+
count,
|
|
152
|
+
/** Setting the cursor to the connected at date of the last item in the list */
|
|
153
|
+
cursor: count === limit ? items[items.length - 1].connected_at.toISOString() : undefined,
|
|
154
|
+
more: !(count !== limit)
|
|
155
|
+
};
|
|
156
|
+
};
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
exports[`Connection reporting storage > Should create a connection report if its after a day 1`] = `
|
|
4
4
|
[
|
|
5
5
|
{
|
|
6
|
-
"client_id": "
|
|
6
|
+
"client_id": "client_one",
|
|
7
7
|
"sdk": "powersync-js/1.24.5",
|
|
8
8
|
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
9
9
|
"user_id": "user_week",
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
|
-
"client_id": "
|
|
12
|
+
"client_id": "client_one",
|
|
13
13
|
"sdk": "powersync-js/1.24.5",
|
|
14
14
|
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
15
15
|
"user_id": "user_week",
|
|
@@ -213,3 +213,239 @@ exports[`Report storage tests > Should show currently connected users 1`] = `
|
|
|
213
213
|
"users": 2,
|
|
214
214
|
}
|
|
215
215
|
`;
|
|
216
|
+
|
|
217
|
+
exports[`Report storage tests > Should show paginated response of all connections of specified client_id 1`] = `
|
|
218
|
+
{
|
|
219
|
+
"count": 1,
|
|
220
|
+
"cursor": undefined,
|
|
221
|
+
"items": [
|
|
222
|
+
{
|
|
223
|
+
"client_id": "client_two",
|
|
224
|
+
"sdk": "powersync-js/1.21.1",
|
|
225
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Chromium/138 linux",
|
|
226
|
+
"user_id": "user_two",
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
"more": false,
|
|
230
|
+
}
|
|
231
|
+
`;
|
|
232
|
+
|
|
233
|
+
exports[`Report storage tests > Should show paginated response of all connections with a limit 1`] = `
|
|
234
|
+
{
|
|
235
|
+
"count": 4,
|
|
236
|
+
"cursor": "<removed-for-snapshot>",
|
|
237
|
+
"items": [
|
|
238
|
+
{
|
|
239
|
+
"client_id": "client_one",
|
|
240
|
+
"sdk": "powersync-dart/1.6.4",
|
|
241
|
+
"user_agent": "powersync-dart/1.6.4 Dart (flutter-web) Chrome/128 android",
|
|
242
|
+
"user_id": "user_one",
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"client_id": "client_four",
|
|
246
|
+
"sdk": "powersync-js/1.21.4",
|
|
247
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
248
|
+
"user_id": "user_four",
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"client_id": "",
|
|
252
|
+
"sdk": "unknown",
|
|
253
|
+
"user_agent": "Dart (flutter-web) Chrome/128 android",
|
|
254
|
+
"user_id": "user_one",
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"client_id": "client_two",
|
|
258
|
+
"sdk": "powersync-js/1.21.1",
|
|
259
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Chromium/138 linux",
|
|
260
|
+
"user_id": "user_two",
|
|
261
|
+
},
|
|
262
|
+
],
|
|
263
|
+
"more": true,
|
|
264
|
+
}
|
|
265
|
+
`;
|
|
266
|
+
|
|
267
|
+
exports[`Report storage tests > Should show paginated response of all connections with a limit 2`] = `
|
|
268
|
+
{
|
|
269
|
+
"count": 4,
|
|
270
|
+
"cursor": undefined,
|
|
271
|
+
"items": [
|
|
272
|
+
{
|
|
273
|
+
"client_id": "client_three",
|
|
274
|
+
"sdk": "powersync-js/1.21.2",
|
|
275
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
276
|
+
"user_id": "user_three",
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"client_id": "client_one",
|
|
280
|
+
"sdk": "powersync-js/1.24.5",
|
|
281
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
282
|
+
"user_id": "user_week",
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"client_id": "client_month",
|
|
286
|
+
"sdk": "powersync-js/1.23.6",
|
|
287
|
+
"user_agent": "powersync-js/1.23.0 powersync-web Firefox/141 linux",
|
|
288
|
+
"user_id": "user_month",
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"client_id": "client_expired",
|
|
292
|
+
"sdk": "powersync-js/1.23.7",
|
|
293
|
+
"user_agent": "powersync-js/1.23.0 powersync-web Firefox/141 linux",
|
|
294
|
+
"user_id": "user_expired",
|
|
295
|
+
},
|
|
296
|
+
],
|
|
297
|
+
"more": false,
|
|
298
|
+
}
|
|
299
|
+
`;
|
|
300
|
+
|
|
301
|
+
exports[`Report storage tests > Should show paginated response of all connections with a limit with date range 1`] = `
|
|
302
|
+
{
|
|
303
|
+
"count": 4,
|
|
304
|
+
"cursor": "<removed-for-snapshot>",
|
|
305
|
+
"items": [
|
|
306
|
+
{
|
|
307
|
+
"client_id": "",
|
|
308
|
+
"sdk": "unknown",
|
|
309
|
+
"user_agent": "Dart (flutter-web) Chrome/128 android",
|
|
310
|
+
"user_id": "user_one",
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"client_id": "client_two",
|
|
314
|
+
"sdk": "powersync-js/1.21.1",
|
|
315
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Chromium/138 linux",
|
|
316
|
+
"user_id": "user_two",
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"client_id": "client_three",
|
|
320
|
+
"sdk": "powersync-js/1.21.2",
|
|
321
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
322
|
+
"user_id": "user_three",
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"client_id": "client_one",
|
|
326
|
+
"sdk": "powersync-js/1.24.5",
|
|
327
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
328
|
+
"user_id": "user_week",
|
|
329
|
+
},
|
|
330
|
+
],
|
|
331
|
+
"more": true,
|
|
332
|
+
}
|
|
333
|
+
`;
|
|
334
|
+
|
|
335
|
+
exports[`Report storage tests > Should show paginated response of all connections with a limit with date range 2`] = `
|
|
336
|
+
{
|
|
337
|
+
"count": 2,
|
|
338
|
+
"cursor": undefined,
|
|
339
|
+
"items": [
|
|
340
|
+
{
|
|
341
|
+
"client_id": "",
|
|
342
|
+
"sdk": "unknown",
|
|
343
|
+
"user_agent": "Dart (flutter-web) Chrome/128 android",
|
|
344
|
+
"user_id": "user_one",
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"client_id": "client_two",
|
|
348
|
+
"sdk": "powersync-js/1.21.1",
|
|
349
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Chromium/138 linux",
|
|
350
|
+
"user_id": "user_two",
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"client_id": "client_three",
|
|
354
|
+
"sdk": "powersync-js/1.21.2",
|
|
355
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
356
|
+
"user_id": "user_three",
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"client_id": "client_one",
|
|
360
|
+
"sdk": "powersync-js/1.24.5",
|
|
361
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
362
|
+
"user_id": "user_week",
|
|
363
|
+
},
|
|
364
|
+
],
|
|
365
|
+
"more": false,
|
|
366
|
+
}
|
|
367
|
+
`;
|
|
368
|
+
|
|
369
|
+
exports[`Report storage tests > Should show paginated response of connections of specified user_id 1`] = `
|
|
370
|
+
{
|
|
371
|
+
"count": 2,
|
|
372
|
+
"cursor": undefined,
|
|
373
|
+
"items": [
|
|
374
|
+
{
|
|
375
|
+
"client_id": "client_one",
|
|
376
|
+
"sdk": "powersync-dart/1.6.4",
|
|
377
|
+
"user_agent": "powersync-dart/1.6.4 Dart (flutter-web) Chrome/128 android",
|
|
378
|
+
"user_id": "user_one",
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"client_id": "",
|
|
382
|
+
"sdk": "unknown",
|
|
383
|
+
"user_agent": "Dart (flutter-web) Chrome/128 android",
|
|
384
|
+
"user_id": "user_one",
|
|
385
|
+
},
|
|
386
|
+
],
|
|
387
|
+
"more": false,
|
|
388
|
+
}
|
|
389
|
+
`;
|
|
390
|
+
|
|
391
|
+
exports[`Report storage tests > Should show paginated response of connections over a date range 1`] = `
|
|
392
|
+
{
|
|
393
|
+
"count": 6,
|
|
394
|
+
"cursor": undefined,
|
|
395
|
+
"items": [
|
|
396
|
+
{
|
|
397
|
+
"client_id": "client_one",
|
|
398
|
+
"sdk": "powersync-dart/1.6.4",
|
|
399
|
+
"user_agent": "powersync-dart/1.6.4 Dart (flutter-web) Chrome/128 android",
|
|
400
|
+
"user_id": "user_one",
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"client_id": "client_four",
|
|
404
|
+
"sdk": "powersync-js/1.21.4",
|
|
405
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
406
|
+
"user_id": "user_four",
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"client_id": "client_two",
|
|
410
|
+
"sdk": "powersync-js/1.21.1",
|
|
411
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Chromium/138 linux",
|
|
412
|
+
"user_id": "user_two",
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"client_id": "",
|
|
416
|
+
"sdk": "unknown",
|
|
417
|
+
"user_agent": "Dart (flutter-web) Chrome/128 android",
|
|
418
|
+
"user_id": "user_one",
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"client_id": "client_three",
|
|
422
|
+
"sdk": "powersync-js/1.21.2",
|
|
423
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
424
|
+
"user_id": "user_three",
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"client_id": "client_one",
|
|
428
|
+
"sdk": "powersync-js/1.24.5",
|
|
429
|
+
"user_agent": "powersync-js/1.21.0 powersync-web Firefox/141 linux",
|
|
430
|
+
"user_id": "user_week",
|
|
431
|
+
},
|
|
432
|
+
],
|
|
433
|
+
"more": false,
|
|
434
|
+
}
|
|
435
|
+
`;
|
|
436
|
+
|
|
437
|
+
exports[`Report storage tests > Should show paginated response of connections over a date range of specified client_id and user_id 1`] = `
|
|
438
|
+
{
|
|
439
|
+
"count": 1,
|
|
440
|
+
"cursor": undefined,
|
|
441
|
+
"items": [
|
|
442
|
+
{
|
|
443
|
+
"client_id": "client_one",
|
|
444
|
+
"sdk": "powersync-dart/1.6.4",
|
|
445
|
+
"user_agent": "powersync-dart/1.6.4 Dart (flutter-web) Chrome/128 android",
|
|
446
|
+
"user_id": "user_one",
|
|
447
|
+
},
|
|
448
|
+
],
|
|
449
|
+
"more": false,
|
|
450
|
+
}
|
|
451
|
+
`;
|