@syncular/server-dialect-sqlite 0.0.1-60 → 0.0.1
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/dist/index.d.ts +4 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -72
- package/dist/index.js.map +1 -1
- package/package.json +5 -25
- package/src/index.ts +22 -107
package/dist/index.d.ts
CHANGED
|
@@ -27,33 +27,24 @@ export declare class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
27
27
|
ensureSyncSchema<DB extends SyncCoreDb>(db: Kysely<DB>): Promise<void>;
|
|
28
28
|
executeInTransaction<DB extends SyncCoreDb, T>(db: Kysely<DB>, fn: (executor: DbExecutor<DB>) => Promise<T>): Promise<T>;
|
|
29
29
|
setRepeatableRead<DB extends SyncCoreDb>(_trx: DbExecutor<DB>): Promise<void>;
|
|
30
|
-
readMaxCommitSeq<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB
|
|
31
|
-
|
|
32
|
-
}): Promise<number>;
|
|
33
|
-
readMinCommitSeq<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, options?: {
|
|
34
|
-
partitionId?: string;
|
|
35
|
-
}): Promise<number>;
|
|
30
|
+
readMaxCommitSeq<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>): Promise<number>;
|
|
31
|
+
readMinCommitSeq<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>): Promise<number>;
|
|
36
32
|
readCommitSeqsForPull<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
|
|
37
33
|
cursor: number;
|
|
38
34
|
limitCommits: number;
|
|
39
35
|
tables: string[];
|
|
40
|
-
partitionId?: string;
|
|
41
36
|
}): Promise<number[]>;
|
|
42
|
-
readCommits<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, commitSeqs: number[]
|
|
43
|
-
partitionId?: string;
|
|
44
|
-
}): Promise<SyncCommitRow[]>;
|
|
37
|
+
readCommits<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, commitSeqs: number[]): Promise<SyncCommitRow[]>;
|
|
45
38
|
readChangesForCommits<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
|
|
46
39
|
commitSeqs: number[];
|
|
47
40
|
table: string;
|
|
48
41
|
scopes: ScopeValues;
|
|
49
|
-
partitionId?: string;
|
|
50
42
|
}): Promise<SyncChangeRow[]>;
|
|
51
43
|
readIncrementalPullRows<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
|
|
52
44
|
table: string;
|
|
53
45
|
scopes: ScopeValues;
|
|
54
46
|
cursor: number;
|
|
55
47
|
limitCommits: number;
|
|
56
|
-
partitionId?: string;
|
|
57
48
|
}): Promise<Array<{
|
|
58
49
|
commit_seq: number;
|
|
59
50
|
actor_id: string;
|
|
@@ -75,7 +66,6 @@ export declare class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
75
66
|
scopes: ScopeValues;
|
|
76
67
|
cursor: number;
|
|
77
68
|
limitCommits: number;
|
|
78
|
-
partitionId?: string;
|
|
79
69
|
}): AsyncGenerator<{
|
|
80
70
|
commit_seq: number;
|
|
81
71
|
actor_id: string;
|
|
@@ -92,7 +82,6 @@ export declare class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
92
82
|
fullHistoryHours: number;
|
|
93
83
|
}): Promise<number>;
|
|
94
84
|
recordClientCursor<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, args: {
|
|
95
|
-
partitionId?: string;
|
|
96
85
|
clientId: string;
|
|
97
86
|
actorId: string;
|
|
98
87
|
cursor: number;
|
|
@@ -102,9 +91,7 @@ export declare class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
102
91
|
dbToScopes(value: unknown): StoredScopes;
|
|
103
92
|
dbToArray(value: unknown): string[];
|
|
104
93
|
arrayToDb(values: string[]): string;
|
|
105
|
-
readAffectedTablesFromChanges<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, commitSeq: number
|
|
106
|
-
partitionId?: string;
|
|
107
|
-
}): Promise<string[]>;
|
|
94
|
+
readAffectedTablesFromChanges<DB extends SyncCoreDb>(db: Kysely<DB> | Transaction<DB>, commitSeq: number): Promise<string[]>;
|
|
108
95
|
ensureConsoleSchema<DB extends SyncCoreDb>(db: Kysely<DB>): Promise<void>;
|
|
109
96
|
}
|
|
110
97
|
export declare function createSqliteServerDialect(options?: {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -118,14 +118,6 @@ function scopesMatch(stored, requested) {
|
|
|
118
118
|
}
|
|
119
119
|
return true;
|
|
120
120
|
}
|
|
121
|
-
async function ensurePartitionColumn(db, table) {
|
|
122
|
-
try {
|
|
123
|
-
await sql.raw(`ALTER TABLE ${table} ADD COLUMN partition_id TEXT NOT NULL DEFAULT 'default'`).execute(db);
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
// Ignore when column already exists (or table is immutable in the current backend).
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
121
|
export class SqliteServerSyncDialect {
|
|
130
122
|
name = 'sqlite';
|
|
131
123
|
supportsForUpdate = false;
|
|
@@ -146,7 +138,6 @@ export class SqliteServerSyncDialect {
|
|
|
146
138
|
.createTable('sync_commits')
|
|
147
139
|
.ifNotExists()
|
|
148
140
|
.addColumn('commit_seq', 'integer', (col) => col.primaryKey().autoIncrement())
|
|
149
|
-
.addColumn('partition_id', 'text', (col) => col.notNull().defaultTo('default'))
|
|
150
141
|
.addColumn('actor_id', 'text', (col) => col.notNull())
|
|
151
142
|
.addColumn('client_id', 'text', (col) => col.notNull())
|
|
152
143
|
.addColumn('client_commit_id', 'text', (col) => col.notNull())
|
|
@@ -156,32 +147,23 @@ export class SqliteServerSyncDialect {
|
|
|
156
147
|
.addColumn('change_count', 'integer', (col) => col.notNull().defaultTo(0))
|
|
157
148
|
.addColumn('affected_tables', 'text', (col) => col.notNull().defaultTo('[]'))
|
|
158
149
|
.execute();
|
|
159
|
-
await ensurePartitionColumn(db, 'sync_commits');
|
|
160
|
-
await sql `DROP INDEX IF EXISTS idx_sync_commits_client_commit`.execute(db);
|
|
161
150
|
await sql `CREATE UNIQUE INDEX IF NOT EXISTS idx_sync_commits_client_commit
|
|
162
|
-
ON sync_commits(
|
|
151
|
+
ON sync_commits(client_id, client_commit_id)`.execute(db);
|
|
163
152
|
// sync_table_commits table (index of which commits affect which tables)
|
|
164
153
|
await db.schema
|
|
165
154
|
.createTable('sync_table_commits')
|
|
166
155
|
.ifNotExists()
|
|
167
|
-
.addColumn('partition_id', 'text', (col) => col.notNull().defaultTo('default'))
|
|
168
156
|
.addColumn('table', 'text', (col) => col.notNull())
|
|
169
157
|
.addColumn('commit_seq', 'integer', (col) => col.notNull().references('sync_commits.commit_seq').onDelete('cascade'))
|
|
170
|
-
.addPrimaryKeyConstraint('sync_table_commits_pk', [
|
|
171
|
-
'partition_id',
|
|
172
|
-
'table',
|
|
173
|
-
'commit_seq',
|
|
174
|
-
])
|
|
158
|
+
.addPrimaryKeyConstraint('sync_table_commits_pk', ['table', 'commit_seq'])
|
|
175
159
|
.execute();
|
|
176
|
-
await ensurePartitionColumn(db, 'sync_table_commits');
|
|
177
160
|
await sql `CREATE INDEX IF NOT EXISTS idx_sync_table_commits_commit_seq
|
|
178
|
-
ON sync_table_commits(
|
|
161
|
+
ON sync_table_commits(commit_seq)`.execute(db);
|
|
179
162
|
// sync_changes table - uses JSON for scopes
|
|
180
163
|
await db.schema
|
|
181
164
|
.createTable('sync_changes')
|
|
182
165
|
.ifNotExists()
|
|
183
166
|
.addColumn('change_id', 'integer', (col) => col.primaryKey().autoIncrement())
|
|
184
|
-
.addColumn('partition_id', 'text', (col) => col.notNull().defaultTo('default'))
|
|
185
167
|
.addColumn('commit_seq', 'integer', (col) => col.notNull().references('sync_commits.commit_seq').onDelete('cascade'))
|
|
186
168
|
.addColumn('table', 'text', (col) => col.notNull())
|
|
187
169
|
.addColumn('row_id', 'text', (col) => col.notNull())
|
|
@@ -190,27 +172,20 @@ export class SqliteServerSyncDialect {
|
|
|
190
172
|
.addColumn('row_version', 'integer')
|
|
191
173
|
.addColumn('scopes', 'json', (col) => col.notNull())
|
|
192
174
|
.execute();
|
|
193
|
-
await ensurePartitionColumn(db, 'sync_changes');
|
|
194
175
|
await sql `CREATE INDEX IF NOT EXISTS idx_sync_changes_commit_seq
|
|
195
|
-
ON sync_changes(
|
|
176
|
+
ON sync_changes(commit_seq)`.execute(db);
|
|
196
177
|
await sql `CREATE INDEX IF NOT EXISTS idx_sync_changes_table
|
|
197
|
-
ON sync_changes(
|
|
178
|
+
ON sync_changes("table")`.execute(db);
|
|
198
179
|
// sync_client_cursors table
|
|
199
180
|
await db.schema
|
|
200
181
|
.createTable('sync_client_cursors')
|
|
201
182
|
.ifNotExists()
|
|
202
|
-
.addColumn('
|
|
203
|
-
.addColumn('client_id', 'text', (col) => col.notNull())
|
|
183
|
+
.addColumn('client_id', 'text', (col) => col.primaryKey())
|
|
204
184
|
.addColumn('actor_id', 'text', (col) => col.notNull())
|
|
205
185
|
.addColumn('cursor', 'integer', (col) => col.notNull().defaultTo(0))
|
|
206
186
|
.addColumn('effective_scopes', 'json', (col) => col.notNull().defaultTo('{}'))
|
|
207
187
|
.addColumn('updated_at', 'text', (col) => col.notNull().defaultTo(nowIso))
|
|
208
|
-
.addPrimaryKeyConstraint('sync_client_cursors_pk', [
|
|
209
|
-
'partition_id',
|
|
210
|
-
'client_id',
|
|
211
|
-
])
|
|
212
188
|
.execute();
|
|
213
|
-
await ensurePartitionColumn(db, 'sync_client_cursors');
|
|
214
189
|
await sql `CREATE INDEX IF NOT EXISTS idx_sync_client_cursors_updated_at
|
|
215
190
|
ON sync_client_cursors(updated_at)`.execute(db);
|
|
216
191
|
// sync_snapshot_chunks table
|
|
@@ -218,7 +193,6 @@ export class SqliteServerSyncDialect {
|
|
|
218
193
|
.createTable('sync_snapshot_chunks')
|
|
219
194
|
.ifNotExists()
|
|
220
195
|
.addColumn('chunk_id', 'text', (col) => col.primaryKey())
|
|
221
|
-
.addColumn('partition_id', 'text', (col) => col.notNull().defaultTo('default'))
|
|
222
196
|
.addColumn('scope_key', 'text', (col) => col.notNull())
|
|
223
197
|
.addColumn('scope', 'text', (col) => col.notNull())
|
|
224
198
|
.addColumn('as_of_commit_seq', 'integer', (col) => col.notNull())
|
|
@@ -233,11 +207,10 @@ export class SqliteServerSyncDialect {
|
|
|
233
207
|
.addColumn('created_at', 'text', (col) => col.notNull().defaultTo(nowIso))
|
|
234
208
|
.addColumn('expires_at', 'text', (col) => col.notNull())
|
|
235
209
|
.execute();
|
|
236
|
-
await ensurePartitionColumn(db, 'sync_snapshot_chunks');
|
|
237
210
|
await sql `CREATE INDEX IF NOT EXISTS idx_sync_snapshot_chunks_expires_at
|
|
238
211
|
ON sync_snapshot_chunks(expires_at)`.execute(db);
|
|
239
212
|
await sql `CREATE UNIQUE INDEX IF NOT EXISTS idx_sync_snapshot_chunks_page_key
|
|
240
|
-
ON sync_snapshot_chunks(
|
|
213
|
+
ON sync_snapshot_chunks(scope_key, scope, as_of_commit_seq, row_cursor, row_limit, encoding, compression)`.execute(db);
|
|
241
214
|
// Cleanup orphaned rows
|
|
242
215
|
await sql `
|
|
243
216
|
DELETE FROM sync_table_commits
|
|
@@ -263,34 +236,28 @@ export class SqliteServerSyncDialect {
|
|
|
263
236
|
// ===========================================================================
|
|
264
237
|
// Commit/Change Log Queries
|
|
265
238
|
// ===========================================================================
|
|
266
|
-
async readMaxCommitSeq(db
|
|
267
|
-
const partitionId = options?.partitionId ?? 'default';
|
|
239
|
+
async readMaxCommitSeq(db) {
|
|
268
240
|
const res = await sql `
|
|
269
241
|
SELECT max(commit_seq) as max_seq
|
|
270
242
|
FROM sync_commits
|
|
271
|
-
WHERE partition_id = ${partitionId}
|
|
272
243
|
`.execute(db);
|
|
273
244
|
return coerceNumber(res.rows[0]?.max_seq) ?? 0;
|
|
274
245
|
}
|
|
275
|
-
async readMinCommitSeq(db
|
|
276
|
-
const partitionId = options?.partitionId ?? 'default';
|
|
246
|
+
async readMinCommitSeq(db) {
|
|
277
247
|
const res = await sql `
|
|
278
248
|
SELECT min(commit_seq) as min_seq
|
|
279
249
|
FROM sync_commits
|
|
280
|
-
WHERE partition_id = ${partitionId}
|
|
281
250
|
`.execute(db);
|
|
282
251
|
return coerceNumber(res.rows[0]?.min_seq) ?? 0;
|
|
283
252
|
}
|
|
284
253
|
async readCommitSeqsForPull(db, args) {
|
|
285
|
-
const partitionId = args.partitionId ?? 'default';
|
|
286
254
|
if (args.tables.length === 0)
|
|
287
255
|
return [];
|
|
288
256
|
const tablesIn = sql.join(args.tables.map((t) => sql `${t}`), sql `, `);
|
|
289
257
|
const res = await sql `
|
|
290
258
|
SELECT DISTINCT commit_seq
|
|
291
259
|
FROM sync_table_commits
|
|
292
|
-
WHERE
|
|
293
|
-
AND "table" IN (${tablesIn})
|
|
260
|
+
WHERE "table" IN (${tablesIn})
|
|
294
261
|
AND commit_seq > ${args.cursor}
|
|
295
262
|
ORDER BY commit_seq ASC
|
|
296
263
|
LIMIT ${args.limitCommits}
|
|
@@ -299,8 +266,7 @@ export class SqliteServerSyncDialect {
|
|
|
299
266
|
.map((r) => coerceNumber(r.commit_seq))
|
|
300
267
|
.filter((n) => typeof n === 'number' && Number.isFinite(n) && n > args.cursor);
|
|
301
268
|
}
|
|
302
|
-
async readCommits(db, commitSeqs
|
|
303
|
-
const partitionId = options?.partitionId ?? 'default';
|
|
269
|
+
async readCommits(db, commitSeqs) {
|
|
304
270
|
if (commitSeqs.length === 0)
|
|
305
271
|
return [];
|
|
306
272
|
const commitSeqsIn = sql.join(commitSeqs.map((seq) => sql `${seq}`), sql `, `);
|
|
@@ -308,7 +274,6 @@ export class SqliteServerSyncDialect {
|
|
|
308
274
|
SELECT commit_seq, actor_id, created_at, result_json
|
|
309
275
|
FROM sync_commits
|
|
310
276
|
WHERE commit_seq IN (${commitSeqsIn})
|
|
311
|
-
AND partition_id = ${partitionId}
|
|
312
277
|
ORDER BY commit_seq ASC
|
|
313
278
|
`.execute(db);
|
|
314
279
|
return res.rows.map((row) => ({
|
|
@@ -319,7 +284,6 @@ export class SqliteServerSyncDialect {
|
|
|
319
284
|
}));
|
|
320
285
|
}
|
|
321
286
|
async readChangesForCommits(db, args) {
|
|
322
|
-
const partitionId = args.partitionId ?? 'default';
|
|
323
287
|
if (args.commitSeqs.length === 0)
|
|
324
288
|
return [];
|
|
325
289
|
const commitSeqsIn = sql.join(args.commitSeqs.map((seq) => sql `${seq}`), sql `, `);
|
|
@@ -328,7 +292,6 @@ export class SqliteServerSyncDialect {
|
|
|
328
292
|
SELECT commit_seq, "table", row_id, op, row_json, row_version, scopes
|
|
329
293
|
FROM sync_changes
|
|
330
294
|
WHERE commit_seq IN (${commitSeqsIn})
|
|
331
|
-
AND partition_id = ${partitionId}
|
|
332
295
|
AND "table" = ${args.table}
|
|
333
296
|
ORDER BY commit_seq ASC, change_id ASC
|
|
334
297
|
`.execute(db);
|
|
@@ -349,20 +312,17 @@ export class SqliteServerSyncDialect {
|
|
|
349
312
|
}));
|
|
350
313
|
}
|
|
351
314
|
async readIncrementalPullRows(db, args) {
|
|
352
|
-
const partitionId = args.partitionId ?? 'default';
|
|
353
315
|
const limitCommits = Math.max(1, Math.min(500, args.limitCommits));
|
|
354
316
|
// Get commit_seqs for this table
|
|
355
317
|
const commitSeqsRes = await sql `
|
|
356
318
|
SELECT commit_seq
|
|
357
319
|
FROM sync_table_commits
|
|
358
|
-
WHERE
|
|
359
|
-
AND "table" = ${args.table}
|
|
320
|
+
WHERE "table" = ${args.table}
|
|
360
321
|
AND commit_seq > ${args.cursor}
|
|
361
322
|
AND EXISTS (
|
|
362
323
|
SELECT 1
|
|
363
324
|
FROM sync_commits cm
|
|
364
325
|
WHERE cm.commit_seq = sync_table_commits.commit_seq
|
|
365
|
-
AND cm.partition_id = ${partitionId}
|
|
366
326
|
)
|
|
367
327
|
ORDER BY commit_seq ASC
|
|
368
328
|
LIMIT ${limitCommits}
|
|
@@ -389,8 +349,6 @@ export class SqliteServerSyncDialect {
|
|
|
389
349
|
FROM sync_commits cm
|
|
390
350
|
JOIN sync_changes c ON c.commit_seq = cm.commit_seq
|
|
391
351
|
WHERE cm.commit_seq IN (${commitSeqsIn})
|
|
392
|
-
AND cm.partition_id = ${partitionId}
|
|
393
|
-
AND c.partition_id = ${partitionId}
|
|
394
352
|
AND c."table" = ${args.table}
|
|
395
353
|
ORDER BY cm.commit_seq ASC, c.change_id ASC
|
|
396
354
|
`.execute(db);
|
|
@@ -418,20 +376,17 @@ export class SqliteServerSyncDialect {
|
|
|
418
376
|
* Yields changes one at a time instead of loading all into memory.
|
|
419
377
|
*/
|
|
420
378
|
async *streamIncrementalPullRows(db, args) {
|
|
421
|
-
const partitionId = args.partitionId ?? 'default';
|
|
422
379
|
const limitCommits = Math.max(1, Math.min(500, args.limitCommits));
|
|
423
380
|
// Get commit_seqs for this table
|
|
424
381
|
const commitSeqsRes = await sql `
|
|
425
382
|
SELECT commit_seq
|
|
426
383
|
FROM sync_table_commits
|
|
427
|
-
WHERE
|
|
428
|
-
AND "table" = ${args.table}
|
|
384
|
+
WHERE "table" = ${args.table}
|
|
429
385
|
AND commit_seq > ${args.cursor}
|
|
430
386
|
AND EXISTS (
|
|
431
387
|
SELECT 1
|
|
432
388
|
FROM sync_commits cm
|
|
433
389
|
WHERE cm.commit_seq = sync_table_commits.commit_seq
|
|
434
|
-
AND cm.partition_id = ${partitionId}
|
|
435
390
|
)
|
|
436
391
|
ORDER BY commit_seq ASC
|
|
437
392
|
LIMIT ${limitCommits}
|
|
@@ -461,8 +416,6 @@ export class SqliteServerSyncDialect {
|
|
|
461
416
|
FROM sync_commits cm
|
|
462
417
|
JOIN sync_changes c ON c.commit_seq = cm.commit_seq
|
|
463
418
|
WHERE cm.commit_seq IN (${commitSeqsIn})
|
|
464
|
-
AND cm.partition_id = ${partitionId}
|
|
465
|
-
AND c.partition_id = ${partitionId}
|
|
466
419
|
AND c."table" = ${args.table}
|
|
467
420
|
ORDER BY cm.commit_seq ASC, c.change_id ASC
|
|
468
421
|
`.execute(db);
|
|
@@ -490,16 +443,16 @@ export class SqliteServerSyncDialect {
|
|
|
490
443
|
const cutoffIso = new Date(Date.now() - args.fullHistoryHours * 60 * 60 * 1000).toISOString();
|
|
491
444
|
// Find all old changes
|
|
492
445
|
const oldChanges = await sql `
|
|
493
|
-
SELECT c.change_id, c.
|
|
446
|
+
SELECT c.change_id, c.commit_seq, c."table", c.row_id, c.scopes
|
|
494
447
|
FROM sync_changes c
|
|
495
448
|
JOIN sync_commits cm ON cm.commit_seq = c.commit_seq
|
|
496
449
|
WHERE cm.created_at < ${cutoffIso}
|
|
497
450
|
`.execute(db);
|
|
498
|
-
// Group by (
|
|
451
|
+
// Group by (table, row_id, scopes)
|
|
499
452
|
const groups = new Map();
|
|
500
453
|
for (const row of oldChanges.rows) {
|
|
501
454
|
const scopesStr = JSON.stringify(parseScopes(row.scopes));
|
|
502
|
-
const key = `${row.
|
|
455
|
+
const key = `${row.table}|${row.row_id}|${scopesStr}`;
|
|
503
456
|
if (!groups.has(key)) {
|
|
504
457
|
groups.set(key, []);
|
|
505
458
|
}
|
|
@@ -543,13 +496,11 @@ export class SqliteServerSyncDialect {
|
|
|
543
496
|
SELECT commit_seq
|
|
544
497
|
FROM sync_commits
|
|
545
498
|
WHERE created_at < ${cutoffIso}
|
|
546
|
-
AND partition_id = sync_table_commits.partition_id
|
|
547
499
|
)
|
|
548
500
|
AND NOT EXISTS (
|
|
549
501
|
SELECT 1
|
|
550
502
|
FROM sync_changes c
|
|
551
503
|
WHERE c.commit_seq = sync_table_commits.commit_seq
|
|
552
|
-
AND c.partition_id = sync_table_commits.partition_id
|
|
553
504
|
AND c."table" = sync_table_commits."table"
|
|
554
505
|
)
|
|
555
506
|
`.execute(db);
|
|
@@ -559,13 +510,12 @@ export class SqliteServerSyncDialect {
|
|
|
559
510
|
// Client Cursor Recording
|
|
560
511
|
// ===========================================================================
|
|
561
512
|
async recordClientCursor(db, args) {
|
|
562
|
-
const partitionId = args.partitionId ?? 'default';
|
|
563
513
|
const now = new Date().toISOString();
|
|
564
514
|
const scopesJson = JSON.stringify(args.effectiveScopes);
|
|
565
515
|
await sql `
|
|
566
|
-
INSERT INTO sync_client_cursors (
|
|
567
|
-
VALUES (${
|
|
568
|
-
ON CONFLICT(
|
|
516
|
+
INSERT INTO sync_client_cursors (client_id, actor_id, cursor, effective_scopes, updated_at)
|
|
517
|
+
VALUES (${args.clientId}, ${args.actorId}, ${args.cursor}, ${scopesJson}, ${now})
|
|
518
|
+
ON CONFLICT(client_id) DO UPDATE SET
|
|
569
519
|
actor_id = ${args.actorId},
|
|
570
520
|
cursor = ${args.cursor},
|
|
571
521
|
effective_scopes = ${scopesJson},
|
|
@@ -587,13 +537,11 @@ export class SqliteServerSyncDialect {
|
|
|
587
537
|
arrayToDb(values) {
|
|
588
538
|
return JSON.stringify(values.filter((v) => v.length > 0));
|
|
589
539
|
}
|
|
590
|
-
async readAffectedTablesFromChanges(db, commitSeq
|
|
591
|
-
const partitionId = options?.partitionId ?? 'default';
|
|
540
|
+
async readAffectedTablesFromChanges(db, commitSeq) {
|
|
592
541
|
const res = await sql `
|
|
593
542
|
SELECT DISTINCT "table"
|
|
594
543
|
FROM sync_changes
|
|
595
544
|
WHERE commit_seq = ${commitSeq}
|
|
596
|
-
AND partition_id = ${partitionId}
|
|
597
545
|
`.execute(db);
|
|
598
546
|
return res.rows
|
|
599
547
|
.map((r) => r.table)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,25 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syncular/server-dialect-sqlite",
|
|
3
|
-
"version": "0.0.1
|
|
4
|
-
"description": "SQLite dialect for the Syncular server",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"author": "Benjamin Kniffler",
|
|
7
|
-
"homepage": "https://syncular.dev",
|
|
8
|
-
"repository": {
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "https://github.com/syncular/syncular.git",
|
|
11
|
-
"directory": "packages/server-dialect-sqlite"
|
|
12
|
-
},
|
|
13
|
-
"bugs": {
|
|
14
|
-
"url": "https://github.com/syncular/syncular/issues"
|
|
15
|
-
},
|
|
16
|
-
"keywords": [
|
|
17
|
-
"sync",
|
|
18
|
-
"offline-first",
|
|
19
|
-
"realtime",
|
|
20
|
-
"database",
|
|
21
|
-
"typescript"
|
|
22
|
-
],
|
|
3
|
+
"version": "0.0.1",
|
|
23
4
|
"private": false,
|
|
24
5
|
"publishConfig": {
|
|
25
6
|
"access": "public"
|
|
@@ -36,18 +17,17 @@
|
|
|
36
17
|
},
|
|
37
18
|
"scripts": {
|
|
38
19
|
"tsgo": "tsgo --noEmit",
|
|
39
|
-
"build": "rm -rf dist && tsgo"
|
|
40
|
-
"release": "bun pm pack --destination . && npm publish ./*.tgz --tag latest && rm -f ./*.tgz"
|
|
20
|
+
"build": "rm -rf dist && tsgo"
|
|
41
21
|
},
|
|
42
22
|
"dependencies": {
|
|
43
|
-
"@syncular/core": "
|
|
44
|
-
"@syncular/server": "
|
|
23
|
+
"@syncular/core": "workspace:*",
|
|
24
|
+
"@syncular/server": "workspace:*"
|
|
45
25
|
},
|
|
46
26
|
"peerDependencies": {
|
|
47
27
|
"kysely": "^0.28.0"
|
|
48
28
|
},
|
|
49
29
|
"devDependencies": {
|
|
50
|
-
"@syncular/config": "
|
|
30
|
+
"@syncular/config": "workspace:*",
|
|
51
31
|
"kysely": "*"
|
|
52
32
|
},
|
|
53
33
|
"files": [
|
package/src/index.ts
CHANGED
|
@@ -126,19 +126,6 @@ function scopesMatch(stored: StoredScopes, requested: ScopeValues): boolean {
|
|
|
126
126
|
return true;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
async function ensurePartitionColumn<DB extends SyncCoreDb>(
|
|
130
|
-
db: Kysely<DB>,
|
|
131
|
-
table: string
|
|
132
|
-
): Promise<void> {
|
|
133
|
-
try {
|
|
134
|
-
await sql.raw(
|
|
135
|
-
`ALTER TABLE ${table} ADD COLUMN partition_id TEXT NOT NULL DEFAULT 'default'`
|
|
136
|
-
).execute(db);
|
|
137
|
-
} catch {
|
|
138
|
-
// Ignore when column already exists (or table is immutable in the current backend).
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
129
|
export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
143
130
|
readonly name = 'sqlite' as const;
|
|
144
131
|
readonly supportsForUpdate = false;
|
|
@@ -166,9 +153,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
166
153
|
.addColumn('commit_seq', 'integer', (col) =>
|
|
167
154
|
col.primaryKey().autoIncrement()
|
|
168
155
|
)
|
|
169
|
-
.addColumn('partition_id', 'text', (col) =>
|
|
170
|
-
col.notNull().defaultTo('default')
|
|
171
|
-
)
|
|
172
156
|
.addColumn('actor_id', 'text', (col) => col.notNull())
|
|
173
157
|
.addColumn('client_id', 'text', (col) => col.notNull())
|
|
174
158
|
.addColumn('client_commit_id', 'text', (col) => col.notNull())
|
|
@@ -180,33 +164,23 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
180
164
|
col.notNull().defaultTo('[]')
|
|
181
165
|
)
|
|
182
166
|
.execute();
|
|
183
|
-
await ensurePartitionColumn(db, 'sync_commits');
|
|
184
167
|
|
|
185
|
-
await sql`DROP INDEX IF EXISTS idx_sync_commits_client_commit`.execute(db);
|
|
186
168
|
await sql`CREATE UNIQUE INDEX IF NOT EXISTS idx_sync_commits_client_commit
|
|
187
|
-
ON sync_commits(
|
|
169
|
+
ON sync_commits(client_id, client_commit_id)`.execute(db);
|
|
188
170
|
|
|
189
171
|
// sync_table_commits table (index of which commits affect which tables)
|
|
190
172
|
await db.schema
|
|
191
173
|
.createTable('sync_table_commits')
|
|
192
174
|
.ifNotExists()
|
|
193
|
-
.addColumn('partition_id', 'text', (col) =>
|
|
194
|
-
col.notNull().defaultTo('default')
|
|
195
|
-
)
|
|
196
175
|
.addColumn('table', 'text', (col) => col.notNull())
|
|
197
176
|
.addColumn('commit_seq', 'integer', (col) =>
|
|
198
177
|
col.notNull().references('sync_commits.commit_seq').onDelete('cascade')
|
|
199
178
|
)
|
|
200
|
-
.addPrimaryKeyConstraint('sync_table_commits_pk', [
|
|
201
|
-
'partition_id',
|
|
202
|
-
'table',
|
|
203
|
-
'commit_seq',
|
|
204
|
-
])
|
|
179
|
+
.addPrimaryKeyConstraint('sync_table_commits_pk', ['table', 'commit_seq'])
|
|
205
180
|
.execute();
|
|
206
|
-
await ensurePartitionColumn(db, 'sync_table_commits');
|
|
207
181
|
|
|
208
182
|
await sql`CREATE INDEX IF NOT EXISTS idx_sync_table_commits_commit_seq
|
|
209
|
-
ON sync_table_commits(
|
|
183
|
+
ON sync_table_commits(commit_seq)`.execute(db);
|
|
210
184
|
|
|
211
185
|
// sync_changes table - uses JSON for scopes
|
|
212
186
|
await db.schema
|
|
@@ -215,9 +189,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
215
189
|
.addColumn('change_id', 'integer', (col) =>
|
|
216
190
|
col.primaryKey().autoIncrement()
|
|
217
191
|
)
|
|
218
|
-
.addColumn('partition_id', 'text', (col) =>
|
|
219
|
-
col.notNull().defaultTo('default')
|
|
220
|
-
)
|
|
221
192
|
.addColumn('commit_seq', 'integer', (col) =>
|
|
222
193
|
col.notNull().references('sync_commits.commit_seq').onDelete('cascade')
|
|
223
194
|
)
|
|
@@ -228,34 +199,25 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
228
199
|
.addColumn('row_version', 'integer')
|
|
229
200
|
.addColumn('scopes', 'json', (col) => col.notNull())
|
|
230
201
|
.execute();
|
|
231
|
-
await ensurePartitionColumn(db, 'sync_changes');
|
|
232
202
|
|
|
233
203
|
await sql`CREATE INDEX IF NOT EXISTS idx_sync_changes_commit_seq
|
|
234
|
-
ON sync_changes(
|
|
204
|
+
ON sync_changes(commit_seq)`.execute(db);
|
|
235
205
|
|
|
236
206
|
await sql`CREATE INDEX IF NOT EXISTS idx_sync_changes_table
|
|
237
|
-
ON sync_changes(
|
|
207
|
+
ON sync_changes("table")`.execute(db);
|
|
238
208
|
|
|
239
209
|
// sync_client_cursors table
|
|
240
210
|
await db.schema
|
|
241
211
|
.createTable('sync_client_cursors')
|
|
242
212
|
.ifNotExists()
|
|
243
|
-
.addColumn('
|
|
244
|
-
col.notNull().defaultTo('default')
|
|
245
|
-
)
|
|
246
|
-
.addColumn('client_id', 'text', (col) => col.notNull())
|
|
213
|
+
.addColumn('client_id', 'text', (col) => col.primaryKey())
|
|
247
214
|
.addColumn('actor_id', 'text', (col) => col.notNull())
|
|
248
215
|
.addColumn('cursor', 'integer', (col) => col.notNull().defaultTo(0))
|
|
249
216
|
.addColumn('effective_scopes', 'json', (col) =>
|
|
250
217
|
col.notNull().defaultTo('{}')
|
|
251
218
|
)
|
|
252
219
|
.addColumn('updated_at', 'text', (col) => col.notNull().defaultTo(nowIso))
|
|
253
|
-
.addPrimaryKeyConstraint('sync_client_cursors_pk', [
|
|
254
|
-
'partition_id',
|
|
255
|
-
'client_id',
|
|
256
|
-
])
|
|
257
220
|
.execute();
|
|
258
|
-
await ensurePartitionColumn(db, 'sync_client_cursors');
|
|
259
221
|
|
|
260
222
|
await sql`CREATE INDEX IF NOT EXISTS idx_sync_client_cursors_updated_at
|
|
261
223
|
ON sync_client_cursors(updated_at)`.execute(db);
|
|
@@ -265,9 +227,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
265
227
|
.createTable('sync_snapshot_chunks')
|
|
266
228
|
.ifNotExists()
|
|
267
229
|
.addColumn('chunk_id', 'text', (col) => col.primaryKey())
|
|
268
|
-
.addColumn('partition_id', 'text', (col) =>
|
|
269
|
-
col.notNull().defaultTo('default')
|
|
270
|
-
)
|
|
271
230
|
.addColumn('scope_key', 'text', (col) => col.notNull())
|
|
272
231
|
.addColumn('scope', 'text', (col) => col.notNull())
|
|
273
232
|
.addColumn('as_of_commit_seq', 'integer', (col) => col.notNull())
|
|
@@ -282,13 +241,12 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
282
241
|
.addColumn('created_at', 'text', (col) => col.notNull().defaultTo(nowIso))
|
|
283
242
|
.addColumn('expires_at', 'text', (col) => col.notNull())
|
|
284
243
|
.execute();
|
|
285
|
-
await ensurePartitionColumn(db, 'sync_snapshot_chunks');
|
|
286
244
|
|
|
287
245
|
await sql`CREATE INDEX IF NOT EXISTS idx_sync_snapshot_chunks_expires_at
|
|
288
246
|
ON sync_snapshot_chunks(expires_at)`.execute(db);
|
|
289
247
|
|
|
290
248
|
await sql`CREATE UNIQUE INDEX IF NOT EXISTS idx_sync_snapshot_chunks_page_key
|
|
291
|
-
ON sync_snapshot_chunks(
|
|
249
|
+
ON sync_snapshot_chunks(scope_key, scope, as_of_commit_seq, row_cursor, row_limit, encoding, compression)`.execute(
|
|
292
250
|
db
|
|
293
251
|
);
|
|
294
252
|
|
|
@@ -328,28 +286,22 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
328
286
|
// ===========================================================================
|
|
329
287
|
|
|
330
288
|
async readMaxCommitSeq<DB extends SyncCoreDb>(
|
|
331
|
-
db: Kysely<DB> | Transaction<DB
|
|
332
|
-
options?: { partitionId?: string }
|
|
289
|
+
db: Kysely<DB> | Transaction<DB>
|
|
333
290
|
): Promise<number> {
|
|
334
|
-
const partitionId = options?.partitionId ?? 'default';
|
|
335
291
|
const res = await sql<{ max_seq: unknown }>`
|
|
336
292
|
SELECT max(commit_seq) as max_seq
|
|
337
293
|
FROM sync_commits
|
|
338
|
-
WHERE partition_id = ${partitionId}
|
|
339
294
|
`.execute(db);
|
|
340
295
|
|
|
341
296
|
return coerceNumber(res.rows[0]?.max_seq) ?? 0;
|
|
342
297
|
}
|
|
343
298
|
|
|
344
299
|
async readMinCommitSeq<DB extends SyncCoreDb>(
|
|
345
|
-
db: Kysely<DB> | Transaction<DB
|
|
346
|
-
options?: { partitionId?: string }
|
|
300
|
+
db: Kysely<DB> | Transaction<DB>
|
|
347
301
|
): Promise<number> {
|
|
348
|
-
const partitionId = options?.partitionId ?? 'default';
|
|
349
302
|
const res = await sql<{ min_seq: unknown }>`
|
|
350
303
|
SELECT min(commit_seq) as min_seq
|
|
351
304
|
FROM sync_commits
|
|
352
|
-
WHERE partition_id = ${partitionId}
|
|
353
305
|
`.execute(db);
|
|
354
306
|
|
|
355
307
|
return coerceNumber(res.rows[0]?.min_seq) ?? 0;
|
|
@@ -357,14 +309,8 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
357
309
|
|
|
358
310
|
async readCommitSeqsForPull<DB extends SyncCoreDb>(
|
|
359
311
|
db: Kysely<DB> | Transaction<DB>,
|
|
360
|
-
args: {
|
|
361
|
-
cursor: number;
|
|
362
|
-
limitCommits: number;
|
|
363
|
-
tables: string[];
|
|
364
|
-
partitionId?: string;
|
|
365
|
-
}
|
|
312
|
+
args: { cursor: number; limitCommits: number; tables: string[] }
|
|
366
313
|
): Promise<number[]> {
|
|
367
|
-
const partitionId = args.partitionId ?? 'default';
|
|
368
314
|
if (args.tables.length === 0) return [];
|
|
369
315
|
|
|
370
316
|
const tablesIn = sql.join(
|
|
@@ -375,8 +321,7 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
375
321
|
const res = await sql<{ commit_seq: unknown }>`
|
|
376
322
|
SELECT DISTINCT commit_seq
|
|
377
323
|
FROM sync_table_commits
|
|
378
|
-
WHERE
|
|
379
|
-
AND "table" IN (${tablesIn})
|
|
324
|
+
WHERE "table" IN (${tablesIn})
|
|
380
325
|
AND commit_seq > ${args.cursor}
|
|
381
326
|
ORDER BY commit_seq ASC
|
|
382
327
|
LIMIT ${args.limitCommits}
|
|
@@ -392,10 +337,8 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
392
337
|
|
|
393
338
|
async readCommits<DB extends SyncCoreDb>(
|
|
394
339
|
db: Kysely<DB> | Transaction<DB>,
|
|
395
|
-
commitSeqs: number[]
|
|
396
|
-
options?: { partitionId?: string }
|
|
340
|
+
commitSeqs: number[]
|
|
397
341
|
): Promise<SyncCommitRow[]> {
|
|
398
|
-
const partitionId = options?.partitionId ?? 'default';
|
|
399
342
|
if (commitSeqs.length === 0) return [];
|
|
400
343
|
|
|
401
344
|
const commitSeqsIn = sql.join(
|
|
@@ -412,7 +355,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
412
355
|
SELECT commit_seq, actor_id, created_at, result_json
|
|
413
356
|
FROM sync_commits
|
|
414
357
|
WHERE commit_seq IN (${commitSeqsIn})
|
|
415
|
-
AND partition_id = ${partitionId}
|
|
416
358
|
ORDER BY commit_seq ASC
|
|
417
359
|
`.execute(db);
|
|
418
360
|
|
|
@@ -426,14 +368,8 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
426
368
|
|
|
427
369
|
async readChangesForCommits<DB extends SyncCoreDb>(
|
|
428
370
|
db: Kysely<DB> | Transaction<DB>,
|
|
429
|
-
args: {
|
|
430
|
-
commitSeqs: number[];
|
|
431
|
-
table: string;
|
|
432
|
-
scopes: ScopeValues;
|
|
433
|
-
partitionId?: string;
|
|
434
|
-
}
|
|
371
|
+
args: { commitSeqs: number[]; table: string; scopes: ScopeValues }
|
|
435
372
|
): Promise<SyncChangeRow[]> {
|
|
436
|
-
const partitionId = args.partitionId ?? 'default';
|
|
437
373
|
if (args.commitSeqs.length === 0) return [];
|
|
438
374
|
|
|
439
375
|
const commitSeqsIn = sql.join(
|
|
@@ -454,7 +390,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
454
390
|
SELECT commit_seq, "table", row_id, op, row_json, row_version, scopes
|
|
455
391
|
FROM sync_changes
|
|
456
392
|
WHERE commit_seq IN (${commitSeqsIn})
|
|
457
|
-
AND partition_id = ${partitionId}
|
|
458
393
|
AND "table" = ${args.table}
|
|
459
394
|
ORDER BY commit_seq ASC, change_id ASC
|
|
460
395
|
`.execute(db);
|
|
@@ -483,7 +418,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
483
418
|
scopes: ScopeValues;
|
|
484
419
|
cursor: number;
|
|
485
420
|
limitCommits: number;
|
|
486
|
-
partitionId?: string;
|
|
487
421
|
}
|
|
488
422
|
): Promise<
|
|
489
423
|
Array<{
|
|
@@ -499,21 +433,18 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
499
433
|
scopes: StoredScopes;
|
|
500
434
|
}>
|
|
501
435
|
> {
|
|
502
|
-
const partitionId = args.partitionId ?? 'default';
|
|
503
436
|
const limitCommits = Math.max(1, Math.min(500, args.limitCommits));
|
|
504
437
|
|
|
505
438
|
// Get commit_seqs for this table
|
|
506
439
|
const commitSeqsRes = await sql<{ commit_seq: unknown }>`
|
|
507
440
|
SELECT commit_seq
|
|
508
441
|
FROM sync_table_commits
|
|
509
|
-
WHERE
|
|
510
|
-
AND "table" = ${args.table}
|
|
442
|
+
WHERE "table" = ${args.table}
|
|
511
443
|
AND commit_seq > ${args.cursor}
|
|
512
444
|
AND EXISTS (
|
|
513
445
|
SELECT 1
|
|
514
446
|
FROM sync_commits cm
|
|
515
447
|
WHERE cm.commit_seq = sync_table_commits.commit_seq
|
|
516
|
-
AND cm.partition_id = ${partitionId}
|
|
517
448
|
)
|
|
518
449
|
ORDER BY commit_seq ASC
|
|
519
450
|
LIMIT ${limitCommits}
|
|
@@ -557,8 +488,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
557
488
|
FROM sync_commits cm
|
|
558
489
|
JOIN sync_changes c ON c.commit_seq = cm.commit_seq
|
|
559
490
|
WHERE cm.commit_seq IN (${commitSeqsIn})
|
|
560
|
-
AND cm.partition_id = ${partitionId}
|
|
561
|
-
AND c.partition_id = ${partitionId}
|
|
562
491
|
AND c."table" = ${args.table}
|
|
563
492
|
ORDER BY cm.commit_seq ASC, c.change_id ASC
|
|
564
493
|
`.execute(db);
|
|
@@ -594,7 +523,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
594
523
|
scopes: ScopeValues;
|
|
595
524
|
cursor: number;
|
|
596
525
|
limitCommits: number;
|
|
597
|
-
partitionId?: string;
|
|
598
526
|
}
|
|
599
527
|
): AsyncGenerator<{
|
|
600
528
|
commit_seq: number;
|
|
@@ -608,21 +536,18 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
608
536
|
row_version: number | null;
|
|
609
537
|
scopes: StoredScopes;
|
|
610
538
|
}> {
|
|
611
|
-
const partitionId = args.partitionId ?? 'default';
|
|
612
539
|
const limitCommits = Math.max(1, Math.min(500, args.limitCommits));
|
|
613
540
|
|
|
614
541
|
// Get commit_seqs for this table
|
|
615
542
|
const commitSeqsRes = await sql<{ commit_seq: unknown }>`
|
|
616
543
|
SELECT commit_seq
|
|
617
544
|
FROM sync_table_commits
|
|
618
|
-
WHERE
|
|
619
|
-
AND "table" = ${args.table}
|
|
545
|
+
WHERE "table" = ${args.table}
|
|
620
546
|
AND commit_seq > ${args.cursor}
|
|
621
547
|
AND EXISTS (
|
|
622
548
|
SELECT 1
|
|
623
549
|
FROM sync_commits cm
|
|
624
550
|
WHERE cm.commit_seq = sync_table_commits.commit_seq
|
|
625
|
-
AND cm.partition_id = ${partitionId}
|
|
626
551
|
)
|
|
627
552
|
ORDER BY commit_seq ASC
|
|
628
553
|
LIMIT ${limitCommits}
|
|
@@ -669,8 +594,6 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
669
594
|
FROM sync_commits cm
|
|
670
595
|
JOIN sync_changes c ON c.commit_seq = cm.commit_seq
|
|
671
596
|
WHERE cm.commit_seq IN (${commitSeqsIn})
|
|
672
|
-
AND cm.partition_id = ${partitionId}
|
|
673
|
-
AND c.partition_id = ${partitionId}
|
|
674
597
|
AND c."table" = ${args.table}
|
|
675
598
|
ORDER BY cm.commit_seq ASC, c.change_id ASC
|
|
676
599
|
`.execute(db);
|
|
@@ -707,19 +630,18 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
707
630
|
// Find all old changes
|
|
708
631
|
const oldChanges = await sql<{
|
|
709
632
|
change_id: unknown;
|
|
710
|
-
partition_id: string;
|
|
711
633
|
commit_seq: unknown;
|
|
712
634
|
table: string;
|
|
713
635
|
row_id: string;
|
|
714
636
|
scopes: unknown;
|
|
715
637
|
}>`
|
|
716
|
-
SELECT c.change_id, c.
|
|
638
|
+
SELECT c.change_id, c.commit_seq, c."table", c.row_id, c.scopes
|
|
717
639
|
FROM sync_changes c
|
|
718
640
|
JOIN sync_commits cm ON cm.commit_seq = c.commit_seq
|
|
719
641
|
WHERE cm.created_at < ${cutoffIso}
|
|
720
642
|
`.execute(db);
|
|
721
643
|
|
|
722
|
-
// Group by (
|
|
644
|
+
// Group by (table, row_id, scopes)
|
|
723
645
|
const groups = new Map<
|
|
724
646
|
string,
|
|
725
647
|
Array<{ change_id: number; commit_seq: number }>
|
|
@@ -727,7 +649,7 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
727
649
|
|
|
728
650
|
for (const row of oldChanges.rows) {
|
|
729
651
|
const scopesStr = JSON.stringify(parseScopes(row.scopes));
|
|
730
|
-
const key = `${row.
|
|
652
|
+
const key = `${row.table}|${row.row_id}|${scopesStr}`;
|
|
731
653
|
if (!groups.has(key)) {
|
|
732
654
|
groups.set(key, []);
|
|
733
655
|
}
|
|
@@ -780,13 +702,11 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
780
702
|
SELECT commit_seq
|
|
781
703
|
FROM sync_commits
|
|
782
704
|
WHERE created_at < ${cutoffIso}
|
|
783
|
-
AND partition_id = sync_table_commits.partition_id
|
|
784
705
|
)
|
|
785
706
|
AND NOT EXISTS (
|
|
786
707
|
SELECT 1
|
|
787
708
|
FROM sync_changes c
|
|
788
709
|
WHERE c.commit_seq = sync_table_commits.commit_seq
|
|
789
|
-
AND c.partition_id = sync_table_commits.partition_id
|
|
790
710
|
AND c."table" = sync_table_commits."table"
|
|
791
711
|
)
|
|
792
712
|
`.execute(db);
|
|
@@ -801,21 +721,19 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
801
721
|
async recordClientCursor<DB extends SyncCoreDb>(
|
|
802
722
|
db: Kysely<DB> | Transaction<DB>,
|
|
803
723
|
args: {
|
|
804
|
-
partitionId?: string;
|
|
805
724
|
clientId: string;
|
|
806
725
|
actorId: string;
|
|
807
726
|
cursor: number;
|
|
808
727
|
effectiveScopes: ScopeValues;
|
|
809
728
|
}
|
|
810
729
|
): Promise<void> {
|
|
811
|
-
const partitionId = args.partitionId ?? 'default';
|
|
812
730
|
const now = new Date().toISOString();
|
|
813
731
|
const scopesJson = JSON.stringify(args.effectiveScopes);
|
|
814
732
|
|
|
815
733
|
await sql`
|
|
816
|
-
INSERT INTO sync_client_cursors (
|
|
817
|
-
VALUES (${
|
|
818
|
-
ON CONFLICT(
|
|
734
|
+
INSERT INTO sync_client_cursors (client_id, actor_id, cursor, effective_scopes, updated_at)
|
|
735
|
+
VALUES (${args.clientId}, ${args.actorId}, ${args.cursor}, ${scopesJson}, ${now})
|
|
736
|
+
ON CONFLICT(client_id) DO UPDATE SET
|
|
819
737
|
actor_id = ${args.actorId},
|
|
820
738
|
cursor = ${args.cursor},
|
|
821
739
|
effective_scopes = ${scopesJson},
|
|
@@ -845,15 +763,12 @@ export class SqliteServerSyncDialect implements ServerSyncDialect {
|
|
|
845
763
|
|
|
846
764
|
async readAffectedTablesFromChanges<DB extends SyncCoreDb>(
|
|
847
765
|
db: Kysely<DB> | Transaction<DB>,
|
|
848
|
-
commitSeq: number
|
|
849
|
-
options?: { partitionId?: string }
|
|
766
|
+
commitSeq: number
|
|
850
767
|
): Promise<string[]> {
|
|
851
|
-
const partitionId = options?.partitionId ?? 'default';
|
|
852
768
|
const res = await sql<{ table: string }>`
|
|
853
769
|
SELECT DISTINCT "table"
|
|
854
770
|
FROM sync_changes
|
|
855
771
|
WHERE commit_seq = ${commitSeq}
|
|
856
|
-
AND partition_id = ${partitionId}
|
|
857
772
|
`.execute(db);
|
|
858
773
|
|
|
859
774
|
return res.rows
|