@powersync/service-module-postgres-storage 0.0.0-dev-20250730084038 → 0.0.0-dev-20250730091425

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.
@@ -90,10 +90,15 @@ export class PostgresReportStorageFactory {
90
90
  }
91
91
  }
92
92
  mapListCurrentConnectionsResponse(result) {
93
- console.log(result.sdks);
93
+ if (!result) {
94
+ return {
95
+ users: 0,
96
+ sdks: []
97
+ };
98
+ }
94
99
  return {
95
100
  users: Number(result.users),
96
- sdks: []
101
+ sdks: result.sdks?.data || []
97
102
  };
98
103
  }
99
104
  async listConnectionsQuery(data) {
@@ -207,138 +212,131 @@ export class PostgresReportStorageFactory {
207
212
  const jwtExpIsoString = jwt_exp.toISOString();
208
213
  const { gte, lt } = this.updateTableFilter();
209
214
  const uuid = v4();
210
- const result = await this.db.query({
211
- statement: `
212
- UPDATE sdk_report_events
213
- SET connect_at = $1::timestamptz,
214
- sdk = $2,
215
- user_agent = $3,
216
- jwt_exp = $4::timestamptz,
217
- disconnect_at = NULL
218
- WHERE user_id = $5
219
- AND client_id = $6
220
- AND connect_at >= $7::timestamptz
221
- AND connect_at < $8::timestamptz;
222
- `,
223
- params: [
224
- { type: 1184, value: connectIsoString },
225
- { type: 'varchar', value: sdk },
226
- { type: 'varchar', value: user_agent },
227
- { type: 1184, value: jwtExpIsoString },
228
- { type: 'varchar', value: user_id },
229
- { type: 'varchar', value: client_id },
230
- { type: 1184, value: gte },
231
- { type: 1184, value: lt }
232
- ]
233
- });
234
- if (result.rows.length === 0) {
235
- await this.db.query({
236
- statement: `
237
- INSERT INTO sdk_report_events (
238
- user_id, client_id, connect_at, sdk, user_agent, jwt_exp, id
239
- )
240
- SELECT $1, $2, $3::timestamptz, $4, $5, $6::timestamptz, $7
241
- WHERE NOT EXISTS (
242
- SELECT 1 FROM sdk_report_events
243
- WHERE user_id = $1
244
- AND client_id = $2
245
- AND connect_at >= $8::timestamptz
246
- AND connect_at < $9::timestamptz
247
- );`,
248
- params: [
249
- { type: 'varchar', value: user_id },
250
- { type: 'varchar', value: client_id },
251
- { type: 1184, value: connectIsoString },
252
- { type: 'varchar', value: sdk },
253
- { type: 'varchar', value: user_agent },
254
- { type: 1184, value: jwtExpIsoString },
255
- { type: 'varchar', value: uuid },
256
- { type: 1184, value: gte },
257
- { type: 1184, value: lt }
258
- ]
259
- });
215
+ const result = await this.db.sql `
216
+ UPDATE sdk_report_events
217
+ SET
218
+ connect_at = ${{ type: 1184, value: connectIsoString }},
219
+ sdk = ${{ type: 'varchar', value: sdk }},
220
+ user_agent = ${{ type: 'varchar', value: user_agent }},
221
+ jwt_exp = ${{ type: 1184, value: jwtExpIsoString }},
222
+ disconnect_at = NULL
223
+ WHERE
224
+ user_id = ${{ type: 'varchar', value: user_id }}
225
+ AND client_id = ${{ type: 'varchar', value: client_id }}
226
+ AND connect_at >= ${{ type: 1184, value: gte }}
227
+ AND connect_at < ${{ type: 1184, value: lt }};
228
+ `.rows();
229
+ if (result.length === 0) {
230
+ await this.db.sql `
231
+ INSERT INTO
232
+ sdk_report_events (
233
+ user_id,
234
+ client_id,
235
+ connect_at,
236
+ sdk,
237
+ user_agent,
238
+ jwt_exp,
239
+ id
240
+ )
241
+ SELECT
242
+ ${{ type: 'varchar', value: user_id }},
243
+ ${{ type: 'varchar', value: client_id }},
244
+ ${{ type: 1184, value: connectIsoString }},
245
+ ${{ type: 'varchar', value: sdk }},
246
+ ${{ type: 'varchar', value: user_agent }},
247
+ ${{ type: 1184, value: jwtExpIsoString }},
248
+ ${{ type: 'varchar', value: uuid }}
249
+ WHERE
250
+ NOT EXISTS (
251
+ SELECT
252
+ 1
253
+ FROM
254
+ sdk_report_events
255
+ WHERE
256
+ user_id = ${{ type: 'varchar', value: user_id }}
257
+ AND client_id = ${{ type: 'varchar', value: client_id }}
258
+ AND connect_at >= ${{ type: 1184, value: gte }}
259
+ AND connect_at < ${{ type: 1184, value: lt }}
260
+ );
261
+ `.execute();
260
262
  }
261
263
  }
262
264
  async reportSdkDisconnect(data) {
263
265
  const { user_id, client_id, disconnect_at } = data;
264
266
  const disconnectIsoString = disconnect_at.toISOString();
265
267
  const { gte, lt } = this.updateTableFilter();
266
- const query = `
268
+ await this.db.sql `
267
269
  UPDATE sdk_report_events
268
270
  SET
269
- disconnect_at = CAST($1 AS TIMESTAMP WITH TIME ZONE),
271
+ disconnect_at = ${{ type: 1184, value: disconnectIsoString }},
270
272
  jwt_exp = NULL
271
- WHERE user_id = $2
272
- AND client_id = $3
273
- AND connect_at >= CAST($4 AS TIMESTAMP WITH TIME ZONE)
274
- AND connect_at < CAST($5 AS TIMESTAMP WITH TIME ZONE);`;
275
- const result = await this.db.query({
276
- statement: query,
277
- params: [
278
- { type: 1184, value: disconnectIsoString },
279
- { type: 'varchar', value: user_id },
280
- { type: 'varchar', value: client_id },
281
- { type: 1184, value: gte },
282
- { type: 1184, value: lt }
283
- ]
284
- });
273
+ WHERE
274
+ user_id = ${{ type: 'varchar', value: user_id }}
275
+ AND client_id = ${{ type: 'varchar', value: client_id }}
276
+ AND connect_at >= ${{ type: 1184, value: gte }}
277
+ AND connect_at < ${{ type: 1184, value: lt }};
278
+ `.execute();
285
279
  }
286
280
  async listCurrentConnections(data) {
287
281
  const result = await this.listConnectionsQuery(data);
288
- if (!result) {
289
- return {
290
- users: 0,
291
- sdks: []
292
- };
293
- }
294
282
  return this.mapListCurrentConnectionsResponse(result);
295
283
  }
296
284
  async scrapeSdkData(data) {
297
285
  const { timeframe, interval } = data;
298
286
  const { lt, gt } = this.timeFrameQuery(timeframe, interval);
299
- const query = `
300
- WITH filtered AS (
301
- SELECT *
302
- FROM sdk_report_events
303
- WHERE connect_at > CAST($1 AS TIMESTAMP WITH TIME ZONE)
304
- AND connect_at <= CAST($2 AS TIMESTAMP WITH TIME ZONE)
305
- ),
306
- unique_users AS (
307
- SELECT COUNT(DISTINCT user_id) AS count
308
- FROM filtered
309
- ),
310
- sdk_versions_array AS (
311
- SELECT sdk,
312
- COUNT(*) AS total,
287
+ const result = await this.db.sql `
288
+ WITH
289
+ filtered AS (
290
+ SELECT
291
+ *
292
+ FROM
293
+ sdk_report_events
294
+ WHERE
295
+ connect_at > ${{ type: 1184, value: gt }}
296
+ AND connect_at <= ${{ type: 1184, value: lt }}
297
+ ),
298
+ unique_users AS (
299
+ SELECT
300
+ COUNT(DISTINCT user_id) AS count
301
+ FROM
302
+ filtered
303
+ ),
304
+ sdk_versions_array AS (
305
+ SELECT
306
+ sdk,
313
307
  COUNT(DISTINCT client_id) AS clients,
314
308
  COUNT(DISTINCT user_id) AS users
315
- FROM filtered
316
- GROUP BY sdk
317
- )
318
- SELECT COALESCE(u.count, 0) AS users, JSON_AGG(ROW_TO_JSON(s)) AS sdks
319
- FROM unique_users u
320
- JOIN sdk_versions_array s ON TRUE;
321
- `;
322
- const result = await this.db.query({ statement: query, params: [{ value: gt }, { value: lt }] });
323
- console.log(result.rows);
324
- return {
325
- users: 0,
326
- sdks: []
327
- };
309
+ FROM
310
+ filtered
311
+ GROUP BY
312
+ sdk
313
+ )
314
+ SELECT
315
+ COALESCE(u.count, 0) AS users,
316
+ JSON_AGG(ROW_TO_JSON(s)) AS sdks
317
+ FROM
318
+ unique_users u
319
+ JOIN sdk_versions_array s ON TRUE;
320
+ `
321
+ .decoded(SdkReporting)
322
+ .first();
323
+ return this.mapListCurrentConnectionsResponse(result);
328
324
  }
329
325
  async deleteOldSdkData(data) {
330
326
  const { timeframe, interval } = data;
331
327
  const { lt } = this.timeFrameDeleteQuery(timeframe, interval);
332
- const query = `
333
- DELETE FROM sdk_report_events
334
- WHERE connect_at < CAST($1 AS TIMESTAMP WITH TIME ZONE)
335
- AND (
336
- disconnect_at IS NOT NULL
337
- OR (jwt_exp < NOW() AND disconnect_at IS NULL)
338
- );
339
- `;
340
- const params = [{ value: lt }];
341
- await this.db.query({ statement: query, params });
328
+ await this.db.sql `
329
+ DELETE FROM sdk_report_events
330
+ WHERE
331
+ connect_at < ${{ type: 1184, value: lt }}
332
+ AND (
333
+ disconnect_at IS NOT NULL
334
+ OR (
335
+ jwt_exp < NOW()
336
+ AND disconnect_at IS NULL
337
+ )
338
+ );
339
+ `.execute();
342
340
  }
343
341
  async [Symbol.asyncDispose]() {
344
342
  await this.db[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/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-20250730084038",
5
+ "version": "0.0.0-dev-20250730091425",
6
6
  "main": "dist/index.js",
7
7
  "type": "module",
8
8
  "publishConfig": {
@@ -29,12 +29,12 @@
29
29
  "p-defer": "^4.0.1",
30
30
  "ts-codec": "^1.3.0",
31
31
  "uuid": "^11.1.0",
32
- "@powersync/lib-service-postgres": "0.0.0-dev-20250730084038",
33
- "@powersync/lib-services-framework": "0.0.0-dev-20250730084038",
34
- "@powersync/service-core": "0.0.0-dev-20250730084038",
35
- "@powersync/service-types": "0.0.0-dev-20250730084038",
36
- "@powersync/service-core-tests": "0.0.0-dev-20250730084038",
37
- "@powersync/service-jpgwire": "0.0.0-dev-20250730084038",
32
+ "@powersync/lib-service-postgres": "0.0.0-dev-20250730091425",
33
+ "@powersync/lib-services-framework": "0.0.0-dev-20250730091425",
34
+ "@powersync/service-core": "0.0.0-dev-20250730091425",
35
+ "@powersync/service-types": "0.0.0-dev-20250730091425",
36
+ "@powersync/service-core-tests": "0.0.0-dev-20250730091425",
37
+ "@powersync/service-jpgwire": "0.0.0-dev-20250730091425",
38
38
  "@powersync/service-sync-rules": "0.27.0"
39
39
  },
40
40
  "devDependencies": {
@@ -109,11 +109,16 @@ export class PostgresReportStorageFactory implements storage.ReportStorageFactor
109
109
  }
110
110
  }
111
111
 
112
- private mapListCurrentConnectionsResponse(result: SdkReportingDecoded): ListCurrentConnections {
113
- console.log(result.sdks);
112
+ private mapListCurrentConnectionsResponse(result: SdkReportingDecoded | null): ListCurrentConnections {
113
+ if (!result) {
114
+ return {
115
+ users: 0,
116
+ sdks: []
117
+ };
118
+ }
114
119
  return {
115
120
  users: Number(result.users),
116
- sdks: []
121
+ sdks: result.sdks?.data || []
117
122
  };
118
123
  }
119
124
  private async listConnectionsQuery(data: event_types.ListCurrentConnectionsRequest) {
@@ -229,140 +234,132 @@ export class PostgresReportStorageFactory implements storage.ReportStorageFactor
229
234
  const jwtExpIsoString = jwt_exp!.toISOString();
230
235
  const { gte, lt } = this.updateTableFilter();
231
236
  const uuid = v4();
232
- const result = await this.db.query({
233
- statement: `
234
- UPDATE sdk_report_events
235
- SET connect_at = $1::timestamptz,
236
- sdk = $2,
237
- user_agent = $3,
238
- jwt_exp = $4::timestamptz,
239
- disconnect_at = NULL
240
- WHERE user_id = $5
241
- AND client_id = $6
242
- AND connect_at >= $7::timestamptz
243
- AND connect_at < $8::timestamptz;
244
- `,
245
- params: [
246
- { type: 1184, value: connectIsoString },
247
- { type: 'varchar', value: sdk },
248
- { type: 'varchar', value: user_agent },
249
- { type: 1184, value: jwtExpIsoString },
250
- { type: 'varchar', value: user_id },
251
- { type: 'varchar', value: client_id },
252
- { type: 1184, value: gte },
253
- { type: 1184, value: lt }
254
- ]
255
- });
256
- if (result.rows.length === 0) {
257
- await this.db.query({
258
- statement: `
259
- INSERT INTO sdk_report_events (
260
- user_id, client_id, connect_at, sdk, user_agent, jwt_exp, id
261
- )
262
- SELECT $1, $2, $3::timestamptz, $4, $5, $6::timestamptz, $7
263
- WHERE NOT EXISTS (
264
- SELECT 1 FROM sdk_report_events
265
- WHERE user_id = $1
266
- AND client_id = $2
267
- AND connect_at >= $8::timestamptz
268
- AND connect_at < $9::timestamptz
269
- );`,
270
- params: [
271
- { type: 'varchar', value: user_id },
272
- { type: 'varchar', value: client_id },
273
- { type: 1184, value: connectIsoString },
274
- { type: 'varchar', value: sdk },
275
- { type: 'varchar', value: user_agent },
276
- { type: 1184, value: jwtExpIsoString },
277
- { type: 'varchar', value: uuid },
278
- { type: 1184, value: gte },
279
- { type: 1184, value: lt }
280
- ]
281
- });
237
+ const result = await this.db.sql`
238
+ UPDATE sdk_report_events
239
+ SET
240
+ connect_at = ${{ type: 1184, value: connectIsoString }},
241
+ sdk = ${{ type: 'varchar', value: sdk }},
242
+ user_agent = ${{ type: 'varchar', value: user_agent }},
243
+ jwt_exp = ${{ type: 1184, value: jwtExpIsoString }},
244
+ disconnect_at = NULL
245
+ WHERE
246
+ user_id = ${{ type: 'varchar', value: user_id }}
247
+ AND client_id = ${{ type: 'varchar', value: client_id }}
248
+ AND connect_at >= ${{ type: 1184, value: gte }}
249
+ AND connect_at < ${{ type: 1184, value: lt }};
250
+ `.rows();
251
+ if (result.length === 0) {
252
+ await this.db.sql`
253
+ INSERT INTO
254
+ sdk_report_events (
255
+ user_id,
256
+ client_id,
257
+ connect_at,
258
+ sdk,
259
+ user_agent,
260
+ jwt_exp,
261
+ id
262
+ )
263
+ SELECT
264
+ ${{ type: 'varchar', value: user_id }},
265
+ ${{ type: 'varchar', value: client_id }},
266
+ ${{ type: 1184, value: connectIsoString }},
267
+ ${{ type: 'varchar', value: sdk }},
268
+ ${{ type: 'varchar', value: user_agent }},
269
+ ${{ type: 1184, value: jwtExpIsoString }},
270
+ ${{ type: 'varchar', value: uuid }}
271
+ WHERE
272
+ NOT EXISTS (
273
+ SELECT
274
+ 1
275
+ FROM
276
+ sdk_report_events
277
+ WHERE
278
+ user_id = ${{ type: 'varchar', value: user_id }}
279
+ AND client_id = ${{ type: 'varchar', value: client_id }}
280
+ AND connect_at >= ${{ type: 1184, value: gte }}
281
+ AND connect_at < ${{ type: 1184, value: lt }}
282
+ );
283
+ `.execute();
282
284
  }
283
285
  }
284
286
  async reportSdkDisconnect(data: SdkDisconnectEventData): Promise<void> {
285
287
  const { user_id, client_id, disconnect_at } = data;
286
288
  const disconnectIsoString = disconnect_at.toISOString();
287
289
  const { gte, lt } = this.updateTableFilter();
288
- const query = `
290
+ await this.db.sql`
289
291
  UPDATE sdk_report_events
290
292
  SET
291
- disconnect_at = CAST($1 AS TIMESTAMP WITH TIME ZONE),
293
+ disconnect_at = ${{ type: 1184, value: disconnectIsoString }},
292
294
  jwt_exp = NULL
293
- WHERE user_id = $2
294
- AND client_id = $3
295
- AND connect_at >= CAST($4 AS TIMESTAMP WITH TIME ZONE)
296
- AND connect_at < CAST($5 AS TIMESTAMP WITH TIME ZONE);`;
297
-
298
- const result = await this.db.query({
299
- statement: query,
300
- params: [
301
- { type: 1184, value: disconnectIsoString },
302
- { type: 'varchar', value: user_id },
303
- { type: 'varchar', value: client_id },
304
- { type: 1184, value: gte },
305
- { type: 1184, value: lt }
306
- ]
307
- });
295
+ WHERE
296
+ user_id = ${{ type: 'varchar', value: user_id }}
297
+ AND client_id = ${{ type: 'varchar', value: client_id }}
298
+ AND connect_at >= ${{ type: 1184, value: gte }}
299
+ AND connect_at < ${{ type: 1184, value: lt }};
300
+ `.execute();
308
301
  }
309
302
  async listCurrentConnections(data: ListCurrentConnectionsRequest): Promise<ListCurrentConnections> {
310
303
  const result = await this.listConnectionsQuery(data);
311
- if (!result) {
312
- return {
313
- users: 0,
314
- sdks: []
315
- };
316
- }
317
304
  return this.mapListCurrentConnectionsResponse(result);
318
305
  }
319
306
 
320
307
  async scrapeSdkData(data: ScrapeSdkDataRequest): Promise<ListCurrentConnections> {
321
308
  const { timeframe, interval } = data;
322
309
  const { lt, gt } = this.timeFrameQuery(timeframe, interval);
323
- const query = `
324
- WITH filtered AS (
325
- SELECT *
326
- FROM sdk_report_events
327
- WHERE connect_at > CAST($1 AS TIMESTAMP WITH TIME ZONE)
328
- AND connect_at <= CAST($2 AS TIMESTAMP WITH TIME ZONE)
329
- ),
330
- unique_users AS (
331
- SELECT COUNT(DISTINCT user_id) AS count
332
- FROM filtered
333
- ),
334
- sdk_versions_array AS (
335
- SELECT sdk,
336
- COUNT(*) AS total,
310
+ const result = await this.db.sql`
311
+ WITH
312
+ filtered AS (
313
+ SELECT
314
+ *
315
+ FROM
316
+ sdk_report_events
317
+ WHERE
318
+ connect_at > ${{ type: 1184, value: gt }}
319
+ AND connect_at <= ${{ type: 1184, value: lt }}
320
+ ),
321
+ unique_users AS (
322
+ SELECT
323
+ COUNT(DISTINCT user_id) AS count
324
+ FROM
325
+ filtered
326
+ ),
327
+ sdk_versions_array AS (
328
+ SELECT
329
+ sdk,
337
330
  COUNT(DISTINCT client_id) AS clients,
338
331
  COUNT(DISTINCT user_id) AS users
339
- FROM filtered
340
- GROUP BY sdk
341
- )
342
- SELECT COALESCE(u.count, 0) AS users, JSON_AGG(ROW_TO_JSON(s)) AS sdks
343
- FROM unique_users u
344
- JOIN sdk_versions_array s ON TRUE;
345
- `;
346
- const result = await this.db.query({ statement: query, params: [{ value: gt }, { value: lt }] });
347
- console.log(result.rows);
348
- return {
349
- users: 0,
350
- sdks: []
351
- };
332
+ FROM
333
+ filtered
334
+ GROUP BY
335
+ sdk
336
+ )
337
+ SELECT
338
+ COALESCE(u.count, 0) AS users,
339
+ JSON_AGG(ROW_TO_JSON(s)) AS sdks
340
+ FROM
341
+ unique_users u
342
+ JOIN sdk_versions_array s ON TRUE;
343
+ `
344
+ .decoded(SdkReporting)
345
+ .first();
346
+ return this.mapListCurrentConnectionsResponse(result);
352
347
  }
353
348
  async deleteOldSdkData(data: DeleteOldSdkData): Promise<void> {
354
349
  const { timeframe, interval } = data;
355
350
  const { lt } = this.timeFrameDeleteQuery(timeframe, interval);
356
- const query = `
357
- DELETE FROM sdk_report_events
358
- WHERE connect_at < CAST($1 AS TIMESTAMP WITH TIME ZONE)
359
- AND (
360
- disconnect_at IS NOT NULL
361
- OR (jwt_exp < NOW() AND disconnect_at IS NULL)
362
- );
363
- `;
364
- const params = [{ value: lt }];
365
- await this.db.query({ statement: query, params });
351
+ await this.db.sql`
352
+ DELETE FROM sdk_report_events
353
+ WHERE
354
+ connect_at < ${{ type: 1184, value: lt }}
355
+ AND (
356
+ disconnect_at IS NOT NULL
357
+ OR (
358
+ jwt_exp < NOW()
359
+ AND disconnect_at IS NULL
360
+ )
361
+ );
362
+ `.execute();
366
363
  }
367
364
 
368
365
  async [Symbol.asyncDispose]() {