@syncular/server 0.0.6-159 → 0.0.6-165

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.
Files changed (93) hide show
  1. package/dist/blobs/adapters/database.d.ts +26 -9
  2. package/dist/blobs/adapters/database.d.ts.map +1 -1
  3. package/dist/blobs/adapters/database.js +65 -21
  4. package/dist/blobs/adapters/database.js.map +1 -1
  5. package/dist/blobs/manager.d.ts +60 -3
  6. package/dist/blobs/manager.d.ts.map +1 -1
  7. package/dist/blobs/manager.js +227 -56
  8. package/dist/blobs/manager.js.map +1 -1
  9. package/dist/blobs/migrate.d.ts.map +1 -1
  10. package/dist/blobs/migrate.js +16 -8
  11. package/dist/blobs/migrate.js.map +1 -1
  12. package/dist/blobs/types.d.ts +4 -0
  13. package/dist/blobs/types.d.ts.map +1 -1
  14. package/dist/dialect/helpers.d.ts +3 -0
  15. package/dist/dialect/helpers.d.ts.map +1 -1
  16. package/dist/dialect/helpers.js +17 -0
  17. package/dist/dialect/helpers.js.map +1 -1
  18. package/dist/handlers/collection.d.ts +0 -2
  19. package/dist/handlers/collection.d.ts.map +1 -1
  20. package/dist/handlers/collection.js +5 -56
  21. package/dist/handlers/collection.js.map +1 -1
  22. package/dist/handlers/create-handler.d.ts +0 -4
  23. package/dist/handlers/create-handler.d.ts.map +1 -1
  24. package/dist/handlers/create-handler.js +6 -34
  25. package/dist/handlers/create-handler.js.map +1 -1
  26. package/dist/notify.d.ts.map +1 -1
  27. package/dist/notify.js +13 -37
  28. package/dist/notify.js.map +1 -1
  29. package/dist/proxy/collection.d.ts +0 -2
  30. package/dist/proxy/collection.d.ts.map +1 -1
  31. package/dist/proxy/collection.js +2 -17
  32. package/dist/proxy/collection.js.map +1 -1
  33. package/dist/proxy/handler.d.ts +1 -1
  34. package/dist/proxy/handler.d.ts.map +1 -1
  35. package/dist/proxy/handler.js +1 -2
  36. package/dist/proxy/handler.js.map +1 -1
  37. package/dist/proxy/index.d.ts +1 -1
  38. package/dist/proxy/index.d.ts.map +1 -1
  39. package/dist/proxy/index.js +1 -1
  40. package/dist/proxy/index.js.map +1 -1
  41. package/dist/proxy/oplog.d.ts.map +1 -1
  42. package/dist/proxy/oplog.js +1 -7
  43. package/dist/proxy/oplog.js.map +1 -1
  44. package/dist/prune.d.ts.map +1 -1
  45. package/dist/prune.js +1 -13
  46. package/dist/prune.js.map +1 -1
  47. package/dist/pull.d.ts.map +1 -1
  48. package/dist/pull.js +186 -54
  49. package/dist/pull.js.map +1 -1
  50. package/dist/push.d.ts +1 -1
  51. package/dist/push.d.ts.map +1 -1
  52. package/dist/push.js +9 -36
  53. package/dist/push.js.map +1 -1
  54. package/dist/snapshot-chunks/db-metadata.d.ts +18 -0
  55. package/dist/snapshot-chunks/db-metadata.d.ts.map +1 -1
  56. package/dist/snapshot-chunks/db-metadata.js +71 -23
  57. package/dist/snapshot-chunks/db-metadata.js.map +1 -1
  58. package/dist/snapshot-chunks.d.ts +5 -1
  59. package/dist/snapshot-chunks.d.ts.map +1 -1
  60. package/dist/snapshot-chunks.js +14 -1
  61. package/dist/snapshot-chunks.js.map +1 -1
  62. package/dist/stats.d.ts.map +1 -1
  63. package/dist/stats.js +1 -13
  64. package/dist/stats.js.map +1 -1
  65. package/dist/subscriptions/resolve.d.ts +1 -1
  66. package/dist/subscriptions/resolve.d.ts.map +1 -1
  67. package/dist/subscriptions/resolve.js +3 -16
  68. package/dist/subscriptions/resolve.js.map +1 -1
  69. package/dist/sync.d.ts.map +1 -1
  70. package/dist/sync.js +2 -4
  71. package/dist/sync.js.map +1 -1
  72. package/package.json +2 -2
  73. package/src/blobs/adapters/database.test.ts +7 -0
  74. package/src/blobs/adapters/database.ts +119 -39
  75. package/src/blobs/manager.ts +339 -53
  76. package/src/blobs/migrate.ts +16 -8
  77. package/src/blobs/types.ts +4 -0
  78. package/src/dialect/helpers.ts +19 -0
  79. package/src/handlers/collection.ts +17 -86
  80. package/src/handlers/create-handler.ts +9 -44
  81. package/src/notify.ts +15 -40
  82. package/src/proxy/collection.ts +5 -27
  83. package/src/proxy/handler.ts +2 -2
  84. package/src/proxy/index.ts +0 -2
  85. package/src/proxy/oplog.ts +1 -9
  86. package/src/prune.ts +1 -12
  87. package/src/pull.ts +280 -105
  88. package/src/push.ts +14 -43
  89. package/src/snapshot-chunks/db-metadata.ts +107 -27
  90. package/src/snapshot-chunks.ts +18 -0
  91. package/src/stats.ts +1 -12
  92. package/src/subscriptions/resolve.ts +4 -20
  93. package/src/sync.ts +6 -6
@@ -6,11 +6,69 @@
6
6
  */
7
7
  import { parseBlobHash } from '@syncular/core';
8
8
  import { sql } from 'kysely';
9
+ export const BLOB_CLEANUP_TUNING_PRESETS = {
10
+ server: {
11
+ batchSize: 500,
12
+ storageDeleteConcurrency: 16,
13
+ referenceCheckConcurrency: 24,
14
+ },
15
+ edge: {
16
+ batchSize: 100,
17
+ storageDeleteConcurrency: 4,
18
+ referenceCheckConcurrency: 8,
19
+ },
20
+ };
9
21
  /**
10
22
  * Create a blob manager for handling server-side blob operations.
11
23
  */
12
24
  export function createBlobManager(options) {
13
- const { db, adapter, defaultExpiresIn = 3600, uploadTtlSeconds = 86400, } = options;
25
+ const { db, adapter, defaultExpiresIn = 3600, uploadTtlSeconds = 86400, cleanupTuning, } = options;
26
+ function positiveIntOrDefault(value, fallback) {
27
+ if (value === undefined)
28
+ return fallback;
29
+ if (!Number.isFinite(value))
30
+ return fallback;
31
+ const normalized = Math.trunc(value);
32
+ return normalized > 0 ? normalized : fallback;
33
+ }
34
+ function resolvePartitionId(partitionId) {
35
+ return partitionId ?? 'default';
36
+ }
37
+ function toStoragePartitionOptions(partitionId) {
38
+ if (partitionId === 'default')
39
+ return {};
40
+ return { partitionId };
41
+ }
42
+ const CLEANUP_BATCH_SIZE = positiveIntOrDefault(cleanupTuning?.batchSize, 250);
43
+ const STORAGE_DELETE_CONCURRENCY = positiveIntOrDefault(cleanupTuning?.storageDeleteConcurrency, 8);
44
+ const REFERENCE_CHECK_CONCURRENCY = positiveIntOrDefault(cleanupTuning?.referenceCheckConcurrency, 16);
45
+ async function runWithConcurrency(items, concurrency, worker) {
46
+ if (items.length === 0)
47
+ return;
48
+ const workerCount = Math.max(1, Math.min(concurrency, items.length));
49
+ let nextIndex = 0;
50
+ async function runWorker() {
51
+ while (nextIndex < items.length) {
52
+ const index = nextIndex;
53
+ nextIndex += 1;
54
+ const item = items[index];
55
+ if (item === undefined)
56
+ continue;
57
+ await worker(item);
58
+ }
59
+ }
60
+ await Promise.all(Array.from({ length: workerCount }, () => runWorker()));
61
+ }
62
+ async function deleteUploadRowsByHashes(partitionId, hashes) {
63
+ if (hashes.length === 0)
64
+ return 0;
65
+ const deletedResult = await sql `
66
+ delete from ${sql.table('sync_blob_uploads')}
67
+ where partition_id = ${partitionId}
68
+ and hash in (${sql.join(hashes)})
69
+ `.execute(db);
70
+ return Number(deletedResult.numAffectedRows ?? 0);
71
+ }
14
72
  return {
15
73
  /**
16
74
  * Initiate a blob upload.
@@ -19,18 +77,22 @@ export function createBlobManager(options) {
19
77
  */
20
78
  async initiateUpload(opts) {
21
79
  const { hash, size, mimeType, actorId } = opts;
80
+ const partitionId = resolvePartitionId(opts.partitionId);
81
+ const storagePartitionOptions = toStoragePartitionOptions(partitionId);
22
82
  // Validate hash format
23
83
  if (!parseBlobHash(hash)) {
24
84
  throw new BlobValidationError('Invalid blob hash format');
25
85
  }
26
86
  // Check if blob already exists (deduplication)
27
- const exists = await adapter.exists(hash);
87
+ const exists = await adapter.exists(hash, storagePartitionOptions);
28
88
  if (exists) {
29
89
  // Also check if we have a complete upload record
30
90
  const existingResult = await sql `
31
91
  select status
32
92
  from ${sql.table('sync_blob_uploads')}
33
- where hash = ${hash} and status = 'complete'
93
+ where partition_id = ${partitionId}
94
+ and hash = ${hash}
95
+ and status = 'complete'
34
96
  limit 1
35
97
  `.execute(db);
36
98
  const existing = existingResult.rows[0];
@@ -42,6 +104,7 @@ export function createBlobManager(options) {
42
104
  const existsCompletedAt = new Date().toISOString();
43
105
  await sql `
44
106
  insert into ${sql.table('sync_blob_uploads')} (
107
+ partition_id,
45
108
  hash,
46
109
  size,
47
110
  mime_type,
@@ -51,6 +114,7 @@ export function createBlobManager(options) {
51
114
  completed_at
52
115
  )
53
116
  values (
117
+ ${partitionId},
54
118
  ${hash},
55
119
  ${size},
56
120
  ${mimeType},
@@ -59,7 +123,7 @@ export function createBlobManager(options) {
59
123
  ${existsExpiresAt},
60
124
  ${existsCompletedAt}
61
125
  )
62
- on conflict (hash) do nothing
126
+ on conflict (partition_id, hash) do nothing
63
127
  `.execute(db);
64
128
  return { exists: true };
65
129
  }
@@ -67,6 +131,7 @@ export function createBlobManager(options) {
67
131
  const expiresAt = new Date(Date.now() + uploadTtlSeconds * 1000).toISOString();
68
132
  await sql `
69
133
  insert into ${sql.table('sync_blob_uploads')} (
134
+ partition_id,
70
135
  hash,
71
136
  size,
72
137
  mime_type,
@@ -76,6 +141,7 @@ export function createBlobManager(options) {
76
141
  completed_at
77
142
  )
78
143
  values (
144
+ ${partitionId},
79
145
  ${hash},
80
146
  ${size},
81
147
  ${mimeType},
@@ -84,7 +150,7 @@ export function createBlobManager(options) {
84
150
  ${expiresAt},
85
151
  ${null}
86
152
  )
87
- on conflict (hash)
153
+ on conflict (partition_id, hash)
88
154
  do update set
89
155
  size = ${size},
90
156
  mime_type = ${mimeType},
@@ -96,6 +162,7 @@ export function createBlobManager(options) {
96
162
  // Generate presigned upload URL
97
163
  const signed = await adapter.signUpload({
98
164
  hash,
165
+ partitionId: storagePartitionOptions.partitionId,
99
166
  size,
100
167
  mimeType,
101
168
  expiresIn: defaultExpiresIn,
@@ -113,22 +180,28 @@ export function createBlobManager(options) {
113
180
  *
114
181
  * Verifies the blob exists in storage and marks the upload as complete.
115
182
  */
116
- async completeUpload(hash) {
183
+ async completeUpload(hash, options) {
184
+ const partitionId = resolvePartitionId(options?.partitionId);
185
+ const storagePartitionOptions = toStoragePartitionOptions(partitionId);
117
186
  // Validate hash format
118
187
  if (!parseBlobHash(hash)) {
119
188
  return { ok: false, error: 'Invalid blob hash format' };
120
189
  }
121
190
  // Check upload record exists
122
191
  const uploadResult = await sql `
123
- select hash, size, mime_type, status, created_at
192
+ select hash, size, mime_type, status, actor_id, created_at
124
193
  from ${sql.table('sync_blob_uploads')}
125
- where hash = ${hash}
194
+ where partition_id = ${partitionId} and hash = ${hash}
126
195
  limit 1
127
196
  `.execute(db);
128
197
  const upload = uploadResult.rows[0];
129
198
  if (!upload) {
130
199
  return { ok: false, error: 'Upload not found' };
131
200
  }
201
+ if (options?.actorId !== undefined &&
202
+ upload.actor_id !== options.actorId) {
203
+ return { ok: false, error: 'FORBIDDEN' };
204
+ }
132
205
  if (upload.status === 'complete') {
133
206
  // Already complete - return metadata
134
207
  return {
@@ -143,13 +216,13 @@ export function createBlobManager(options) {
143
216
  };
144
217
  }
145
218
  // Verify blob exists in storage
146
- const exists = await adapter.exists(hash);
219
+ const exists = await adapter.exists(hash, storagePartitionOptions);
147
220
  if (!exists) {
148
221
  return { ok: false, error: 'Blob not found in storage' };
149
222
  }
150
223
  // Optionally verify size matches
151
224
  if (adapter.getMetadata) {
152
- const meta = await adapter.getMetadata(hash);
225
+ const meta = await adapter.getMetadata(hash, storagePartitionOptions);
153
226
  if (meta && meta.size !== upload.size) {
154
227
  return {
155
228
  ok: false,
@@ -162,7 +235,7 @@ export function createBlobManager(options) {
162
235
  await sql `
163
236
  update ${sql.table('sync_blob_uploads')}
164
237
  set status = 'complete', completed_at = ${completedAt}
165
- where hash = ${hash}
238
+ where partition_id = ${partitionId} and hash = ${hash}
166
239
  `.execute(db);
167
240
  return {
168
241
  ok: true,
@@ -180,6 +253,8 @@ export function createBlobManager(options) {
180
253
  */
181
254
  async getDownloadUrl(opts) {
182
255
  const { hash } = opts;
256
+ const partitionId = resolvePartitionId(opts.partitionId);
257
+ const storagePartitionOptions = toStoragePartitionOptions(partitionId);
183
258
  // Validate hash format
184
259
  if (!parseBlobHash(hash)) {
185
260
  throw new BlobNotFoundError('Invalid blob hash format');
@@ -188,7 +263,9 @@ export function createBlobManager(options) {
188
263
  const uploadResult = await sql `
189
264
  select hash, size, mime_type, status, created_at
190
265
  from ${sql.table('sync_blob_uploads')}
191
- where hash = ${hash} and status = 'complete'
266
+ where partition_id = ${partitionId}
267
+ and hash = ${hash}
268
+ and status = 'complete'
192
269
  limit 1
193
270
  `.execute(db);
194
271
  const upload = uploadResult.rows[0];
@@ -198,6 +275,7 @@ export function createBlobManager(options) {
198
275
  // Generate presigned download URL
199
276
  const url = await adapter.signDownload({
200
277
  hash,
278
+ partitionId: storagePartitionOptions.partitionId,
201
279
  expiresIn: defaultExpiresIn,
202
280
  });
203
281
  const expiresAt = new Date(Date.now() + defaultExpiresIn * 1000).toISOString();
@@ -213,10 +291,50 @@ export function createBlobManager(options) {
213
291
  },
214
292
  };
215
293
  },
294
+ /**
295
+ * Get upload record for a blob hash, including pending uploads.
296
+ */
297
+ async getUploadRecord(hash, options) {
298
+ const partitionId = resolvePartitionId(options?.partitionId);
299
+ if (!parseBlobHash(hash)) {
300
+ return null;
301
+ }
302
+ const uploadResult = await sql `
303
+ select
304
+ partition_id,
305
+ hash,
306
+ size,
307
+ mime_type,
308
+ status,
309
+ actor_id,
310
+ created_at,
311
+ expires_at,
312
+ completed_at
313
+ from ${sql.table('sync_blob_uploads')}
314
+ where partition_id = ${partitionId} and hash = ${hash}
315
+ limit 1
316
+ `.execute(db);
317
+ const upload = uploadResult.rows[0];
318
+ if (!upload) {
319
+ return null;
320
+ }
321
+ return {
322
+ partitionId: upload.partition_id,
323
+ hash: upload.hash,
324
+ size: upload.size,
325
+ mimeType: upload.mime_type,
326
+ status: upload.status,
327
+ actorId: upload.actor_id,
328
+ createdAt: upload.created_at,
329
+ expiresAt: upload.expires_at,
330
+ completedAt: upload.completed_at,
331
+ };
332
+ },
216
333
  /**
217
334
  * Get blob metadata without generating a download URL.
218
335
  */
219
- async getMetadata(hash) {
336
+ async getMetadata(hash, options) {
337
+ const partitionId = resolvePartitionId(options?.partitionId);
220
338
  // Validate hash format
221
339
  if (!parseBlobHash(hash)) {
222
340
  return null;
@@ -224,7 +342,9 @@ export function createBlobManager(options) {
224
342
  const uploadResult = await sql `
225
343
  select hash, size, mime_type, status, created_at
226
344
  from ${sql.table('sync_blob_uploads')}
227
- where hash = ${hash} and status = 'complete'
345
+ where partition_id = ${partitionId}
346
+ and hash = ${hash}
347
+ and status = 'complete'
228
348
  limit 1
229
349
  `.execute(db);
230
350
  const upload = uploadResult.rows[0];
@@ -242,13 +362,16 @@ export function createBlobManager(options) {
242
362
  /**
243
363
  * Check if a blob exists and is complete.
244
364
  */
245
- async exists(hash) {
365
+ async exists(hash, options) {
366
+ const partitionId = resolvePartitionId(options?.partitionId);
246
367
  if (!parseBlobHash(hash))
247
368
  return false;
248
369
  const rowResult = await sql `
249
370
  select hash
250
371
  from ${sql.table('sync_blob_uploads')}
251
- where hash = ${hash} and status = 'complete'
372
+ where partition_id = ${partitionId}
373
+ and hash = ${hash}
374
+ and status = 'complete'
252
375
  limit 1
253
376
  `.execute(db);
254
377
  return rowResult.rows.length > 0;
@@ -262,53 +385,100 @@ export function createBlobManager(options) {
262
385
  */
263
386
  async cleanup(options) {
264
387
  const now = new Date().toISOString();
265
- // Find expired pending uploads
266
- const expiredResult = await sql `
267
- select hash
268
- from ${sql.table('sync_blob_uploads')}
269
- where status = 'pending' and expires_at < ${now}
270
- `.execute(db);
271
- const expired = expiredResult.rows;
388
+ const partitionId = resolvePartitionId(options?.partitionId);
389
+ const storagePartitionOptions = toStoragePartitionOptions(partitionId);
272
390
  let deleted = 0;
273
- for (const row of expired) {
391
+ // Find and delete expired pending uploads in batches.
392
+ while (true) {
393
+ const expiredResult = await sql `
394
+ select hash
395
+ from ${sql.table('sync_blob_uploads')}
396
+ where partition_id = ${partitionId}
397
+ and status = 'pending'
398
+ and expires_at < ${now}
399
+ order by expires_at asc
400
+ limit ${CLEANUP_BATCH_SIZE}
401
+ `.execute(db);
402
+ const expiredHashes = expiredResult.rows
403
+ .map((row) => row.hash)
404
+ .filter((hash) => typeof hash === 'string');
405
+ if (expiredHashes.length === 0) {
406
+ break;
407
+ }
274
408
  if (options?.deleteFromStorage) {
275
- try {
276
- await adapter.delete(row.hash);
277
- }
278
- catch {
279
- // Ignore storage errors during cleanup
280
- }
409
+ await runWithConcurrency(expiredHashes, STORAGE_DELETE_CONCURRENCY, async (hash) => {
410
+ try {
411
+ await adapter.delete(hash, storagePartitionOptions);
412
+ }
413
+ catch {
414
+ // Ignore storage errors during cleanup
415
+ }
416
+ });
417
+ }
418
+ deleted += await deleteUploadRowsByHashes(partitionId, expiredHashes);
419
+ if (expiredHashes.length < CLEANUP_BATCH_SIZE) {
420
+ break;
281
421
  }
282
- await sql `
283
- delete from ${sql.table('sync_blob_uploads')}
284
- where hash = ${row.hash}
285
- `.execute(db);
286
- deleted++;
287
422
  }
288
423
  // If reference check provided, also clean up unreferenced complete uploads
424
+ // in batches with bounded parallelism.
289
425
  if (options?.isReferenced) {
290
- const completeResult = await sql `
291
- select hash
292
- from ${sql.table('sync_blob_uploads')}
293
- where status = 'complete'
294
- `.execute(db);
295
- const complete = completeResult.rows;
296
- for (const row of complete) {
297
- const referenced = await options.isReferenced(row.hash);
298
- if (!referenced) {
426
+ const isReferenced = options.isReferenced;
427
+ let afterHash = null;
428
+ while (true) {
429
+ let completeRows;
430
+ if (afterHash === null) {
431
+ const completeResult = await sql `
432
+ select hash
433
+ from ${sql.table('sync_blob_uploads')}
434
+ where partition_id = ${partitionId}
435
+ and status = 'complete'
436
+ order by hash asc
437
+ limit ${CLEANUP_BATCH_SIZE}
438
+ `.execute(db);
439
+ completeRows = completeResult.rows;
440
+ }
441
+ else {
442
+ const completeResult = await sql `
443
+ select hash
444
+ from ${sql.table('sync_blob_uploads')}
445
+ where partition_id = ${partitionId}
446
+ and status = 'complete'
447
+ and hash > ${afterHash}
448
+ order by hash asc
449
+ limit ${CLEANUP_BATCH_SIZE}
450
+ `.execute(db);
451
+ completeRows = completeResult.rows;
452
+ }
453
+ const completeHashes = completeRows
454
+ .map((row) => row.hash)
455
+ .filter((hash) => typeof hash === 'string');
456
+ if (completeHashes.length === 0) {
457
+ break;
458
+ }
459
+ afterHash = completeHashes[completeHashes.length - 1] ?? afterHash;
460
+ const unreferencedHashes = [];
461
+ await runWithConcurrency(completeHashes, REFERENCE_CHECK_CONCURRENCY, async (hash) => {
462
+ const referenced = await isReferenced(hash);
463
+ if (!referenced) {
464
+ unreferencedHashes.push(hash);
465
+ }
466
+ });
467
+ if (unreferencedHashes.length > 0) {
299
468
  if (options?.deleteFromStorage) {
300
- try {
301
- await adapter.delete(row.hash);
302
- }
303
- catch {
304
- // Ignore storage errors during cleanup
305
- }
469
+ await runWithConcurrency(unreferencedHashes, STORAGE_DELETE_CONCURRENCY, async (hash) => {
470
+ try {
471
+ await adapter.delete(hash, storagePartitionOptions);
472
+ }
473
+ catch {
474
+ // Ignore storage errors during cleanup
475
+ }
476
+ });
306
477
  }
307
- await sql `
308
- delete from ${sql.table('sync_blob_uploads')}
309
- where hash = ${row.hash}
310
- `.execute(db);
311
- deleted++;
478
+ deleted += await deleteUploadRowsByHashes(partitionId, unreferencedHashes);
479
+ }
480
+ if (completeHashes.length < CLEANUP_BATCH_SIZE) {
481
+ break;
312
482
  }
313
483
  }
314
484
  }
@@ -352,7 +522,7 @@ export function createBlobManager(options) {
352
522
  */
353
523
  export function createBlobCleanupScheduler(options) {
354
524
  const { blobManager, intervalMs = 3600000, // 1 hour
355
- deleteFromStorage = true, isReferenced, onCleanup, } = options;
525
+ deleteFromStorage = true, isReferenced, partitionId, onCleanup, } = options;
356
526
  let intervalId = null;
357
527
  let isRunning = false;
358
528
  const runCleanup = async () => {
@@ -364,6 +534,7 @@ export function createBlobCleanupScheduler(options) {
364
534
  const result = await blobManager.cleanup({
365
535
  deleteFromStorage,
366
536
  isReferenced,
537
+ partitionId,
367
538
  });
368
539
  onCleanup?.({ deleted: result.deleted });
369
540
  return { deleted: result.deleted };
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/blobs/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/blobs/manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/blobs/migrate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,SAAS,CAAC;AAgF7D;;;;;GAKG;AACH,wBAAsB,+BAA+B,CAAC,EAAE,SAAS,UAAU,EACzE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAAC,EAAE,SAAS,UAAU,EACvE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,SAAS,UAAU,EACxD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAGf"}
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/blobs/migrate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,SAAS,CAAC;AAoF7D;;;;;GAKG;AACH,wBAAsB,+BAA+B,CAAC,EAAE,SAAS,UAAU,EACzE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAAC,EAAE,SAAS,UAAU,EACvE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,SAAS,UAAU,EACxD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -15,7 +15,8 @@ async function ensureBlobUploadsSchemaPostgres(db) {
15
15
  await db.schema
16
16
  .createTable('sync_blob_uploads')
17
17
  .ifNotExists()
18
- .addColumn('hash', 'text', (col) => col.primaryKey())
18
+ .addColumn('partition_id', 'text', (col) => col.notNull())
19
+ .addColumn('hash', 'text', (col) => col.notNull())
19
20
  .addColumn('size', 'bigint', (col) => col.notNull())
20
21
  .addColumn('mime_type', 'text', (col) => col.notNull())
21
22
  .addColumn('status', 'text', (col) => col.notNull())
@@ -23,18 +24,19 @@ async function ensureBlobUploadsSchemaPostgres(db) {
23
24
  .addColumn('created_at', 'timestamptz', (col) => col.notNull().defaultTo(sql `now()`))
24
25
  .addColumn('expires_at', 'timestamptz', (col) => col.notNull())
25
26
  .addColumn('completed_at', 'timestamptz')
27
+ .addPrimaryKeyConstraint('pk_sync_blob_uploads', ['partition_id', 'hash'])
26
28
  .execute();
27
29
  await db.schema
28
30
  .createIndex('idx_sync_blob_uploads_status')
29
31
  .ifNotExists()
30
32
  .on('sync_blob_uploads')
31
- .columns(['status'])
33
+ .columns(['partition_id', 'status'])
32
34
  .execute();
33
35
  await db.schema
34
36
  .createIndex('idx_sync_blob_uploads_expires_at')
35
37
  .ifNotExists()
36
38
  .on('sync_blob_uploads')
37
- .columns(['expires_at'])
39
+ .columns(['partition_id', 'expires_at'])
38
40
  .execute();
39
41
  }
40
42
  /**
@@ -47,7 +49,8 @@ async function ensureBlobUploadsSchemasSqlite(db) {
47
49
  await db.schema
48
50
  .createTable('sync_blob_uploads')
49
51
  .ifNotExists()
50
- .addColumn('hash', 'text', (col) => col.primaryKey())
52
+ .addColumn('partition_id', 'text', (col) => col.notNull())
53
+ .addColumn('hash', 'text', (col) => col.notNull())
51
54
  .addColumn('size', 'integer', (col) => col.notNull())
52
55
  .addColumn('mime_type', 'text', (col) => col.notNull())
53
56
  .addColumn('status', 'text', (col) => col.notNull())
@@ -55,18 +58,19 @@ async function ensureBlobUploadsSchemasSqlite(db) {
55
58
  .addColumn('created_at', 'text', (col) => col.notNull().defaultTo(sql `(datetime('now'))`))
56
59
  .addColumn('expires_at', 'text', (col) => col.notNull())
57
60
  .addColumn('completed_at', 'text')
61
+ .addPrimaryKeyConstraint('pk_sync_blob_uploads', ['partition_id', 'hash'])
58
62
  .execute();
59
63
  await db.schema
60
64
  .createIndex('idx_sync_blob_uploads_status')
61
65
  .ifNotExists()
62
66
  .on('sync_blob_uploads')
63
- .columns(['status'])
67
+ .columns(['partition_id', 'status'])
64
68
  .execute();
65
69
  await db.schema
66
70
  .createIndex('idx_sync_blob_uploads_expires_at')
67
71
  .ifNotExists()
68
72
  .on('sync_blob_uploads')
69
- .columns(['expires_at'])
73
+ .columns(['partition_id', 'expires_at'])
70
74
  .execute();
71
75
  }
72
76
  /**
@@ -82,11 +86,13 @@ export async function ensureBlobStorageSchemaPostgres(db) {
82
86
  await db.schema
83
87
  .createTable('sync_blobs')
84
88
  .ifNotExists()
85
- .addColumn('hash', 'text', (col) => col.primaryKey())
89
+ .addColumn('partition_id', 'text', (col) => col.notNull())
90
+ .addColumn('hash', 'text', (col) => col.notNull())
86
91
  .addColumn('size', 'bigint', (col) => col.notNull())
87
92
  .addColumn('mime_type', 'text', (col) => col.notNull())
88
93
  .addColumn('body', 'bytea', (col) => col.notNull())
89
94
  .addColumn('created_at', 'timestamptz', (col) => col.notNull().defaultTo(sql `now()`))
95
+ .addPrimaryKeyConstraint('pk_sync_blobs', ['partition_id', 'hash'])
90
96
  .execute();
91
97
  }
92
98
  /**
@@ -102,11 +108,13 @@ export async function ensureBlobStorageSchemaSqlite(db) {
102
108
  await db.schema
103
109
  .createTable('sync_blobs')
104
110
  .ifNotExists()
105
- .addColumn('hash', 'text', (col) => col.primaryKey())
111
+ .addColumn('partition_id', 'text', (col) => col.notNull())
112
+ .addColumn('hash', 'text', (col) => col.notNull())
106
113
  .addColumn('size', 'integer', (col) => col.notNull())
107
114
  .addColumn('mime_type', 'text', (col) => col.notNull())
108
115
  .addColumn('body', 'blob', (col) => col.notNull())
109
116
  .addColumn('created_at', 'text', (col) => col.notNull().defaultTo(sql `(datetime('now'))`))
117
+ .addPrimaryKeyConstraint('pk_sync_blobs', ['partition_id', 'hash'])
110
118
  .execute();
111
119
  }
112
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/blobs/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/blobs/migrate.ts"],"names":[],"mappings":"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"}