@powersync/service-module-postgres-storage 0.0.0-dev-20261005120023 → 0.0.0-dev-20261007110800
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 +22 -13
- package/dist/storage/PostgresBucketStorageFactory.d.ts +1 -1
- package/dist/storage/PostgresBucketStorageFactory.js +6 -6
- package/dist/storage/PostgresBucketStorageFactory.js.map +1 -1
- package/dist/storage/PostgresStorageProvider.js +1 -1
- package/dist/storage/PostgresStorageProvider.js.map +1 -1
- package/dist/storage/sync-rules/PostgresPersistedSyncConfigContent.d.ts +2 -3
- package/dist/storage/sync-rules/PostgresPersistedSyncConfigContent.js +4 -6
- package/dist/storage/sync-rules/PostgresPersistedSyncConfigContent.js.map +1 -1
- package/dist/utils/test-utils.d.ts +1 -2
- package/dist/utils/test-utils.js +3 -3
- package/dist/utils/test-utils.js.map +1 -1
- package/package.json +8 -8
- package/src/storage/PostgresBucketStorageFactory.ts +6 -9
- package/src/storage/PostgresStorageProvider.ts +6 -9
- package/src/storage/sync-rules/PostgresPersistedSyncConfigContent.ts +12 -17
- package/src/utils/test-utils.ts +10 -23
- package/test/src/migrations.test.ts +4 -8
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,35 +1,44 @@
|
|
|
1
1
|
# @powersync/service-module-postgres-storage
|
|
2
2
|
|
|
3
|
-
## 0.0.0-dev-
|
|
3
|
+
## 0.0.0-dev-20261007110800
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
- ef5e87c: Add `config.source_table_options` to edition 3 sync configs
|
|
7
|
+
- ef5e87c: Add `config.source_table_options` to edition 3 sync configs, including MongoDB pre-filtering expressions. Generate editor schemas with examples and report validation errors at their YAML source locations.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
MongoDB replication pre-filtering is only available in the Team and Enterprise editions. For example:
|
|
10
10
|
|
|
11
11
|
```yaml
|
|
12
12
|
config:
|
|
13
13
|
edition: 3
|
|
14
14
|
source_table_options:
|
|
15
|
-
|
|
15
|
+
orders:
|
|
16
|
+
mongodb_filter_expression:
|
|
17
|
+
$and:
|
|
18
|
+
- $eq: ['$$doc.active', true]
|
|
19
|
+
- $in: ['$$doc.status', ['pending', 'shipped']]
|
|
16
20
|
streams:
|
|
17
|
-
|
|
18
|
-
query: SELECT * FROM
|
|
21
|
+
orders:
|
|
22
|
+
query: SELECT * FROM orders
|
|
19
23
|
```
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
Validation and deployment reject filters when the feature is unavailable. Changing source-table options requires replacement processing when deploying a new sync config.
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
Source capability validation returns structured `ValidationDiagnostic` entries, allowing multiple fatal issues and
|
|
28
|
+
advisory warnings. Deployment and reprocessing reject fatal diagnostics while validation continues collecting
|
|
29
|
+
independent findings. Existing `ReplicationError` consumers retain the same diagnostic shape.
|
|
24
30
|
|
|
25
31
|
- Updated dependencies [ef5e87c]
|
|
26
32
|
- Updated dependencies [e703ca5]
|
|
27
33
|
- Updated dependencies [324093e]
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
- @powersync/
|
|
31
|
-
- @powersync/service-
|
|
32
|
-
- @powersync/
|
|
34
|
+
- Updated dependencies [286b0f8]
|
|
35
|
+
- Updated dependencies [57ef2f4]
|
|
36
|
+
- @powersync/service-sync-rules@0.0.0-dev-20261007110800
|
|
37
|
+
- @powersync/service-core@0.0.0-dev-20261007110800
|
|
38
|
+
- @powersync/service-types@0.0.0-dev-20261007110800
|
|
39
|
+
- @powersync/lib-services-framework@0.0.0-dev-20261007110800
|
|
40
|
+
- @powersync/service-jpgwire@0.0.0-dev-20261007110800
|
|
41
|
+
- @powersync/lib-service-postgres@0.0.0-dev-20261007110800
|
|
33
42
|
|
|
34
43
|
## 0.19.2
|
|
35
44
|
|
|
@@ -15,7 +15,7 @@ export declare class PostgresBucketStorageFactory extends storage.BucketStorageF
|
|
|
15
15
|
readonly db: lib_postgres.DatabaseClient;
|
|
16
16
|
readonly replicationStreamNamePrefix: string;
|
|
17
17
|
private activeStorageCache;
|
|
18
|
-
constructor(options: PostgresBucketStorageOptions
|
|
18
|
+
constructor(options: PostgresBucketStorageOptions);
|
|
19
19
|
[Symbol.asyncDispose](): Promise<void>;
|
|
20
20
|
prepareStatements(connection: pg_wire.PgConnection): Promise<void>;
|
|
21
21
|
getInstance(replicationStream: storage.PersistedReplicationStream, options?: GetIntanceOptions): storage.SyncRulesBucketStorage;
|
|
@@ -13,8 +13,8 @@ export class PostgresBucketStorageFactory extends storage.BucketStorageFactory {
|
|
|
13
13
|
db;
|
|
14
14
|
replicationStreamNamePrefix;
|
|
15
15
|
activeStorageCache;
|
|
16
|
-
constructor(options
|
|
17
|
-
super(
|
|
16
|
+
constructor(options) {
|
|
17
|
+
super();
|
|
18
18
|
this.options = options;
|
|
19
19
|
this.db = new lib_postgres.DatabaseClient({
|
|
20
20
|
config: options.config,
|
|
@@ -195,7 +195,7 @@ export class PostgresBucketStorageFactory extends storage.BucketStorageFactory {
|
|
|
195
195
|
`
|
|
196
196
|
.decoded(models.SyncRules)
|
|
197
197
|
.first();
|
|
198
|
-
return new PostgresPersistedReplicationStream(this.db, newSyncRulesRow
|
|
198
|
+
return new PostgresPersistedReplicationStream(this.db, newSyncRulesRow);
|
|
199
199
|
});
|
|
200
200
|
}
|
|
201
201
|
/**
|
|
@@ -317,7 +317,7 @@ export class PostgresBucketStorageFactory extends storage.BucketStorageFactory {
|
|
|
317
317
|
`
|
|
318
318
|
.decoded(models.SyncRules)
|
|
319
319
|
.rows();
|
|
320
|
-
return rows.map((row) => new PostgresPersistedReplicationStream(this.db, row
|
|
320
|
+
return rows.map((row) => new PostgresPersistedReplicationStream(this.db, row));
|
|
321
321
|
}
|
|
322
322
|
async getStoppedReplicationStreams() {
|
|
323
323
|
const rows = await this.db.sql `
|
|
@@ -330,10 +330,10 @@ export class PostgresBucketStorageFactory extends storage.BucketStorageFactory {
|
|
|
330
330
|
`
|
|
331
331
|
.decoded(models.SyncRules)
|
|
332
332
|
.rows();
|
|
333
|
-
return rows.map((row) => new PostgresPersistedReplicationStream(this.db, row
|
|
333
|
+
return rows.map((row) => new PostgresPersistedReplicationStream(this.db, row));
|
|
334
334
|
}
|
|
335
335
|
resolvedSyncConfigFromRow(row, options = {}) {
|
|
336
|
-
const stream = new PostgresPersistedReplicationStream(this.db, row
|
|
336
|
+
const stream = new PostgresPersistedReplicationStream(this.db, row);
|
|
337
337
|
const content = stream.syncConfigContent[0];
|
|
338
338
|
const thisFactory = this;
|
|
339
339
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresBucketStorageFactory.js","sourceRoot":"","sources":["../../src/storage/PostgresBucketStorageFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAmC,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,kCAAkC,EAAE,MAAM,oDAAoD,CAAC;AASxG,MAAM,OAAO,4BAA6B,SAAQ,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"PostgresBucketStorageFactory.js","sourceRoot":"","sources":["../../src/storage/PostgresBucketStorageFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ export class PostgresStorageProvider {
|
|
|
22
22
|
replicationStreamNamePrefix: options.resolvedConfig.slot_name_prefix,
|
|
23
23
|
checksumCacheTtlMs: options.resolvedConfig.api_parameters.bucket_count_cache_ttl_minutes * 60_000,
|
|
24
24
|
defaultStorageVersion: decodedConfig.default_storage_version
|
|
25
|
-
}
|
|
25
|
+
});
|
|
26
26
|
const reportStorageFactory = new PostgresReportStorage({
|
|
27
27
|
config: normalizedConfig
|
|
28
28
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresStorageProvider.js","sourceRoot":"","sources":["../../src/storage/PostgresStorageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,OAAO,uBAAuB;IAClC,IAAI,IAAI;QACN,OAAO,YAAY,CAAC,wBAAwB,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAkC;QACjD,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;QAEnC,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;QACnC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,gFAAgF;YAChF,MAAM,IAAI,KAAK,CACb,8DAA8D,OAAO,CAAC,IAAI,QAAQ,YAAY,CAAC,wBAAwB,EAAE,CAC1H,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,aAAa,CAAC,CAAC;QACvE,MAAM,cAAc,GAAG,IAAI,4BAA4B,
|
|
1
|
+
{"version":3,"file":"PostgresStorageProvider.js","sourceRoot":"","sources":["../../src/storage/PostgresStorageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,OAAO,uBAAuB;IAClC,IAAI,IAAI;QACN,OAAO,YAAY,CAAC,wBAAwB,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAkC;QACjD,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;QAEnC,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;QACnC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,gFAAgF;YAChF,MAAM,IAAI,KAAK,CACb,8DAA8D,OAAO,CAAC,IAAI,QAAQ,YAAY,CAAC,wBAAwB,EAAE,CAC1H,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,aAAa,CAAC,CAAC;QACvE,MAAM,cAAc,GAAG,IAAI,4BAA4B,CAAC;YACtD,MAAM,EAAE,gBAAgB;YACxB,2BAA2B,EAAE,OAAO,CAAC,cAAc,CAAC,gBAAgB;YACpE,kBAAkB,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,8BAA8B,GAAG,MAAM;YACjG,qBAAqB,EAAE,aAAa,CAAC,uBAAuB;SAC7D,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,IAAI,qBAAqB,CAAC;YACrD,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC;QAEH,OAAO;YACL,aAAa,EAAE,oBAAoB;YACnC,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,MAAM,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/C,MAAM,oBAAoB,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,CAAC;YACD,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,MAAM,CAAC,IAAI,CAAC,kCAAkC,gBAAgB,CAAC,QAAQ,KAAK,CAAC,CAAC;gBAC9E,MAAM,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;gBACpC,MAAM,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/C,MAAM,oBAAoB,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrD,OAAO,IAAI,CAAC;YACd,CAAC;SAC8B,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -3,16 +3,15 @@ import { storage } from '@powersync/service-core';
|
|
|
3
3
|
import { models } from '../../types/types.js';
|
|
4
4
|
export declare class PostgresPersistedSyncConfigContent extends storage.PersistedSyncConfigContent {
|
|
5
5
|
private db;
|
|
6
|
-
constructor(db: lib_postgres.DatabaseClient, row: models.SyncRulesDecoded
|
|
6
|
+
constructor(db: lib_postgres.DatabaseClient, row: models.SyncRulesDecoded);
|
|
7
7
|
getSyncConfigStatus(): Promise<storage.PersistedSyncConfigStatus | null>;
|
|
8
8
|
}
|
|
9
9
|
export declare class PostgresPersistedReplicationStream extends storage.PersistedReplicationStream {
|
|
10
10
|
private db;
|
|
11
11
|
private readonly row;
|
|
12
|
-
private readonly syncConfigParser;
|
|
13
12
|
current_lock: storage.ReplicationLock | null;
|
|
14
13
|
readonly syncConfigContent: readonly PostgresPersistedSyncConfigContent[];
|
|
15
|
-
constructor(db: lib_postgres.DatabaseClient, row: models.SyncRulesDecoded
|
|
14
|
+
constructor(db: lib_postgres.DatabaseClient, row: models.SyncRulesDecoded);
|
|
16
15
|
parsed(options: storage.ParseSyncConfigOptions): storage.ParsedSyncConfigSet;
|
|
17
16
|
lock(): Promise<storage.ReplicationLock>;
|
|
18
17
|
}
|
|
@@ -4,7 +4,7 @@ import { storage } from '@powersync/service-core';
|
|
|
4
4
|
import { models } from '../../types/types.js';
|
|
5
5
|
export class PostgresPersistedSyncConfigContent extends storage.PersistedSyncConfigContent {
|
|
6
6
|
db;
|
|
7
|
-
constructor(db, row
|
|
7
|
+
constructor(db, row) {
|
|
8
8
|
super({
|
|
9
9
|
replicationStreamId: Number(row.id),
|
|
10
10
|
sync_rules_content: row.content,
|
|
@@ -13,7 +13,7 @@ export class PostgresPersistedSyncConfigContent extends storage.PersistedSyncCon
|
|
|
13
13
|
storageVersion: row.storage_version ?? storage.LEGACY_STORAGE_VERSION,
|
|
14
14
|
syncConfigState: row.state,
|
|
15
15
|
version_label: row.version_label ?? undefined
|
|
16
|
-
}
|
|
16
|
+
});
|
|
17
17
|
this.db = db;
|
|
18
18
|
}
|
|
19
19
|
async getSyncConfigStatus() {
|
|
@@ -45,10 +45,9 @@ function syncConfigStatusFromRow(row) {
|
|
|
45
45
|
export class PostgresPersistedReplicationStream extends storage.PersistedReplicationStream {
|
|
46
46
|
db;
|
|
47
47
|
row;
|
|
48
|
-
syncConfigParser;
|
|
49
48
|
current_lock = null;
|
|
50
49
|
syncConfigContent;
|
|
51
|
-
constructor(db, row
|
|
50
|
+
constructor(db, row) {
|
|
52
51
|
super({
|
|
53
52
|
replicationStreamId: Number(row.id),
|
|
54
53
|
replicationStreamName: row.slot_name,
|
|
@@ -57,11 +56,10 @@ export class PostgresPersistedReplicationStream extends storage.PersistedReplica
|
|
|
57
56
|
});
|
|
58
57
|
this.db = db;
|
|
59
58
|
this.row = row;
|
|
60
|
-
this.syncConfigParser = syncConfigParser;
|
|
61
59
|
if (this.storageVersion >= storage.STORAGE_VERSION_4) {
|
|
62
60
|
throw new ServiceError(ErrorCode.PSYNC_S1005, `Unsupported storage version ${this.storageVersion} for PostgreSQL storage`);
|
|
63
61
|
}
|
|
64
|
-
this.syncConfigContent = [new PostgresPersistedSyncConfigContent(this.db, this.row
|
|
62
|
+
this.syncConfigContent = [new PostgresPersistedSyncConfigContent(this.db, this.row)];
|
|
65
63
|
}
|
|
66
64
|
parsed(options) {
|
|
67
65
|
return this.syncConfigContent[0].parsed(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresPersistedSyncConfigContent.js","sourceRoot":"","sources":["../../../src/storage/sync-rules/PostgresPersistedSyncConfigContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,OAAO,kCAAmC,SAAQ,OAAO,CAAC,0BAA0B;IAE9E;IADV,YACU,EAA+B,EACvC,GAA4B
|
|
1
|
+
{"version":3,"file":"PostgresPersistedSyncConfigContent.js","sourceRoot":"","sources":["../../../src/storage/sync-rules/PostgresPersistedSyncConfigContent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { framework,
|
|
1
|
+
import { framework, TestStorageOptions } from '@powersync/service-core';
|
|
2
2
|
import { PostgresMigrationAgent } from '../migrations/PostgresMigrationAgent.js';
|
|
3
3
|
import { PostgresBucketStorageFactory } from '../storage/PostgresBucketStorageFactory.js';
|
|
4
4
|
import { PostgresReportStorage } from '../storage/PostgresReportStorage.js';
|
|
5
5
|
import { PostgresStorageConfigDecoded } from '../types/types.js';
|
|
6
6
|
export type PostgresTestStorageOptions = {
|
|
7
7
|
url: string;
|
|
8
|
-
syncConfigParser?: SyncConfigParser;
|
|
9
8
|
/**
|
|
10
9
|
* Vitest can cause issues when loading .ts files for migrations.
|
|
11
10
|
* This allows for providing a custom PostgresMigrationAgent.
|
package/dist/utils/test-utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger, logger as defaultLogger, transports } from '@powersync/lib-services-framework';
|
|
2
|
-
import { framework
|
|
2
|
+
import { framework } from '@powersync/service-core';
|
|
3
3
|
import { PostgresMigrationAgent } from '../migrations/PostgresMigrationAgent.js';
|
|
4
4
|
import { PostgresBucketStorageFactory } from '../storage/PostgresBucketStorageFactory.js';
|
|
5
5
|
import { PostgresReportStorage } from '../storage/PostgresReportStorage.js';
|
|
@@ -55,7 +55,7 @@ export function postgresTestSetup(factoryOptions) {
|
|
|
55
55
|
await using storageFactory = new PostgresBucketStorageFactory({
|
|
56
56
|
config: TEST_CONNECTION_OPTIONS,
|
|
57
57
|
replicationStreamNamePrefix: 'test_'
|
|
58
|
-
}
|
|
58
|
+
});
|
|
59
59
|
await truncateTables(storageFactory.db);
|
|
60
60
|
};
|
|
61
61
|
return {
|
|
@@ -82,7 +82,7 @@ export function postgresTestSetup(factoryOptions) {
|
|
|
82
82
|
return new PostgresBucketStorageFactory({
|
|
83
83
|
config: TEST_CONNECTION_OPTIONS,
|
|
84
84
|
replicationStreamNamePrefix: 'test_'
|
|
85
|
-
}
|
|
85
|
+
});
|
|
86
86
|
}
|
|
87
87
|
catch (ex) {
|
|
88
88
|
// Vitest does not display these errors nicely when using the `await using` syntx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/utils/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,aAAa,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACtG,OAAO,
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/utils/test-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/service-module-postgres-storage",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
|
-
"version": "0.0.0-dev-
|
|
4
|
+
"version": "0.0.0-dev-20261007110800",
|
|
5
5
|
"license": "FSL-1.1-ALv2",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"publishConfig": {
|
|
@@ -16,17 +16,17 @@
|
|
|
16
16
|
"lru-cache": "^10.2.2",
|
|
17
17
|
"ts-codec": "^1.3.0",
|
|
18
18
|
"uuid": "^14.0.0",
|
|
19
|
-
"@powersync/lib-service-postgres": "0.0.0-dev-
|
|
20
|
-
"@powersync/
|
|
21
|
-
"@powersync/
|
|
22
|
-
"@powersync/service-
|
|
19
|
+
"@powersync/lib-service-postgres": "0.0.0-dev-20261007110800",
|
|
20
|
+
"@powersync/service-types": "0.0.0-dev-20261007110800",
|
|
21
|
+
"@powersync/lib-services-framework": "0.0.0-dev-20261007110800",
|
|
22
|
+
"@powersync/service-jpgwire": "0.0.0-dev-20261007110800",
|
|
23
|
+
"@powersync/service-core": "0.0.0-dev-20261007110800",
|
|
23
24
|
"@powersync/service-jsonbig": "0.17.13",
|
|
24
|
-
"@powersync/service-
|
|
25
|
-
"@powersync/service-sync-rules": "0.0.0-dev-20261005120023"
|
|
25
|
+
"@powersync/service-sync-rules": "0.0.0-dev-20261007110800"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"typescript": "~6.0.3",
|
|
29
|
-
"@powersync/service-core-tests": "0.0.0-dev-
|
|
29
|
+
"@powersync/service-core-tests": "0.0.0-dev-20261007110800"
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
32
|
"build": "tsc -b",
|
|
@@ -25,11 +25,8 @@ export class PostgresBucketStorageFactory extends storage.BucketStorageFactory {
|
|
|
25
25
|
|
|
26
26
|
private activeStorageCache: storage.SyncRulesBucketStorage | undefined;
|
|
27
27
|
|
|
28
|
-
constructor(
|
|
29
|
-
|
|
30
|
-
syncConfigParser: storage.SyncConfigParser
|
|
31
|
-
) {
|
|
32
|
-
super({ syncConfigParser });
|
|
28
|
+
constructor(protected options: PostgresBucketStorageOptions) {
|
|
29
|
+
super();
|
|
33
30
|
this.db = new lib_postgres.DatabaseClient({
|
|
34
31
|
config: options.config,
|
|
35
32
|
schema: STORAGE_SCHEMA_NAME,
|
|
@@ -235,7 +232,7 @@ export class PostgresBucketStorageFactory extends storage.BucketStorageFactory {
|
|
|
235
232
|
.decoded(models.SyncRules)
|
|
236
233
|
.first();
|
|
237
234
|
|
|
238
|
-
return new PostgresPersistedReplicationStream(this.db, newSyncRulesRow
|
|
235
|
+
return new PostgresPersistedReplicationStream(this.db, newSyncRulesRow!);
|
|
239
236
|
});
|
|
240
237
|
}
|
|
241
238
|
|
|
@@ -369,7 +366,7 @@ export class PostgresBucketStorageFactory extends storage.BucketStorageFactory {
|
|
|
369
366
|
.decoded(models.SyncRules)
|
|
370
367
|
.rows();
|
|
371
368
|
|
|
372
|
-
return rows.map((row) => new PostgresPersistedReplicationStream(this.db, row
|
|
369
|
+
return rows.map((row) => new PostgresPersistedReplicationStream(this.db, row));
|
|
373
370
|
}
|
|
374
371
|
|
|
375
372
|
async getStoppedReplicationStreams(): Promise<storage.PersistedReplicationStream[]> {
|
|
@@ -384,14 +381,14 @@ export class PostgresBucketStorageFactory extends storage.BucketStorageFactory {
|
|
|
384
381
|
.decoded(models.SyncRules)
|
|
385
382
|
.rows();
|
|
386
383
|
|
|
387
|
-
return rows.map((row) => new PostgresPersistedReplicationStream(this.db, row
|
|
384
|
+
return rows.map((row) => new PostgresPersistedReplicationStream(this.db, row));
|
|
388
385
|
}
|
|
389
386
|
|
|
390
387
|
private resolvedSyncConfigFromRow(
|
|
391
388
|
row: models.SyncRulesDecoded,
|
|
392
389
|
options: { cacheActiveStorage?: boolean } = {}
|
|
393
390
|
): storage.ResolvedSyncConfig {
|
|
394
|
-
const stream = new PostgresPersistedReplicationStream(this.db, row
|
|
391
|
+
const stream = new PostgresPersistedReplicationStream(this.db, row);
|
|
395
392
|
const content = stream.syncConfigContent[0];
|
|
396
393
|
const thisFactory = this;
|
|
397
394
|
|
|
@@ -25,15 +25,12 @@ export class PostgresStorageProvider implements storage.StorageProvider {
|
|
|
25
25
|
|
|
26
26
|
const decodedConfig = PostgresStorageConfig.decode(storage);
|
|
27
27
|
const normalizedConfig = normalizePostgresStorageConfig(decodedConfig);
|
|
28
|
-
const storageFactory = new PostgresBucketStorageFactory(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
options.syncConfigParser
|
|
36
|
-
);
|
|
28
|
+
const storageFactory = new PostgresBucketStorageFactory({
|
|
29
|
+
config: normalizedConfig,
|
|
30
|
+
replicationStreamNamePrefix: options.resolvedConfig.slot_name_prefix,
|
|
31
|
+
checksumCacheTtlMs: options.resolvedConfig.api_parameters.bucket_count_cache_ttl_minutes * 60_000,
|
|
32
|
+
defaultStorageVersion: decodedConfig.default_storage_version
|
|
33
|
+
});
|
|
37
34
|
|
|
38
35
|
const reportStorageFactory = new PostgresReportStorage({
|
|
39
36
|
config: normalizedConfig
|
|
@@ -6,21 +6,17 @@ import { models } from '../../types/types.js';
|
|
|
6
6
|
export class PostgresPersistedSyncConfigContent extends storage.PersistedSyncConfigContent {
|
|
7
7
|
constructor(
|
|
8
8
|
private db: lib_postgres.DatabaseClient,
|
|
9
|
-
row: models.SyncRulesDecoded
|
|
10
|
-
syncConfigParser: storage.SyncConfigParser
|
|
9
|
+
row: models.SyncRulesDecoded
|
|
11
10
|
) {
|
|
12
|
-
super(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
},
|
|
22
|
-
syncConfigParser
|
|
23
|
-
);
|
|
11
|
+
super({
|
|
12
|
+
replicationStreamId: Number(row.id),
|
|
13
|
+
sync_rules_content: row.content,
|
|
14
|
+
compiled_plan: row.sync_plan,
|
|
15
|
+
replicationStreamName: row.slot_name,
|
|
16
|
+
storageVersion: row.storage_version ?? storage.LEGACY_STORAGE_VERSION,
|
|
17
|
+
syncConfigState: row.state as storage.SyncRuleState,
|
|
18
|
+
version_label: row.version_label ?? undefined
|
|
19
|
+
});
|
|
24
20
|
}
|
|
25
21
|
|
|
26
22
|
async getSyncConfigStatus(): Promise<storage.PersistedSyncConfigStatus | null> {
|
|
@@ -58,8 +54,7 @@ export class PostgresPersistedReplicationStream extends storage.PersistedReplica
|
|
|
58
54
|
|
|
59
55
|
constructor(
|
|
60
56
|
private db: lib_postgres.DatabaseClient,
|
|
61
|
-
private readonly row: models.SyncRulesDecoded
|
|
62
|
-
private readonly syncConfigParser: storage.SyncConfigParser
|
|
57
|
+
private readonly row: models.SyncRulesDecoded
|
|
63
58
|
) {
|
|
64
59
|
super({
|
|
65
60
|
replicationStreamId: Number(row.id),
|
|
@@ -73,7 +68,7 @@ export class PostgresPersistedReplicationStream extends storage.PersistedReplica
|
|
|
73
68
|
`Unsupported storage version ${this.storageVersion} for PostgreSQL storage`
|
|
74
69
|
);
|
|
75
70
|
}
|
|
76
|
-
this.syncConfigContent = [new PostgresPersistedSyncConfigContent(this.db, this.row
|
|
71
|
+
this.syncConfigContent = [new PostgresPersistedSyncConfigContent(this.db, this.row)];
|
|
77
72
|
}
|
|
78
73
|
|
|
79
74
|
parsed(options: storage.ParseSyncConfigOptions): storage.ParsedSyncConfigSet {
|
package/src/utils/test-utils.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { createLogger, logger as defaultLogger, transports } from '@powersync/lib-services-framework';
|
|
2
|
-
import {
|
|
3
|
-
framework,
|
|
4
|
-
PowerSyncMigrationManager,
|
|
5
|
-
ServiceContext,
|
|
6
|
-
SqlSyncConfigParser,
|
|
7
|
-
SyncConfigParser,
|
|
8
|
-
TestStorageOptions
|
|
9
|
-
} from '@powersync/service-core';
|
|
2
|
+
import { framework, PowerSyncMigrationManager, ServiceContext, TestStorageOptions } from '@powersync/service-core';
|
|
10
3
|
import { PostgresMigrationAgent } from '../migrations/PostgresMigrationAgent.js';
|
|
11
4
|
import { PostgresBucketStorageFactory } from '../storage/PostgresBucketStorageFactory.js';
|
|
12
5
|
import { PostgresReportStorage } from '../storage/PostgresReportStorage.js';
|
|
@@ -15,7 +8,7 @@ import { truncateTables } from './db.js';
|
|
|
15
8
|
|
|
16
9
|
export type PostgresTestStorageOptions = {
|
|
17
10
|
url: string;
|
|
18
|
-
|
|
11
|
+
|
|
19
12
|
/**
|
|
20
13
|
* Vitest can cause issues when loading .ts files for migrations.
|
|
21
14
|
* This allows for providing a custom PostgresMigrationAgent.
|
|
@@ -79,13 +72,10 @@ export function postgresTestSetup(factoryOptions: PostgresTestStorageOptions) {
|
|
|
79
72
|
const clearStorage = async () => {
|
|
80
73
|
await runMigrations({ down: false, up: true });
|
|
81
74
|
|
|
82
|
-
await using storageFactory = new PostgresBucketStorageFactory(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
},
|
|
87
|
-
factoryOptions.syncConfigParser ?? new SqlSyncConfigParser()
|
|
88
|
-
);
|
|
75
|
+
await using storageFactory = new PostgresBucketStorageFactory({
|
|
76
|
+
config: TEST_CONNECTION_OPTIONS,
|
|
77
|
+
replicationStreamNamePrefix: 'test_'
|
|
78
|
+
});
|
|
89
79
|
await truncateTables(storageFactory.db);
|
|
90
80
|
};
|
|
91
81
|
|
|
@@ -111,13 +101,10 @@ export function postgresTestSetup(factoryOptions: PostgresTestStorageOptions) {
|
|
|
111
101
|
await clearStorage();
|
|
112
102
|
}
|
|
113
103
|
|
|
114
|
-
return new PostgresBucketStorageFactory(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
},
|
|
119
|
-
factoryOptions.syncConfigParser ?? new SqlSyncConfigParser()
|
|
120
|
-
);
|
|
104
|
+
return new PostgresBucketStorageFactory({
|
|
105
|
+
config: TEST_CONNECTION_OPTIONS,
|
|
106
|
+
replicationStreamNamePrefix: 'test_'
|
|
107
|
+
});
|
|
121
108
|
} catch (ex) {
|
|
122
109
|
// Vitest does not display these errors nicely when using the `await using` syntx
|
|
123
110
|
console.error(ex, ex.cause);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SqlSyncConfigParser } from '@powersync/service-core';
|
|
2
1
|
import { beforeEach, describe, expect, it } from 'vitest';
|
|
3
2
|
|
|
4
3
|
import { Direction } from '@powersync/lib-services-framework';
|
|
@@ -17,13 +16,10 @@ describe('Migrations', () => {
|
|
|
17
16
|
// The migration tests clear the migration store, without running the down migrations.
|
|
18
17
|
// This ensures all the down migrations have been run before.
|
|
19
18
|
const setup = POSTGRES_STORAGE_SETUP;
|
|
20
|
-
await using factory = new PostgresBucketStorageFactory(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
new SqlSyncConfigParser()
|
|
26
|
-
);
|
|
19
|
+
await using factory = new PostgresBucketStorageFactory({
|
|
20
|
+
config: TEST_CONNECTION_OPTIONS,
|
|
21
|
+
replicationStreamNamePrefix: 'test_'
|
|
22
|
+
});
|
|
27
23
|
|
|
28
24
|
await dropTables(factory.db);
|
|
29
25
|
await setup.migrate(Direction.Down);
|