@syncular/server 0.0.6-126 → 0.0.6-135
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/dialect/base.d.ts +1 -0
- package/dist/dialect/base.d.ts.map +1 -1
- package/dist/dialect/base.js.map +1 -1
- package/dist/dialect/types.d.ts +6 -0
- package/dist/dialect/types.d.ts.map +1 -1
- package/dist/handlers/create-handler.d.ts +10 -0
- package/dist/handlers/create-handler.d.ts.map +1 -1
- package/dist/handlers/create-handler.js +161 -47
- package/dist/handlers/create-handler.js.map +1 -1
- package/dist/handlers/types.d.ts +24 -0
- package/dist/handlers/types.d.ts.map +1 -1
- package/dist/notify.d.ts.map +1 -1
- package/dist/notify.js +16 -5
- package/dist/notify.js.map +1 -1
- package/dist/push.d.ts.map +1 -1
- package/dist/push.js +93 -40
- package/dist/push.js.map +1 -1
- package/package.json +2 -2
- package/src/dialect/base.ts +1 -0
- package/src/dialect/types.ts +7 -0
- package/src/handlers/create-handler.ts +238 -66
- package/src/handlers/types.ts +30 -0
- package/src/notify.ts +15 -5
- package/src/push.ts +127 -56
package/dist/push.js
CHANGED
|
@@ -194,15 +194,7 @@ export async function pushCommit(args) {
|
|
|
194
194
|
meta: null,
|
|
195
195
|
result_json: null,
|
|
196
196
|
};
|
|
197
|
-
const
|
|
198
|
-
.insertInto('sync_commits')
|
|
199
|
-
.values(commitRow)
|
|
200
|
-
.onConflict((oc) => oc
|
|
201
|
-
.columns(['partition_id', 'client_id', 'client_commit_id'])
|
|
202
|
-
.doNothing())
|
|
203
|
-
.executeTakeFirstOrThrow();
|
|
204
|
-
const insertedRows = Number(insertResult.numInsertedOrUpdatedRows ?? 0);
|
|
205
|
-
if (insertedRows === 0) {
|
|
197
|
+
const loadExistingCommit = async () => {
|
|
206
198
|
// Existing commit: return cached response (applied or rejected)
|
|
207
199
|
// Use forUpdate() for row locking on databases that support it
|
|
208
200
|
let query = syncTrx.selectFrom('sync_commits')
|
|
@@ -256,20 +248,54 @@ export async function pushCommit(args) {
|
|
|
256
248
|
scopeKeys: [],
|
|
257
249
|
emittedChanges: [],
|
|
258
250
|
};
|
|
251
|
+
};
|
|
252
|
+
let commitSeq = 0;
|
|
253
|
+
if (dialect.supportsInsertReturning) {
|
|
254
|
+
const insertedCommit = await syncTrx
|
|
255
|
+
.insertInto('sync_commits')
|
|
256
|
+
.values(commitRow)
|
|
257
|
+
.onConflict((oc) => oc
|
|
258
|
+
.columns(['partition_id', 'client_id', 'client_commit_id'])
|
|
259
|
+
.doNothing())
|
|
260
|
+
.returning(['commit_seq'])
|
|
261
|
+
.executeTakeFirst();
|
|
262
|
+
if (!insertedCommit) {
|
|
263
|
+
return loadExistingCommit();
|
|
264
|
+
}
|
|
265
|
+
commitSeq = coerceNumber(insertedCommit.commit_seq) ?? 0;
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
const insertResult = await syncTrx
|
|
269
|
+
.insertInto('sync_commits')
|
|
270
|
+
.values(commitRow)
|
|
271
|
+
.onConflict((oc) => oc
|
|
272
|
+
.columns(['partition_id', 'client_id', 'client_commit_id'])
|
|
273
|
+
.doNothing())
|
|
274
|
+
.executeTakeFirstOrThrow();
|
|
275
|
+
const insertedRows = Number(insertResult.numInsertedOrUpdatedRows ?? 0);
|
|
276
|
+
if (insertedRows === 0) {
|
|
277
|
+
return loadExistingCommit();
|
|
278
|
+
}
|
|
279
|
+
commitSeq = coerceNumber(insertResult.insertId) ?? 0;
|
|
259
280
|
}
|
|
260
|
-
let commitSeq = coerceNumber(insertResult.insertId) ?? 0;
|
|
261
281
|
if (commitSeq <= 0) {
|
|
262
|
-
const
|
|
282
|
+
const insertedCommitRow = await syncTrx.selectFrom('sync_commits')
|
|
263
283
|
.selectAll()
|
|
264
284
|
.where('partition_id', '=', partitionId)
|
|
265
285
|
.where('client_id', '=', request.clientId)
|
|
266
286
|
.where('client_commit_id', '=', request.clientCommitId)
|
|
267
287
|
.executeTakeFirstOrThrow();
|
|
268
|
-
commitSeq = Number(
|
|
288
|
+
commitSeq = Number(insertedCommitRow.commit_seq);
|
|
269
289
|
}
|
|
270
290
|
const commitId = `${request.clientId}:${request.clientCommitId}`;
|
|
271
291
|
const savepointName = 'sync_apply';
|
|
272
|
-
|
|
292
|
+
let useSavepoints = dialect.supportsSavepoints;
|
|
293
|
+
if (useSavepoints && ops.length === 1) {
|
|
294
|
+
const singleOpHandler = getServerHandlerOrThrow(handlers, ops[0].table);
|
|
295
|
+
if (singleOpHandler.canRejectSingleOperationWithoutSavepoint) {
|
|
296
|
+
useSavepoints = false;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
273
299
|
let savepointCreated = false;
|
|
274
300
|
try {
|
|
275
301
|
// Apply the commit under a savepoint so we can roll back app writes on conflict
|
|
@@ -281,10 +307,10 @@ export async function pushCommit(args) {
|
|
|
281
307
|
const allEmitted = [];
|
|
282
308
|
const results = [];
|
|
283
309
|
const affectedTablesSet = new Set();
|
|
284
|
-
for (let i = 0; i < ops.length;
|
|
310
|
+
for (let i = 0; i < ops.length;) {
|
|
285
311
|
const op = ops[i];
|
|
286
312
|
const handler = getServerHandlerOrThrow(handlers, op.table);
|
|
287
|
-
const
|
|
313
|
+
const operationCtx = {
|
|
288
314
|
db: trx,
|
|
289
315
|
trx,
|
|
290
316
|
actorId,
|
|
@@ -292,27 +318,34 @@ export async function pushCommit(args) {
|
|
|
292
318
|
clientId: request.clientId,
|
|
293
319
|
commitId,
|
|
294
320
|
schemaVersion: request.schemaVersion,
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
321
|
+
};
|
|
322
|
+
let appliedBatch = null;
|
|
323
|
+
let consumed = 1;
|
|
324
|
+
if (handler.applyOperationBatch &&
|
|
325
|
+
dialect.supportsInsertReturning) {
|
|
326
|
+
const batchInput = [];
|
|
327
|
+
for (let j = i; j < ops.length; j++) {
|
|
328
|
+
const nextOp = ops[j];
|
|
329
|
+
if (nextOp.table !== op.table)
|
|
330
|
+
break;
|
|
331
|
+
batchInput.push({ op: nextOp, opIndex: j });
|
|
332
|
+
}
|
|
333
|
+
if (batchInput.length > 1) {
|
|
334
|
+
appliedBatch = await handler.applyOperationBatch(operationCtx, batchInput);
|
|
335
|
+
consumed = Math.max(1, appliedBatch.length);
|
|
336
|
+
}
|
|
304
337
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
338
|
+
if (!appliedBatch) {
|
|
339
|
+
appliedBatch = [
|
|
340
|
+
await handler.applyOperation(operationCtx, op, i),
|
|
341
|
+
];
|
|
342
|
+
}
|
|
343
|
+
if (appliedBatch.length === 0) {
|
|
344
|
+
throw new Error(`Handler "${op.table}" returned no results from applyOperationBatch`);
|
|
345
|
+
}
|
|
346
|
+
for (const applied of appliedBatch) {
|
|
347
|
+
if (applied.result.status !== 'applied') {
|
|
348
|
+
results.push(applied.result);
|
|
316
349
|
throw new RejectCommitError({
|
|
317
350
|
ok: true,
|
|
318
351
|
status: 'rejected',
|
|
@@ -320,12 +353,32 @@ export async function pushCommit(args) {
|
|
|
320
353
|
results,
|
|
321
354
|
});
|
|
322
355
|
}
|
|
356
|
+
// Framework-level enforcement: emitted changes must have scopes
|
|
357
|
+
for (const c of applied.emittedChanges ?? []) {
|
|
358
|
+
const scopes = c?.scopes;
|
|
359
|
+
if (!scopes || typeof scopes !== 'object') {
|
|
360
|
+
results.push({
|
|
361
|
+
opIndex: applied.result.opIndex,
|
|
362
|
+
status: 'error',
|
|
363
|
+
error: 'MISSING_SCOPES',
|
|
364
|
+
code: 'INVALID_SCOPE',
|
|
365
|
+
retriable: false,
|
|
366
|
+
});
|
|
367
|
+
throw new RejectCommitError({
|
|
368
|
+
ok: true,
|
|
369
|
+
status: 'rejected',
|
|
370
|
+
commitSeq,
|
|
371
|
+
results,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
results.push(applied.result);
|
|
376
|
+
allEmitted.push(...applied.emittedChanges);
|
|
377
|
+
for (const c of applied.emittedChanges) {
|
|
378
|
+
affectedTablesSet.add(c.table);
|
|
379
|
+
}
|
|
323
380
|
}
|
|
324
|
-
|
|
325
|
-
allEmitted.push(...applied.emittedChanges);
|
|
326
|
-
for (const c of applied.emittedChanges) {
|
|
327
|
-
affectedTablesSet.add(c.table);
|
|
328
|
-
}
|
|
381
|
+
i += consumed;
|
|
329
382
|
}
|
|
330
383
|
if (allEmitted.length > 0) {
|
|
331
384
|
const changeRows = allEmitted.map((c) => ({
|
package/dist/push.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syncular/server",
|
|
3
|
-
"version": "0.0.6-
|
|
3
|
+
"version": "0.0.6-135",
|
|
4
4
|
"description": "Server-side sync engine with push/pull, pruning, and snapshot support",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Benjamin Kniffler",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"release": "bunx syncular-publish"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@syncular/core": "0.0.6-
|
|
65
|
+
"@syncular/core": "0.0.6-135"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
68
|
"kysely": "^0.28.0",
|
package/src/dialect/base.ts
CHANGED
|
@@ -34,6 +34,7 @@ export abstract class BaseServerSyncDialect<F extends SqlFamily = SqlFamily>
|
|
|
34
34
|
abstract readonly family: F;
|
|
35
35
|
abstract readonly supportsForUpdate: boolean;
|
|
36
36
|
abstract readonly supportsSavepoints: boolean;
|
|
37
|
+
abstract readonly supportsInsertReturning: boolean;
|
|
37
38
|
|
|
38
39
|
// ===========================================================================
|
|
39
40
|
// Abstract SQL fragment hooks
|
package/src/dialect/types.ts
CHANGED
|
@@ -174,6 +174,13 @@ export interface ServerSyncDialect<F extends SqlFamily = SqlFamily> {
|
|
|
174
174
|
*/
|
|
175
175
|
readonly supportsSavepoints: boolean;
|
|
176
176
|
|
|
177
|
+
/**
|
|
178
|
+
* Whether INSERT ... RETURNING is reliable for obtaining inserted rows.
|
|
179
|
+
* Postgres: true
|
|
180
|
+
* SQLite variants: false (keep insertId/fallback select for broad compatibility)
|
|
181
|
+
*/
|
|
182
|
+
readonly supportsInsertReturning: boolean;
|
|
183
|
+
|
|
177
184
|
/**
|
|
178
185
|
* Read distinct tables from sync_changes for a given commit.
|
|
179
186
|
* Used for realtime notifications.
|
|
@@ -35,6 +35,7 @@ import { sql } from 'kysely';
|
|
|
35
35
|
import type { SyncCoreDb } from '../schema';
|
|
36
36
|
import type {
|
|
37
37
|
ApplyOperationResult,
|
|
38
|
+
BatchApplyOperationInput,
|
|
38
39
|
EmittedChange,
|
|
39
40
|
ServerApplyOperationContext,
|
|
40
41
|
ServerContext,
|
|
@@ -187,6 +188,17 @@ export interface CreateServerHandlerOptions<
|
|
|
187
188
|
*/
|
|
188
189
|
applyOperation?: ServerTableHandler<ServerDB, Auth>['applyOperation'];
|
|
189
190
|
|
|
191
|
+
/**
|
|
192
|
+
* Hint for savepoint optimization on single-op commits.
|
|
193
|
+
*
|
|
194
|
+
* `true` means a rejected single operation never leaves durable writes
|
|
195
|
+
* before returning the rejection result.
|
|
196
|
+
*
|
|
197
|
+
* Defaults to `true` for the built-in applyOperation implementation and
|
|
198
|
+
* `false` when a custom applyOperation is provided.
|
|
199
|
+
*/
|
|
200
|
+
canRejectSingleOperationWithoutSavepoint?: boolean;
|
|
201
|
+
|
|
190
202
|
/**
|
|
191
203
|
* Custom scope extraction from row (for complex scope logic).
|
|
192
204
|
*/
|
|
@@ -263,6 +275,8 @@ export function createServerHandler<
|
|
|
263
275
|
extractScopes: customExtractScopes,
|
|
264
276
|
} = options;
|
|
265
277
|
const codecCache = new Map<string, ReturnType<typeof toTableColumnCodecs>>();
|
|
278
|
+
const primaryKeyColumn = primaryKey as keyof ServerDB[TableName] & string;
|
|
279
|
+
const qualifiedVersionRef = `${table}.${versionColumn}`;
|
|
266
280
|
const resolveTableCodecs = (row: Record<string, unknown>) => {
|
|
267
281
|
if (!codecs) return {};
|
|
268
282
|
const columns = Object.keys(row);
|
|
@@ -544,7 +558,7 @@ export function createServerHandler<
|
|
|
544
558
|
.executeTakeFirst()) as Record<string, unknown> | undefined;
|
|
545
559
|
|
|
546
560
|
if (!updated) {
|
|
547
|
-
|
|
561
|
+
let conflictRow = await (
|
|
548
562
|
trx.selectFrom(table).selectAll() as SelectQueryBuilder<
|
|
549
563
|
ServerDB,
|
|
550
564
|
keyof ServerDB & string,
|
|
@@ -554,7 +568,42 @@ export function createServerHandler<
|
|
|
554
568
|
.where(ref<string>(primaryKey), '=', op.row_id)
|
|
555
569
|
.executeTakeFirst();
|
|
556
570
|
|
|
557
|
-
if (!conflictRow) {
|
|
571
|
+
if (!conflictRow && expectedVersion === 0) {
|
|
572
|
+
const insertValues: Record<string, unknown> = {
|
|
573
|
+
...payload,
|
|
574
|
+
[primaryKey]: op.row_id,
|
|
575
|
+
[versionColumn]: 1,
|
|
576
|
+
};
|
|
577
|
+
|
|
578
|
+
try {
|
|
579
|
+
updated = (await (
|
|
580
|
+
trx.insertInto(table) as InsertQueryBuilder<
|
|
581
|
+
ServerDB,
|
|
582
|
+
TableName,
|
|
583
|
+
InsertResult
|
|
584
|
+
>
|
|
585
|
+
)
|
|
586
|
+
.values(insertValues as Insertable<ServerDB[TableName]>)
|
|
587
|
+
.returningAll()
|
|
588
|
+
.executeTakeFirst()) as Record<string, unknown> | undefined;
|
|
589
|
+
} catch (err) {
|
|
590
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
591
|
+
if (!isConstraintViolationError(message)) {
|
|
592
|
+
throw err;
|
|
593
|
+
}
|
|
594
|
+
conflictRow = await (
|
|
595
|
+
trx.selectFrom(table).selectAll() as SelectQueryBuilder<
|
|
596
|
+
ServerDB,
|
|
597
|
+
keyof ServerDB & string,
|
|
598
|
+
Record<string, unknown>
|
|
599
|
+
>
|
|
600
|
+
)
|
|
601
|
+
.where(ref<string>(primaryKey), '=', op.row_id)
|
|
602
|
+
.executeTakeFirst();
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
if (!updated && !conflictRow) {
|
|
558
607
|
return {
|
|
559
608
|
result: {
|
|
560
609
|
opIndex,
|
|
@@ -567,87 +616,54 @@ export function createServerHandler<
|
|
|
567
616
|
};
|
|
568
617
|
}
|
|
569
618
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
619
|
+
if (!updated && conflictRow) {
|
|
620
|
+
const existingVersion =
|
|
621
|
+
(conflictRow[versionColumn] as number | undefined) ?? 0;
|
|
622
|
+
return {
|
|
623
|
+
result: {
|
|
624
|
+
opIndex,
|
|
625
|
+
status: 'conflict',
|
|
626
|
+
message: `Version conflict: server=${existingVersion}, base=${expectedVersion}`,
|
|
627
|
+
server_version: existingVersion,
|
|
628
|
+
server_row: applyOutboundTransform(
|
|
629
|
+
conflictRow as Selectable<ServerDB[TableName]>
|
|
630
|
+
),
|
|
631
|
+
},
|
|
632
|
+
emittedChanges: [],
|
|
633
|
+
};
|
|
634
|
+
}
|
|
584
635
|
}
|
|
585
636
|
} else {
|
|
586
637
|
const updateSet: Record<string, unknown> = {
|
|
587
638
|
...payload,
|
|
588
|
-
[versionColumn]: sql`${sql.ref(
|
|
639
|
+
[versionColumn]: sql`${sql.ref(qualifiedVersionRef)} + 1`,
|
|
589
640
|
};
|
|
590
641
|
delete updateSet[primaryKey];
|
|
591
642
|
for (const col of Object.values(scopeColumns)) {
|
|
592
643
|
delete updateSet[col];
|
|
593
644
|
}
|
|
594
645
|
|
|
646
|
+
const insertValues: Record<string, unknown> = {
|
|
647
|
+
...payload,
|
|
648
|
+
[primaryKey]: op.row_id,
|
|
649
|
+
[versionColumn]: 1,
|
|
650
|
+
};
|
|
651
|
+
|
|
595
652
|
updated = (await (
|
|
596
|
-
trx.
|
|
653
|
+
trx.insertInto(table) as InsertQueryBuilder<
|
|
597
654
|
ServerDB,
|
|
598
655
|
TableName,
|
|
599
|
-
|
|
600
|
-
UpdateResult
|
|
656
|
+
InsertResult
|
|
601
657
|
>
|
|
602
658
|
)
|
|
603
|
-
.
|
|
604
|
-
.
|
|
659
|
+
.values(insertValues as Insertable<ServerDB[TableName]>)
|
|
660
|
+
.onConflict((oc) =>
|
|
661
|
+
oc
|
|
662
|
+
.column(primaryKeyColumn)
|
|
663
|
+
.doUpdateSet(updateSet as UpdateSetObject)
|
|
664
|
+
)
|
|
605
665
|
.returningAll()
|
|
606
666
|
.executeTakeFirst()) as Record<string, unknown> | undefined;
|
|
607
|
-
|
|
608
|
-
if (!updated) {
|
|
609
|
-
const insertValues: Record<string, unknown> = {
|
|
610
|
-
...payload,
|
|
611
|
-
[primaryKey]: op.row_id,
|
|
612
|
-
[versionColumn]: 1,
|
|
613
|
-
};
|
|
614
|
-
|
|
615
|
-
try {
|
|
616
|
-
updated = (await (
|
|
617
|
-
trx.insertInto(table) as InsertQueryBuilder<
|
|
618
|
-
ServerDB,
|
|
619
|
-
TableName,
|
|
620
|
-
InsertResult
|
|
621
|
-
>
|
|
622
|
-
)
|
|
623
|
-
.values(insertValues as Insertable<ServerDB[TableName]>)
|
|
624
|
-
.returningAll()
|
|
625
|
-
.executeTakeFirst()) as Record<string, unknown> | undefined;
|
|
626
|
-
} catch (err) {
|
|
627
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
628
|
-
if (!isConstraintViolationError(message)) {
|
|
629
|
-
throw err;
|
|
630
|
-
}
|
|
631
|
-
updated = (await (
|
|
632
|
-
trx.updateTable(table) as UpdateQueryBuilder<
|
|
633
|
-
ServerDB,
|
|
634
|
-
TableName,
|
|
635
|
-
TableName,
|
|
636
|
-
UpdateResult
|
|
637
|
-
>
|
|
638
|
-
)
|
|
639
|
-
.set(updateSet as UpdateSetObject)
|
|
640
|
-
.where(ref<string>(primaryKey), '=', op.row_id)
|
|
641
|
-
.returningAll()
|
|
642
|
-
.executeTakeFirst()) as Record<string, unknown> | undefined;
|
|
643
|
-
if (!updated) {
|
|
644
|
-
constraintError = {
|
|
645
|
-
message,
|
|
646
|
-
code: classifyConstraintViolationCode(message),
|
|
647
|
-
};
|
|
648
|
-
}
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
667
|
}
|
|
652
668
|
} catch (err) {
|
|
653
669
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -728,14 +744,170 @@ export function createServerHandler<
|
|
|
728
744
|
};
|
|
729
745
|
};
|
|
730
746
|
|
|
747
|
+
const defaultApplyOperationBatch = async (
|
|
748
|
+
ctx: ServerApplyOperationContext<ServerDB, Auth>,
|
|
749
|
+
operations: BatchApplyOperationInput[]
|
|
750
|
+
): Promise<ApplyOperationResult[]> => {
|
|
751
|
+
if (operations.length === 0) return [];
|
|
752
|
+
|
|
753
|
+
const runSequentialFallback = async (): Promise<ApplyOperationResult[]> => {
|
|
754
|
+
const sequential: ApplyOperationResult[] = [];
|
|
755
|
+
for (const entry of operations) {
|
|
756
|
+
const applied = await defaultApplyOperation(
|
|
757
|
+
ctx,
|
|
758
|
+
entry.op,
|
|
759
|
+
entry.opIndex
|
|
760
|
+
);
|
|
761
|
+
sequential.push(applied);
|
|
762
|
+
if (applied.result.status !== 'applied') {
|
|
763
|
+
break;
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
return sequential;
|
|
767
|
+
};
|
|
768
|
+
|
|
769
|
+
if (operations.length === 1 || authorize) {
|
|
770
|
+
return runSequentialFallback();
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
const trx = ctx.trx;
|
|
774
|
+
const prepared: Array<{
|
|
775
|
+
entry: BatchApplyOperationInput;
|
|
776
|
+
payload: Record<string, unknown>;
|
|
777
|
+
insertValues: Record<string, unknown>;
|
|
778
|
+
}> = [];
|
|
779
|
+
const seenRowIds = new Set<string>();
|
|
780
|
+
const payloadKeySignatures = new Set<string>();
|
|
781
|
+
|
|
782
|
+
for (const entry of operations) {
|
|
783
|
+
const op = entry.op;
|
|
784
|
+
if (op.table !== table || op.op !== 'upsert' || op.base_version != null) {
|
|
785
|
+
return runSequentialFallback();
|
|
786
|
+
}
|
|
787
|
+
if (seenRowIds.has(op.row_id)) {
|
|
788
|
+
return runSequentialFallback();
|
|
789
|
+
}
|
|
790
|
+
seenRowIds.add(op.row_id);
|
|
791
|
+
|
|
792
|
+
const rawPayload = op.payload ?? {};
|
|
793
|
+
const payloadRecord =
|
|
794
|
+
rawPayload !== null && typeof rawPayload === 'object'
|
|
795
|
+
? (rawPayload as Record<string, unknown>)
|
|
796
|
+
: {};
|
|
797
|
+
const payload = applyInboundTransform(
|
|
798
|
+
payloadRecord,
|
|
799
|
+
ctx.schemaVersion
|
|
800
|
+
) as Record<string, unknown>;
|
|
801
|
+
|
|
802
|
+
payloadKeySignatures.add(Object.keys(payload).sort().join('\u0000'));
|
|
803
|
+
|
|
804
|
+
const insertValues: Record<string, unknown> = {
|
|
805
|
+
...payload,
|
|
806
|
+
[primaryKey]: op.row_id,
|
|
807
|
+
[versionColumn]: 1,
|
|
808
|
+
};
|
|
809
|
+
|
|
810
|
+
prepared.push({
|
|
811
|
+
entry,
|
|
812
|
+
payload,
|
|
813
|
+
insertValues,
|
|
814
|
+
});
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
if (prepared.length <= 1 || payloadKeySignatures.size !== 1) {
|
|
818
|
+
return runSequentialFallback();
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
const basePayload = prepared[0]!.payload;
|
|
822
|
+
const updateSet: Record<string, unknown> = {
|
|
823
|
+
...basePayload,
|
|
824
|
+
[versionColumn]: sql`${sql.ref(qualifiedVersionRef)} + 1`,
|
|
825
|
+
};
|
|
826
|
+
delete updateSet[primaryKey];
|
|
827
|
+
for (const col of Object.values(scopeColumns)) {
|
|
828
|
+
delete updateSet[col];
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
try {
|
|
832
|
+
const updatedRows = (await (
|
|
833
|
+
trx.insertInto(table) as InsertQueryBuilder<
|
|
834
|
+
ServerDB,
|
|
835
|
+
TableName,
|
|
836
|
+
InsertResult
|
|
837
|
+
>
|
|
838
|
+
)
|
|
839
|
+
.values(
|
|
840
|
+
prepared.map(
|
|
841
|
+
(item) => item.insertValues as Insertable<ServerDB[TableName]>
|
|
842
|
+
)
|
|
843
|
+
)
|
|
844
|
+
.onConflict((oc) =>
|
|
845
|
+
oc.column(primaryKeyColumn).doUpdateSet(updateSet as UpdateSetObject)
|
|
846
|
+
)
|
|
847
|
+
.returningAll()
|
|
848
|
+
.execute()) as Record<string, unknown>[];
|
|
849
|
+
|
|
850
|
+
const updatedById = new Map<string, Record<string, unknown>>();
|
|
851
|
+
for (const row of updatedRows) {
|
|
852
|
+
const rowIdValue = row[primaryKey];
|
|
853
|
+
if (rowIdValue === null || rowIdValue === undefined) continue;
|
|
854
|
+
updatedById.set(String(rowIdValue), row);
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
const results: ApplyOperationResult[] = [];
|
|
858
|
+
for (const item of prepared) {
|
|
859
|
+
const rowId = item.entry.op.row_id;
|
|
860
|
+
const updated = updatedById.get(rowId);
|
|
861
|
+
if (!updated) {
|
|
862
|
+
return runSequentialFallback();
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
const rowVersion = (updated[versionColumn] as number) ?? 1;
|
|
866
|
+
const scopes = extractScopesImpl(updated);
|
|
867
|
+
const rowJson = applyOutboundTransform(
|
|
868
|
+
updated as Selectable<ServerDB[TableName]>
|
|
869
|
+
);
|
|
870
|
+
|
|
871
|
+
results.push({
|
|
872
|
+
result: { opIndex: item.entry.opIndex, status: 'applied' },
|
|
873
|
+
emittedChanges: [
|
|
874
|
+
{
|
|
875
|
+
table,
|
|
876
|
+
row_id: rowId,
|
|
877
|
+
op: 'upsert',
|
|
878
|
+
row_json: rowJson,
|
|
879
|
+
row_version: rowVersion,
|
|
880
|
+
scopes,
|
|
881
|
+
},
|
|
882
|
+
],
|
|
883
|
+
});
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
return results;
|
|
887
|
+
} catch (err) {
|
|
888
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
889
|
+
if (isConstraintViolationError(message)) {
|
|
890
|
+
return runSequentialFallback();
|
|
891
|
+
}
|
|
892
|
+
throw err;
|
|
893
|
+
}
|
|
894
|
+
};
|
|
895
|
+
|
|
731
896
|
return {
|
|
732
897
|
table,
|
|
733
898
|
scopePatterns,
|
|
734
899
|
dependsOn,
|
|
735
900
|
snapshotChunkTtlMs,
|
|
901
|
+
canRejectSingleOperationWithoutSavepoint:
|
|
902
|
+
options.canRejectSingleOperationWithoutSavepoint ??
|
|
903
|
+
options.applyOperation === undefined,
|
|
736
904
|
resolveScopes: resolveScopesImpl,
|
|
737
905
|
extractScopes: extractScopesImpl,
|
|
738
906
|
snapshot: options.snapshot ?? defaultSnapshot,
|
|
739
907
|
applyOperation: options.applyOperation ?? defaultApplyOperation,
|
|
908
|
+
applyOperationBatch:
|
|
909
|
+
options.applyOperation === undefined
|
|
910
|
+
? defaultApplyOperationBatch
|
|
911
|
+
: undefined,
|
|
740
912
|
};
|
|
741
913
|
}
|