@powersync/service-module-postgres-storage 0.0.0-dev-20250819134004 → 0.0.0-dev-20250825132649

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.
Files changed (30) hide show
  1. package/CHANGELOG.md +11 -9
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/@types/storage/PostgresReportStorageFactory.d.ts +2 -2
  4. package/dist/@types/storage/storage-index.d.ts +0 -1
  5. package/dist/@types/{storage/PostgresTestStorageFactoryGenerator.d.ts → utils/test-utils.d.ts} +4 -4
  6. package/dist/@types/utils/utils-index.d.ts +1 -0
  7. package/dist/migrations/scripts/1684951997326-init.js +7 -5
  8. package/dist/migrations/scripts/1684951997326-init.js.map +1 -1
  9. package/dist/storage/PostgresReportStorageFactory.js +11 -63
  10. package/dist/storage/PostgresReportStorageFactory.js.map +1 -1
  11. package/dist/storage/storage-index.js +0 -1
  12. package/dist/storage/storage-index.js.map +1 -1
  13. package/dist/utils/db.js +1 -1
  14. package/dist/utils/db.js.map +1 -1
  15. package/dist/{storage/PostgresTestStorageFactoryGenerator.js → utils/test-utils.js} +7 -7
  16. package/dist/utils/test-utils.js.map +1 -0
  17. package/dist/utils/utils-index.js +1 -0
  18. package/dist/utils/utils-index.js.map +1 -1
  19. package/package.json +9 -9
  20. package/src/migrations/scripts/1684951997326-init.ts +7 -5
  21. package/src/storage/PostgresReportStorageFactory.ts +16 -66
  22. package/src/storage/storage-index.ts +0 -1
  23. package/src/utils/db.ts +1 -1
  24. package/src/{storage/PostgresTestStorageFactoryGenerator.ts → utils/test-utils.ts} +6 -6
  25. package/src/utils/utils-index.ts +1 -0
  26. package/test/src/__snapshots__/{sdk-report-storage.test.ts.snap → connection-report-storage.test.ts.snap} +80 -28
  27. package/test/src/__snapshots__/storage_sync.test.ts.snap +12 -11
  28. package/test/src/{sdk-report-storage.test.ts → connection-report-storage.test.ts} +33 -38
  29. package/test/src/util.ts +2 -1
  30. package/dist/storage/PostgresTestStorageFactoryGenerator.js.map +0 -1
@@ -16,8 +16,8 @@ export declare class PostgresReportStorageFactory implements storage.ReportStora
16
16
  private updateTableFilter;
17
17
  reportClientConnection(data: event_types.ClientConnectionBucketData): Promise<void>;
18
18
  reportClientDisconnection(data: event_types.ClientDisconnectionEventData): Promise<void>;
19
- getConnectedClients(data: event_types.ClientConnectionsRequest): Promise<event_types.ClientConnectionReport>;
20
- getClientConnectionReports(data: event_types.ClientConnectionReportRequest): Promise<event_types.ClientConnectionReport>;
19
+ getConnectedClients(): Promise<event_types.ClientConnectionReportResponse>;
20
+ getClientConnectionReports(data: event_types.ClientConnectionReportRequest): Promise<event_types.ClientConnectionReportResponse>;
21
21
  deleteOldConnectionData(data: event_types.DeleteOldConnectionData): Promise<void>;
22
22
  [Symbol.asyncDispose](): Promise<void>;
23
23
  prepareStatements(connection: pg_wire.PgConnection): Promise<void>;
@@ -2,4 +2,3 @@ export * from './PostgresBucketStorageFactory.js';
2
2
  export * from './PostgresCompactor.js';
3
3
  export * from './PostgresStorageProvider.js';
4
4
  export * from './PostgresSyncRulesStorage.js';
5
- export * from './PostgresTestStorageFactoryGenerator.js';
@@ -1,8 +1,8 @@
1
1
  import { framework, TestStorageOptions } from '@powersync/service-core';
2
2
  import { PostgresMigrationAgent } from '../migrations/PostgresMigrationAgent.js';
3
3
  import { PostgresStorageConfigDecoded } from '../types/types.js';
4
- import { PostgresBucketStorageFactory } from './PostgresBucketStorageFactory.js';
5
- import { PostgresReportStorageFactory } from './PostgresReportStorageFactory.js';
4
+ import { PostgresReportStorageFactory } from '../storage/PostgresReportStorageFactory.js';
5
+ import { PostgresBucketStorageFactory } from '../storage/PostgresBucketStorageFactory.js';
6
6
  export type PostgresTestStorageOptions = {
7
7
  url: string;
8
8
  /**
@@ -11,9 +11,9 @@ export type PostgresTestStorageOptions = {
11
11
  */
12
12
  migrationAgent?: (config: PostgresStorageConfigDecoded) => PostgresMigrationAgent;
13
13
  };
14
- export declare const postgresTestSetup: (factoryOptions: PostgresTestStorageOptions) => {
14
+ export declare function postgresTestSetup(factoryOptions: PostgresTestStorageOptions): {
15
15
  reportFactory: (options?: TestStorageOptions) => Promise<PostgresReportStorageFactory>;
16
16
  factory: (options?: TestStorageOptions) => Promise<PostgresBucketStorageFactory>;
17
17
  migrate: (direction: framework.migrations.Direction) => Promise<void>;
18
18
  };
19
- export declare const PostgresTestStorageFactoryGenerator: (factoryOptions: PostgresTestStorageOptions) => (options?: TestStorageOptions) => Promise<PostgresBucketStorageFactory>;
19
+ export declare function postgresTestStorageFactoryGenerator(factoryOptions: PostgresTestStorageOptions): (options?: TestStorageOptions) => Promise<PostgresBucketStorageFactory>;
@@ -2,3 +2,4 @@ export * from './bson.js';
2
2
  export * from './bucket-data.js';
3
3
  export * from './db.js';
4
4
  export * from './ts-codec.js';
5
+ export * as test_utils from './test-utils.js';
@@ -165,7 +165,7 @@ export const up = async (context) => {
165
165
  );
166
166
  `.execute();
167
167
  await db.sql `
168
- CREATE TABLE sdk_report_events (
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 ` CREATE INDEX sdk_list_index ON sdk_report_events (connected_at, jwt_exp, disconnected_at) `.execute();
180
- await db.sql `CREATE INDEX sdk_user_id_index ON sdk_report_events (user_id)`.execute();
181
- await db.sql `CREATE INDEX sdk_client_id_index ON sdk_report_events (client_id)`.execute();
182
- await db.sql `CREATE INDEX sdk_index ON sdk_report_events (sdk)`.execute();
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,6FAA6F,CAAC,OAAO,EAAE,CAAC;YAEpH,MAAM,EAAE,CAAC,GAAG,CAAA,+DAA+D,CAAC,OAAO,EAAE,CAAC;YAEtF,MAAM,EAAE,CAAC,GAAG,CAAA,mEAAmE,CAAC,OAAO,EAAE,CAAC;YAE1F,MAAM,EAAE,CAAC,GAAG,CAAA,mDAAmD,CAAC,OAAO,EAAE,CAAC;QAC5E,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"}
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"}
@@ -44,69 +44,17 @@ export class PostgresReportStorageFactory {
44
44
  sdks: result.sdks?.data || []
45
45
  };
46
46
  }
47
- async listConnectionsQuery(data) {
48
- const { range } = data;
49
- if (!range) {
50
- return this.db.sql `
51
- WITH
52
- filtered AS (
53
- SELECT
54
- *
55
- FROM
56
- sdk_report_events
57
- WHERE
58
- disconnected_at IS NULL
59
- AND jwt_exp > NOW()
60
- ),
61
- unique_users AS (
62
- SELECT
63
- COUNT(DISTINCT user_id) AS count
64
- FROM
65
- filtered
66
- ),
67
- sdk_versions_array AS (
68
- SELECT
69
- sdk,
70
- COUNT(DISTINCT client_id) AS clients,
71
- COUNT(DISTINCT user_id) AS users
72
- FROM
73
- filtered
74
- GROUP BY
75
- sdk
76
- )
77
- SELECT
78
- (
79
- SELECT
80
- COALESCE(count, 0)
81
- FROM
82
- unique_users
83
- ) AS users,
84
- (
85
- SELECT
86
- JSON_AGG(ROW_TO_JSON(s))
87
- FROM
88
- sdk_versions_array s
89
- ) AS sdks;
90
- `
91
- .decoded(SdkReporting)
92
- .first();
93
- }
94
- const endDate = data.range?.end ? new Date(data.range.end) : new Date();
95
- const startDate = new Date(range.start);
96
- const lt = endDate.toISOString();
97
- const gt = startDate.toISOString();
47
+ async listConnectionsQuery() {
98
48
  return await this.db.sql `
99
49
  WITH
100
50
  filtered AS (
101
51
  SELECT
102
52
  *
103
53
  FROM
104
- sdk_report_events
54
+ connection_report_events
105
55
  WHERE
106
56
  disconnected_at IS NULL
107
- AND jwt_exp > NOW()
108
- AND connected_at >= ${{ type: 1184, value: gt }}
109
- AND connected_at <= ${{ type: 1184, value: lt }}
57
+ AND jwt_exp > NOW() AT TIME ZONE 'UTC'
110
58
  ),
111
59
  unique_users AS (
112
60
  SELECT
@@ -156,7 +104,7 @@ export class PostgresReportStorageFactory {
156
104
  const { gte, lt } = this.updateTableFilter();
157
105
  const uuid = v4();
158
106
  const result = await this.db.sql `
159
- UPDATE sdk_report_events
107
+ UPDATE connection_report_events
160
108
  SET
161
109
  connected_at = ${{ type: 1184, value: connectIsoString }},
162
110
  sdk = ${{ type: 'varchar', value: sdk }},
@@ -172,7 +120,7 @@ export class PostgresReportStorageFactory {
172
120
  if (result.results[1].status === 'UPDATE 0') {
173
121
  await this.db.sql `
174
122
  INSERT INTO
175
- sdk_report_events (
123
+ connection_report_events (
176
124
  user_id,
177
125
  client_id,
178
126
  connected_at,
@@ -199,7 +147,7 @@ export class PostgresReportStorageFactory {
199
147
  const disconnectIsoString = disconnected_at.toISOString();
200
148
  const connectIsoString = connected_at.toISOString();
201
149
  await this.db.sql `
202
- UPDATE sdk_report_events
150
+ UPDATE connection_report_events
203
151
  SET
204
152
  disconnected_at = ${{ type: 1184, value: disconnectIsoString }},
205
153
  jwt_exp = NULL
@@ -209,8 +157,8 @@ export class PostgresReportStorageFactory {
209
157
  AND connected_at = ${{ type: 1184, value: connectIsoString }}
210
158
  `.execute();
211
159
  }
212
- async getConnectedClients(data) {
213
- const result = await this.listConnectionsQuery(data);
160
+ async getConnectedClients() {
161
+ const result = await this.listConnectionsQuery();
214
162
  return this.mapListCurrentConnectionsResponse(result);
215
163
  }
216
164
  async getClientConnectionReports(data) {
@@ -221,7 +169,7 @@ export class PostgresReportStorageFactory {
221
169
  SELECT
222
170
  *
223
171
  FROM
224
- sdk_report_events
172
+ connection_report_events
225
173
  WHERE
226
174
  connected_at >= ${{ type: 1184, value: start.toISOString() }}
227
175
  AND connected_at <= ${{ type: 1184, value: end.toISOString() }}
@@ -263,7 +211,7 @@ export class PostgresReportStorageFactory {
263
211
  async deleteOldConnectionData(data) {
264
212
  const { date } = data;
265
213
  const result = await this.db.sql `
266
- DELETE FROM sdk_report_events
214
+ DELETE FROM connection_report_events
267
215
  WHERE
268
216
  connected_at < ${{ type: 1184, value: date.toISOString() }}
269
217
  AND (
@@ -276,7 +224,7 @@ export class PostgresReportStorageFactory {
276
224
  `.execute();
277
225
  const deletedRows = toInteger(result.results[1].status.split(' ')[1] || '0');
278
226
  if (deletedRows > 0) {
279
- logger.info(`TTL from ${date.toISOString()}: ${deletedRows} PostgresSQL rows have been removed from sdk_report_events.`);
227
+ logger.info(`TTL from ${date.toISOString()}: ${deletedRows} PostgresSQL rows have been removed from connection_report_events.`);
280
228
  }
281
229
  }
282
230
  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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"}
@@ -2,5 +2,4 @@ export * from './PostgresBucketStorageFactory.js';
2
2
  export * from './PostgresCompactor.js';
3
3
  export * from './PostgresStorageProvider.js';
4
4
  export * from './PostgresSyncRulesStorage.js';
5
- export * from './PostgresTestStorageFactoryGenerator.js';
6
5
  //# sourceMappingURL=storage-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-index.js","sourceRoot":"","sources":["../../src/storage/storage-index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0CAA0C,CAAC"}
1
+ {"version":3,"file":"storage-index.js","sourceRoot":"","sources":["../../src/storage/storage-index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC"}
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 sdk_report_events`.execute();
22
+ await db.sql `DROP TABLE IF EXISTS connection_report_events`.execute();
23
23
  });
24
24
  };
25
25
  //# sourceMappingURL=db.js.map
@@ -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,wCAAwC,CAAC,OAAO,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
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"}
@@ -53,9 +53,9 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
53
53
  import { framework } from '@powersync/service-core';
54
54
  import { PostgresMigrationAgent } from '../migrations/PostgresMigrationAgent.js';
55
55
  import { normalizePostgresStorageConfig } from '../types/types.js';
56
- import { PostgresBucketStorageFactory } from './PostgresBucketStorageFactory.js';
57
- import { PostgresReportStorageFactory } from './PostgresReportStorageFactory.js';
58
- export const postgresTestSetup = (factoryOptions) => {
56
+ import { PostgresReportStorageFactory } from '../storage/PostgresReportStorageFactory.js';
57
+ import { PostgresBucketStorageFactory } from '../storage/PostgresBucketStorageFactory.js';
58
+ export function postgresTestSetup(factoryOptions) {
59
59
  const BASE_CONFIG = {
60
60
  type: 'postgresql',
61
61
  uri: factoryOptions.url,
@@ -130,8 +130,8 @@ export const postgresTestSetup = (factoryOptions) => {
130
130
  },
131
131
  migrate
132
132
  };
133
- };
134
- export const PostgresTestStorageFactoryGenerator = (factoryOptions) => {
133
+ }
134
+ export function postgresTestStorageFactoryGenerator(factoryOptions) {
135
135
  return postgresTestSetup(factoryOptions).factory;
136
- };
137
- //# sourceMappingURL=PostgresTestStorageFactoryGenerator.js.map
136
+ }
137
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/utils/test-utils.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ export * from './bson.js';
2
2
  export * from './bucket-data.js';
3
3
  export * from './db.js';
4
4
  export * from './ts-codec.js';
5
+ export * as test_utils from './test-utils.js';
5
6
  //# sourceMappingURL=utils-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-index.js","sourceRoot":"","sources":["../../src/utils/utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"utils-index.js","sourceRoot":"","sources":["../../src/utils/utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,OAAO,KAAK,UAAU,MAAM,iBAAiB,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-20250819134004",
5
+ "version": "0.0.0-dev-20250825132649",
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-20250819134004",
32
- "@powersync/lib-services-framework": "0.0.0-dev-20250819134004",
33
- "@powersync/service-core": "0.0.0-dev-20250819134004",
34
- "@powersync/service-types": "0.0.0-dev-20250819134004",
35
- "@powersync/service-core-tests": "0.0.0-dev-20250819134004",
36
- "@powersync/service-jpgwire": "0.0.0-dev-20250819134004",
37
- "@powersync/service-jsonbig": "0.0.0-dev-20250819134004",
38
- "@powersync/service-sync-rules": "0.0.0-dev-20250819134004"
31
+ "@powersync/lib-service-postgres": "0.0.0-dev-20250825132649",
32
+ "@powersync/lib-services-framework": "0.0.0-dev-20250825132649",
33
+ "@powersync/service-core": "0.0.0-dev-20250825132649",
34
+ "@powersync/service-types": "0.0.0-dev-20250825132649",
35
+ "@powersync/service-core-tests": "0.0.0-dev-20250825132649",
36
+ "@powersync/service-jpgwire": "0.0.0-dev-20250825132649",
37
+ "@powersync/service-jsonbig": "0.0.0-dev-20250825132649",
38
+ "@powersync/service-sync-rules": "0.0.0-dev-20250825132649"
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 sdk_report_events (
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` CREATE INDEX sdk_list_index ON sdk_report_events (connected_at, jwt_exp, disconnected_at) `.execute();
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 sdk_report_events (user_id)`.execute();
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 sdk_report_events (client_id)`.execute();
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 sdk_report_events (sdk)`.execute();
152
+ await db.sql`CREATE INDEX sdk_index ON connection_report_events (sdk)`.execute();
151
153
  });
152
154
  };
153
155
 
@@ -42,7 +42,9 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
42
42
  };
43
43
  }
44
44
 
45
- private mapListCurrentConnectionsResponse(result: SdkReportingDecoded | null): event_types.ClientConnectionReport {
45
+ private mapListCurrentConnectionsResponse(
46
+ result: SdkReportingDecoded | null
47
+ ): event_types.ClientConnectionReportResponse {
46
48
  if (!result) {
47
49
  return {
48
50
  users: 0,
@@ -54,69 +56,17 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
54
56
  sdks: result.sdks?.data || []
55
57
  };
56
58
  }
57
- private async listConnectionsQuery(data: event_types.ClientConnectionsRequest) {
58
- const { range } = data;
59
- if (!range) {
60
- return this.db.sql`
61
- WITH
62
- filtered AS (
63
- SELECT
64
- *
65
- FROM
66
- sdk_report_events
67
- WHERE
68
- disconnected_at IS NULL
69
- AND jwt_exp > NOW()
70
- ),
71
- unique_users AS (
72
- SELECT
73
- COUNT(DISTINCT user_id) AS count
74
- FROM
75
- filtered
76
- ),
77
- sdk_versions_array AS (
78
- SELECT
79
- sdk,
80
- COUNT(DISTINCT client_id) AS clients,
81
- COUNT(DISTINCT user_id) AS users
82
- FROM
83
- filtered
84
- GROUP BY
85
- sdk
86
- )
87
- SELECT
88
- (
89
- SELECT
90
- COALESCE(count, 0)
91
- FROM
92
- unique_users
93
- ) AS users,
94
- (
95
- SELECT
96
- JSON_AGG(ROW_TO_JSON(s))
97
- FROM
98
- sdk_versions_array s
99
- ) AS sdks;
100
- `
101
- .decoded(SdkReporting)
102
- .first();
103
- }
104
- const endDate = data.range?.end ? new Date(data.range.end) : new Date();
105
- const startDate = new Date(range.start);
106
- const lt = endDate.toISOString();
107
- const gt = startDate.toISOString();
59
+ private async listConnectionsQuery() {
108
60
  return await this.db.sql`
109
61
  WITH
110
62
  filtered AS (
111
63
  SELECT
112
64
  *
113
65
  FROM
114
- sdk_report_events
66
+ connection_report_events
115
67
  WHERE
116
68
  disconnected_at IS NULL
117
- AND jwt_exp > NOW()
118
- AND connected_at >= ${{ type: 1184, value: gt }}
119
- AND connected_at <= ${{ type: 1184, value: lt }}
69
+ AND jwt_exp > NOW() AT TIME ZONE 'UTC'
120
70
  ),
121
71
  unique_users AS (
122
72
  SELECT
@@ -164,11 +114,11 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
164
114
  async reportClientConnection(data: event_types.ClientConnectionBucketData): Promise<void> {
165
115
  const { sdk, connected_at, user_id, user_agent, jwt_exp, client_id } = data;
166
116
  const connectIsoString = connected_at.toISOString();
167
- const jwtExpIsoString = jwt_exp!.toISOString();
117
+ const jwtExpIsoString = jwt_exp.toISOString();
168
118
  const { gte, lt } = this.updateTableFilter();
169
119
  const uuid = v4();
170
120
  const result = await this.db.sql`
171
- UPDATE sdk_report_events
121
+ UPDATE connection_report_events
172
122
  SET
173
123
  connected_at = ${{ type: 1184, value: connectIsoString }},
174
124
  sdk = ${{ type: 'varchar', value: sdk }},
@@ -184,7 +134,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
184
134
  if (result.results[1].status === 'UPDATE 0') {
185
135
  await this.db.sql`
186
136
  INSERT INTO
187
- sdk_report_events (
137
+ connection_report_events (
188
138
  user_id,
189
139
  client_id,
190
140
  connected_at,
@@ -211,7 +161,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
211
161
  const disconnectIsoString = disconnected_at.toISOString();
212
162
  const connectIsoString = connected_at.toISOString();
213
163
  await this.db.sql`
214
- UPDATE sdk_report_events
164
+ UPDATE connection_report_events
215
165
  SET
216
166
  disconnected_at = ${{ type: 1184, value: disconnectIsoString }},
217
167
  jwt_exp = NULL
@@ -221,14 +171,14 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
221
171
  AND connected_at = ${{ type: 1184, value: connectIsoString }}
222
172
  `.execute();
223
173
  }
224
- async getConnectedClients(data: event_types.ClientConnectionsRequest): Promise<event_types.ClientConnectionReport> {
225
- const result = await this.listConnectionsQuery(data);
174
+ async getConnectedClients(): Promise<event_types.ClientConnectionReportResponse> {
175
+ const result = await this.listConnectionsQuery();
226
176
  return this.mapListCurrentConnectionsResponse(result);
227
177
  }
228
178
 
229
179
  async getClientConnectionReports(
230
180
  data: event_types.ClientConnectionReportRequest
231
- ): Promise<event_types.ClientConnectionReport> {
181
+ ): Promise<event_types.ClientConnectionReportResponse> {
232
182
  const { start, end } = data;
233
183
  const result = await this.db.sql`
234
184
  WITH
@@ -236,7 +186,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
236
186
  SELECT
237
187
  *
238
188
  FROM
239
- sdk_report_events
189
+ connection_report_events
240
190
  WHERE
241
191
  connected_at >= ${{ type: 1184, value: start.toISOString() }}
242
192
  AND connected_at <= ${{ type: 1184, value: end.toISOString() }}
@@ -278,7 +228,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
278
228
  async deleteOldConnectionData(data: event_types.DeleteOldConnectionData): Promise<void> {
279
229
  const { date } = data;
280
230
  const result = await this.db.sql`
281
- DELETE FROM sdk_report_events
231
+ DELETE FROM connection_report_events
282
232
  WHERE
283
233
  connected_at < ${{ type: 1184, value: date.toISOString() }}
284
234
  AND (
@@ -292,7 +242,7 @@ export class PostgresReportStorageFactory implements storage.ReportStorage {
292
242
  const deletedRows = toInteger(result.results[1].status.split(' ')[1] || '0');
293
243
  if (deletedRows > 0) {
294
244
  logger.info(
295
- `TTL from ${date.toISOString()}: ${deletedRows} PostgresSQL rows have been removed from sdk_report_events.`
245
+ `TTL from ${date.toISOString()}: ${deletedRows} PostgresSQL rows have been removed from connection_report_events.`
296
246
  );
297
247
  }
298
248
  }
@@ -2,4 +2,3 @@ export * from './PostgresBucketStorageFactory.js';
2
2
  export * from './PostgresCompactor.js';
3
3
  export * from './PostgresStorageProvider.js';
4
4
  export * from './PostgresSyncRulesStorage.js';
5
- export * from './PostgresTestStorageFactoryGenerator.js';
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 sdk_report_events`.execute();
26
+ await db.sql`DROP TABLE IF EXISTS connection_report_events`.execute();
27
27
  });
28
28
  };
@@ -1,8 +1,8 @@
1
1
  import { framework, PowerSyncMigrationManager, ServiceContext, TestStorageOptions } from '@powersync/service-core';
2
2
  import { PostgresMigrationAgent } from '../migrations/PostgresMigrationAgent.js';
3
3
  import { normalizePostgresStorageConfig, PostgresStorageConfigDecoded } from '../types/types.js';
4
- import { PostgresBucketStorageFactory } from './PostgresBucketStorageFactory.js';
5
- import { PostgresReportStorageFactory } from './PostgresReportStorageFactory.js';
4
+ import { PostgresReportStorageFactory } from '../storage/PostgresReportStorageFactory.js';
5
+ import { PostgresBucketStorageFactory } from '../storage/PostgresBucketStorageFactory.js';
6
6
 
7
7
  export type PostgresTestStorageOptions = {
8
8
  url: string;
@@ -13,7 +13,7 @@ export type PostgresTestStorageOptions = {
13
13
  migrationAgent?: (config: PostgresStorageConfigDecoded) => PostgresMigrationAgent;
14
14
  };
15
15
 
16
- export const postgresTestSetup = (factoryOptions: PostgresTestStorageOptions) => {
16
+ export function postgresTestSetup(factoryOptions: PostgresTestStorageOptions) {
17
17
  const BASE_CONFIG = {
18
18
  type: 'postgresql' as const,
19
19
  uri: factoryOptions.url,
@@ -82,8 +82,8 @@ export const postgresTestSetup = (factoryOptions: PostgresTestStorageOptions) =>
82
82
  },
83
83
  migrate
84
84
  };
85
- };
85
+ }
86
86
 
87
- export const PostgresTestStorageFactoryGenerator = (factoryOptions: PostgresTestStorageOptions) => {
87
+ export function postgresTestStorageFactoryGenerator(factoryOptions: PostgresTestStorageOptions) {
88
88
  return postgresTestSetup(factoryOptions).factory;
89
- };
89
+ }
@@ -2,3 +2,4 @@ export * from './bson.js';
2
2
  export * from './bucket-data.js';
3
3
  export * from './db.js';
4
4
  export * from './ts-codec.js';
5
+ export * as test_utils from './test-utils.js';