Skip to content

Commit 2bab154

Browse files
committed
[db] Final PowerSync fixes
1 parent 3300d22 commit 2bab154

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

src/persisters/persister-powersync/index.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@ export const createPowerSyncPersister = ((
3535
configOrStoreTableName?: DatabasePersisterConfig | string,
3636
onSqlCommand?: (sql: string, params?: any[]) => void,
3737
onIgnoredError?: (error: any) => void,
38-
): PowerSyncPersister =>
39-
createCustomSqlitePersister(
38+
): PowerSyncPersister => {
39+
let tableListener: DatabaseChangeListener | undefined;
40+
return createCustomSqlitePersister(
4041
store,
4142
configOrStoreTableName,
4243
async (sql: string, params: any[] = []): Promise<IdObj<any>[]> =>
@@ -51,20 +52,27 @@ export const createPowerSyncPersister = ((
5152
});
5253
(async () => {
5354
for await (const update of onChange) {
54-
arrayMap(update.changedTables, listener);
55+
if (tableListener) {
56+
arrayMap(update.changedTables, tableListener);
57+
}
5558
}
5659
})();
60+
tableListener = listener;
5761
return abortController;
5862
},
59-
(abortController: AbortController) => abortController.abort(),
63+
(abortController: AbortController) => {
64+
tableListener = undefined;
65+
abortController.abort();
66+
},
6067
onSqlCommand,
6168
onIgnoredError,
6269
() => 0,
6370
1, // StoreOnly,
6471
powerSync,
6572
'getPowerSync',
6673
viewUpsert,
67-
) as PowerSyncPersister) as typeof createPowerSyncPersisterDecl;
74+
) as PowerSyncPersister;
75+
}) as typeof createPowerSyncPersisterDecl;
6876

6977
const viewUpsert: Upsert = async (
7078
executeCommand: DatabaseExecuteCommand,
@@ -89,9 +97,9 @@ const viewUpsert: Upsert = async (
8997
const unchangingData = objNew(
9098
arrayMap(
9199
await executeCommand(
92-
'SELECT ' +
100+
'SELECT' +
93101
escapeColumnNames(rowIdColumnName, ...unchangingColumnNames) +
94-
' FROM' +
102+
'FROM' +
95103
escapeId(tableName) +
96104
'WHERE' +
97105
escapeId(rowIdColumnName) +

test/unit/persisters/common/databases.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ export const SQLITE_NON_MERGEABLE_VARIANTS: Variants = {
313313
powerSync.execute(sql, args).then((result) => result.rows?._array ?? []),
314314
(powerSync: AbstractPowerSyncDatabase) => powerSync.close(),
315315
undefined,
316-
undefined,
316+
0.01,
317317
undefined,
318318
undefined,
319319
true,

test/unit/persisters/common/mocks.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ const getMockedDatabase = <Location>(
240240
autoLoadIntervalSeconds = 0.001,
241241
_isPostgres = false,
242242
_supportsMultipleConnections = false,
243+
_skipSqlChecks = false,
243244
): Persistable<Location> => {
244245
const mockDatabase = {
245246
beforeEach: mockFetchWasm,

0 commit comments

Comments
 (0)