@mauryasumit/driftdb 2.0.1 → 6.0.0

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/README.md CHANGED
@@ -109,12 +109,13 @@ npm install driftdb
109
109
  ### Schema-based API (recommended)
110
110
 
111
111
  ```typescript
112
- import { DB, Column } from 'driftdb';
113
-
114
- const db = new DB({
115
- sqlitePath: './data/myapp.sqlite',
116
- s3Config: {
117
- bucket: 'my-app-backups',
112
+ import { DB, Column } from 'driftdb';
113
+
114
+ const db = new DB({
115
+ dbName: 'myapp-prod',
116
+ sqlitePath: './data/myapp.sqlite',
117
+ s3Config: {
118
+ bucket: 'my-app-backups',
118
119
  region: 'us-east-1',
119
120
  },
120
121
  });
@@ -151,10 +152,10 @@ db.close();
151
152
  ### Class-based API
152
153
 
153
154
  ```typescript
154
- import { DB, Model, Column } from 'driftdb';
155
- import type { ModelSchema } from 'driftdb';
156
-
157
- const db = new DB({ sqlitePath: './data.sqlite' });
155
+ import { DB, Model, Column } from 'driftdb';
156
+ import type { ModelSchema } from 'driftdb';
157
+
158
+ const db = new DB({ dbName: 'users-db', sqlitePath: './data.sqlite' });
158
159
 
159
160
  class User extends Model {
160
161
  static tableName = 'users';
@@ -431,7 +432,7 @@ const schema = {
431
432
  - Serializes them into a compressed (optionally encrypted) JSON batch
432
433
  - Uploads the batch to S3
433
434
  - Marks those entries as synced in SQLite
434
- - Updates the node's `manifest.json` on S3
435
+ - Updates the database manifest on S3
435
436
  - If `latestSequence % snapshotEveryNLogs === 0`, enqueues a snapshot job
436
437
 
437
438
  3. **On crash/restart**, the sync engine calls `resetStuck()` on the queue, which re-queues any jobs that were "processing" when the process died. Since S3 keys are deterministic, re-uploading is safe.
@@ -449,16 +450,34 @@ const schema = {
449
450
  manifest.json ← pointer to latest snapshot + sequence
450
451
  ```
451
452
 
452
- **`manifest.json` example:**
453
- ```json
454
- {
455
- "nodeId": "a1b2c3d4e5f6",
456
- "latestSnapshotKey": "nodes/a1b2c3/snapshots/1704067200000.sqlite",
457
- "latestSnapshotTimestamp": 1704067200000,
458
- "latestLogSequence": 1500,
459
- "updatedAt": 1704070800000
460
- }
461
- ```
453
+ **`manifest.json` example:**
454
+ ```json
455
+ {
456
+ "dbName": "crm-prod",
457
+ "nodeId": "a1b2c3d4e5f6",
458
+ "latestSnapshotKey": "databases/crm-prod/nodes/a1b2c3d4e5f6/snapshots/1704067200000.sqlite",
459
+ "latestSnapshotTimestamp": 1704067200000,
460
+ "latestLogSequence": 1500,
461
+ "updatedAt": 1704070800000
462
+ }
463
+ ```
464
+
465
+ Current releases use a database-scoped layout so multiple logical databases can share one bucket safely:
466
+
467
+ ```text
468
+ {prefix}/
469
+ databases/{dbName}/
470
+ manifest.json
471
+ nodes/{nodeId}/
472
+ logs/
473
+ snapshots/
474
+ ```
475
+
476
+ `dbName` is required in `DBConfig`. DriftDB uses it to:
477
+
478
+ - isolate each application database under `databases/{dbName}`
479
+ - restore the latest snapshot after a local SQLite file is deleted
480
+ - persist the local `nodeId` for that selected database so restarts reuse the same node identity
462
481
 
463
482
  **Log batch example:**
464
483
  ```json
@@ -507,10 +526,11 @@ Both are optional and apply to S3 uploads only. Local SQLite is never compressed
507
526
  Enabled by default (`compression: true`). Uses Node.js built-in `zlib` (gzip, `Z_BEST_SPEED`). Typical JSON log batches compress 60–80%.
508
527
 
509
528
  ```typescript
510
- const db = new DB({
511
- sqlitePath: './data.sqlite',
512
- s3Config: { bucket: 'my-bucket', region: 'us-east-1' },
513
- compression: true, // default: true
529
+ const db = new DB({
530
+ dbName: 'myapp-prod',
531
+ sqlitePath: './data.sqlite',
532
+ s3Config: { bucket: 'my-bucket', region: 'us-east-1' },
533
+ compression: true, // default: true
514
534
  });
515
535
  ```
516
536
 
@@ -519,10 +539,11 @@ const db = new DB({
519
539
  Uses AES-256-GCM via Node.js built-in `crypto`. Encryption happens **after** compression. Each upload uses a fresh random IV, and the auth tag is prepended to the ciphertext.
520
540
 
521
541
  ```typescript
522
- const db = new DB({
523
- sqlitePath: './data.sqlite',
524
- s3Config: { bucket: 'my-bucket', region: 'us-east-1' },
525
- encryption: {
542
+ const db = new DB({
543
+ dbName: 'myapp-prod',
544
+ sqlitePath: './data.sqlite',
545
+ s3Config: { bucket: 'my-bucket', region: 'us-east-1' },
546
+ encryption: {
526
547
  key: 'a'.repeat(64), // 64 hex chars = 32 bytes = AES-256
527
548
  },
528
549
  });
@@ -559,10 +580,11 @@ attempt 5: 8000ms delay (capped at maxDelayMs)
559
580
 
560
581
  Configure via `retryConfig`:
561
582
  ```typescript
562
- const db = new DB({
563
- retryConfig: {
564
- maxRetries: 5,
565
- baseDelayMs: 500,
583
+ const db = new DB({
584
+ dbName: 'myapp-prod',
585
+ retryConfig: {
586
+ maxRetries: 5,
587
+ baseDelayMs: 500,
566
588
  maxDelayMs: 30_000,
567
589
  },
568
590
  });
@@ -577,7 +599,7 @@ const db = new DB({
577
599
  ### Verifying DB health on startup
578
600
 
579
601
  ```typescript
580
- const db = new DB({ sqlitePath: './data.sqlite' });
602
+ const db = new DB({ dbName: 'myapp-prod', sqlitePath: './data.sqlite' });
581
603
 
582
604
  if (!db.integrityCheck()) {
583
605
  console.error('DB corrupted — restore from S3 snapshot');
@@ -633,8 +655,9 @@ db.transaction(() => {
633
655
  ## Configuration Reference
634
656
 
635
657
  ```typescript
636
- interface DBConfig {
637
- sqlitePath: string; // Path to SQLite file, or ':memory:'
658
+ interface DBConfig {
659
+ dbName: string; // Required logical database name used for S3 isolation/restores
660
+ sqlitePath: string; // Path to SQLite file, or ':memory:'
638
661
 
639
662
  s3Config?: {
640
663
  bucket: string; // S3 bucket name
@@ -646,7 +669,7 @@ interface DBConfig {
646
669
  forcePathStyle?: boolean; // Required for MinIO (default: true if endpoint set)
647
670
  };
648
671
 
649
- nodeId?: string; // Stable ID for this instance (auto-generated if omitted)
672
+ nodeId?: string; // Stable ID for this local node within the selected dbName
650
673
  autoSync?: boolean; // Start sync automatically (default: true if s3Config set)
651
674
  syncIntervalMs?: number; // How often to sync (default: 5000ms)
652
675
  snapshotEveryNLogs?: number; // Take snapshot every N log entries (default: 1000)
@@ -672,9 +695,10 @@ interface DBConfig {
672
695
  ### Using with LocalStack / MinIO
673
696
 
674
697
  ```typescript
675
- const db = new DB({
676
- sqlitePath: './local.sqlite',
677
- s3Config: {
698
+ const db = new DB({
699
+ dbName: 'local-dev',
700
+ sqlitePath: './local.sqlite',
701
+ s3Config: {
678
702
  bucket: 'local-test',
679
703
  region: 'us-east-1',
680
704
  endpoint: 'http://localhost:4566', // LocalStack
@@ -690,10 +714,11 @@ const db = new DB({
690
714
  Disable auto-sync and flush on demand:
691
715
 
692
716
  ```typescript
693
- const db = new DB({
694
- sqlitePath: './data.sqlite',
695
- s3Config: { bucket: 'my-bucket', region: 'us-east-1' },
696
- autoSync: false,
717
+ const db = new DB({
718
+ dbName: 'manual-sync-demo',
719
+ sqlitePath: './data.sqlite',
720
+ s3Config: { bucket: 'my-bucket', region: 'us-east-1' },
721
+ autoSync: false,
697
722
  });
698
723
 
699
724
  // Do work...
@@ -722,7 +747,7 @@ console.log({
722
747
  ### Raw SQL access
723
748
 
724
749
  ```typescript
725
- const db = new DB({ sqlitePath: './data.sqlite' });
750
+ const db = new DB({ dbName: 'analytics', sqlitePath: './data.sqlite' });
726
751
 
727
752
  // Via repository
728
753
  const Users = db.define('users', schema);
package/dist/db.d.ts CHANGED
@@ -10,6 +10,25 @@ export declare class DB {
10
10
  private readonly syncEngine;
11
11
  private readonly repos;
12
12
  constructor(config: DBConfig);
13
+ /**
14
+ * Async factory — use this instead of `new DB()` when you need S3 restore on startup.
15
+ *
16
+ * - If `restoreFromS3: true` and the local SQLite file does not exist, it downloads
17
+ * the latest snapshot from S3 before opening the database.
18
+ * - `dbName` is required and namespaces each logical database in S3.
19
+ * - `nodeId` identifies the current local node within that logical database.
20
+ *
21
+ * @example
22
+ * const db = await DB.open({
23
+ * dbName: 'my-app-db',
24
+ * sqlitePath: './data/app.sqlite',
25
+ * nodeId: 'server-1',
26
+ * restoreFromS3: true, // auto-restore if local file is missing
27
+ * s3Config: { bucket: '...', region: '...' },
28
+ * });
29
+ */
30
+ static open(config: DBConfig): Promise<DB>;
31
+ private static restoreSnapshot;
13
32
  private getOrCreateNodeId;
14
33
  define<S extends ModelSchema>(tableName: string, schema: S): Repository<BaseRecord & {
15
34
  [K in keyof S]: unknown;
package/dist/db.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,qBAAa,EAAE;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6C;gBAEvD,MAAM,EAAE,QAAQ;IA2B5B,OAAO,CAAC,iBAAiB;IAqBzB,MAAM,CAAC,CAAC,SAAS,WAAW,EAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,GACR,UAAU,CAAC,UAAU,GAAG;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO;KAAE,CAAC;IAWvD,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAmBhE,SAAS,IAAI,MAAM;IAInB,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC;IAI7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,IAAI;IAIhB,GAAG,IAAI,QAAQ,CAAC,QAAQ;IAIxB,KAAK,IAAI,IAAI;IAKb,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAI9B,MAAM,IAAI,IAAI;IAId,cAAc,IAAI,OAAO;CAM1B"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,qBAAa,EAAE;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6C;gBAEvD,MAAM,EAAE,QAAQ;IAmC5B;;;;;;;;;;;;;;;;OAgBG;WACU,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;mBAY3B,eAAe;IAqBpC,OAAO,CAAC,iBAAiB;IAuBzB,MAAM,CAAC,CAAC,SAAS,WAAW,EAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,GACR,UAAU,CAAC,UAAU,GAAG;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO;KAAE,CAAC;IAWvD,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAmBhE,SAAS,IAAI,MAAM;IAInB,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC;IAI7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,IAAI;IAIhB,GAAG,IAAI,QAAQ,CAAC,QAAQ;IAIxB,KAAK,IAAI,IAAI;IAKb,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAI9B,MAAM,IAAI,IAAI;IAId,cAAc,IAAI,OAAO;CAM1B"}
package/dist/db.js CHANGED
@@ -9,6 +9,7 @@ const fs_1 = require("fs");
9
9
  const path_1 = require("path");
10
10
  const repository_js_1 = require("./orm/repository.js");
11
11
  const engine_js_1 = require("./sync/engine.js");
12
+ const s3_adapter_js_1 = require("./storage/s3-adapter.js");
12
13
  const id_js_1 = require("./utils/id.js");
13
14
  const META_SCHEMA = `
14
15
  CREATE TABLE IF NOT EXISTS _driftdb_meta (
@@ -19,42 +20,94 @@ const META_SCHEMA = `
19
20
  class DB {
20
21
  constructor(config) {
21
22
  this.repos = new Map();
22
- this.config = config;
23
- if (config.sqlitePath !== ':memory:') {
24
- const dir = (0, path_1.dirname)(config.sqlitePath);
23
+ const dbName = config.dbName.trim();
24
+ if (!dbName) {
25
+ throw new Error('DBConfig.dbName is required');
26
+ }
27
+ this.config = {
28
+ ...config,
29
+ dbName,
30
+ };
31
+ if (this.config.sqlitePath !== ':memory:') {
32
+ const dir = (0, path_1.dirname)(this.config.sqlitePath);
25
33
  if (dir && dir !== '.') {
26
34
  (0, fs_1.mkdirSync)(dir, { recursive: true });
27
35
  }
28
36
  }
29
- this.sqliteDb = new better_sqlite3_1.default(config.sqlitePath);
37
+ this.sqliteDb = new better_sqlite3_1.default(this.config.sqlitePath);
30
38
  this.sqliteDb.pragma('journal_mode = WAL');
31
39
  this.sqliteDb.pragma('synchronous = NORMAL');
32
40
  this.sqliteDb.pragma('foreign_keys = ON');
33
41
  this.sqliteDb.pragma('cache_size = -64000');
34
42
  this.sqliteDb.pragma('temp_store = MEMORY');
35
43
  this.sqliteDb.exec(META_SCHEMA);
36
- this.nodeId = this.getOrCreateNodeId(config.nodeId);
37
- this.syncEngine = new engine_js_1.SyncEngine(this.sqliteDb, this.nodeId, config);
38
- if (config.autoSync !== false && config.s3Config) {
44
+ this.nodeId = this.getOrCreateNodeId(this.config.nodeId);
45
+ this.syncEngine = new engine_js_1.SyncEngine(this.sqliteDb, this.nodeId, this.config);
46
+ if (this.config.autoSync !== false && this.config.s3Config) {
39
47
  this.syncEngine.start();
40
48
  }
41
49
  }
50
+ /**
51
+ * Async factory — use this instead of `new DB()` when you need S3 restore on startup.
52
+ *
53
+ * - If `restoreFromS3: true` and the local SQLite file does not exist, it downloads
54
+ * the latest snapshot from S3 before opening the database.
55
+ * - `dbName` is required and namespaces each logical database in S3.
56
+ * - `nodeId` identifies the current local node within that logical database.
57
+ *
58
+ * @example
59
+ * const db = await DB.open({
60
+ * dbName: 'my-app-db',
61
+ * sqlitePath: './data/app.sqlite',
62
+ * nodeId: 'server-1',
63
+ * restoreFromS3: true, // auto-restore if local file is missing
64
+ * s3Config: { bucket: '...', region: '...' },
65
+ * });
66
+ */
67
+ static async open(config) {
68
+ if (config.restoreFromS3 &&
69
+ config.s3Config &&
70
+ config.sqlitePath !== ':memory:' &&
71
+ !(0, fs_1.existsSync)(config.sqlitePath)) {
72
+ await DB.restoreSnapshot(config);
73
+ }
74
+ return new DB(config);
75
+ }
76
+ static async restoreSnapshot(config) {
77
+ const s3 = new s3_adapter_js_1.S3Adapter(config.s3Config);
78
+ const uploadOptions = {
79
+ compress: config.compression !== false,
80
+ encryptionKey: config.encryption?.key,
81
+ };
82
+ const manifest = await s3.getManifest(config.dbName);
83
+ if (!manifest?.latestSnapshotKey) {
84
+ return false;
85
+ }
86
+ const data = await s3.download(manifest.latestSnapshotKey, uploadOptions);
87
+ const dir = (0, path_1.dirname)(config.sqlitePath);
88
+ if (dir && dir !== '.') {
89
+ (0, fs_1.mkdirSync)(dir, { recursive: true });
90
+ }
91
+ (0, fs_1.writeFileSync)(config.sqlitePath, data);
92
+ return true;
93
+ }
42
94
  getOrCreateNodeId(preferred) {
95
+ const metaKey = `nodeId:${this.config.dbName}`;
43
96
  if (preferred) {
44
97
  this.sqliteDb
45
- .prepare(`INSERT OR REPLACE INTO _driftdb_meta (key, value) VALUES ('nodeId', ?)`)
46
- .run(preferred);
98
+ .prepare(`INSERT OR REPLACE INTO _driftdb_meta (key, value) VALUES (?, ?)`)
99
+ .run(metaKey, preferred);
47
100
  return preferred;
48
101
  }
49
102
  const row = this.sqliteDb
50
- .prepare(`SELECT value FROM _driftdb_meta WHERE key = 'nodeId'`)
51
- .get();
103
+ .prepare(`SELECT value FROM _driftdb_meta WHERE key = ? OR key = 'nodeId' ORDER BY CASE WHEN key = ? THEN 0 ELSE 1 END LIMIT 1`)
104
+ .get(metaKey, metaKey);
52
105
  if (row)
53
106
  return row.value;
54
107
  const id = (0, id_js_1.generateNodeId)();
55
108
  this.sqliteDb
56
- .prepare(`INSERT INTO _driftdb_meta (key, value) VALUES ('nodeId', ?)`)
57
- .run(id);
109
+ .prepare(`INSERT INTO _driftdb_meta (key, value) VALUES (?, ?)`)
110
+ .run(metaKey, id);
58
111
  return id;
59
112
  }
60
113
  define(tableName, schema) {
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,9 @@ export declare class S3Adapter {
13
13
  download(path: string, options?: S3UploadOptions): Promise<Buffer>;
14
14
  exists(path: string): Promise<boolean>;
15
15
  listKeys(prefix: string): Promise<string[]>;
16
- putManifest(nodeId: string, manifest: SyncManifest): Promise<void>;
17
- getManifest(nodeId: string): Promise<SyncManifest | null>;
18
- logKey(nodeId: string, fromSeq: number, toSeq: number): string;
19
- snapshotKey(nodeId: string, timestamp: number): string;
16
+ putManifest(dbName: string, manifest: SyncManifest): Promise<void>;
17
+ getManifest(dbName: string): Promise<SyncManifest | null>;
18
+ logKey(dbName: string, nodeId: string, fromSeq: number, toSeq: number): string;
19
+ snapshotKey(dbName: string, nodeId: string, timestamp: number): string;
20
20
  }
21
21
  //# sourceMappingURL=s3-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/s3-adapter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,QAAQ;IAsB5B,OAAO,CAAC,GAAG;IAIL,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAyCV,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IA0BZ,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0B3C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAO/D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9D,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAGvD"}
1
+ {"version":3,"file":"s3-adapter.d.ts","sourceRoot":"","sources":["../../src/storage/s3-adapter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,QAAQ;IAsB5B,OAAO,CAAC,GAAG;IAIL,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAyCV,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;IA0BZ,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0B3C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAO/D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9E,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAGvE"}
@@ -111,22 +111,22 @@ class S3Adapter {
111
111
  } while (continuationToken);
112
112
  return keys;
113
113
  }
114
- async putManifest(nodeId, manifest) {
114
+ async putManifest(dbName, manifest) {
115
115
  const data = Buffer.from(JSON.stringify(manifest), 'utf8');
116
- await this.upload(`nodes/${nodeId}/manifest.json`, data);
116
+ await this.upload(`databases/${dbName}/manifest.json`, data);
117
117
  }
118
- async getManifest(nodeId) {
119
- const path = `nodes/${nodeId}/manifest.json`;
118
+ async getManifest(dbName) {
119
+ const path = `databases/${dbName}/manifest.json`;
120
120
  if (!(await this.exists(path)))
121
121
  return null;
122
122
  const data = await this.download(path);
123
123
  return JSON.parse(data.toString('utf8'));
124
124
  }
125
- logKey(nodeId, fromSeq, toSeq) {
126
- return `nodes/${nodeId}/logs/${String(fromSeq).padStart(12, '0')}-${String(toSeq).padStart(12, '0')}.json`;
125
+ logKey(dbName, nodeId, fromSeq, toSeq) {
126
+ return `databases/${dbName}/nodes/${nodeId}/logs/${String(fromSeq).padStart(12, '0')}-${String(toSeq).padStart(12, '0')}.json`;
127
127
  }
128
- snapshotKey(nodeId, timestamp) {
129
- return `nodes/${nodeId}/snapshots/${timestamp}.sqlite`;
128
+ snapshotKey(dbName, nodeId, timestamp) {
129
+ return `databases/${dbName}/nodes/${nodeId}/snapshots/${timestamp}.sqlite`;
130
130
  }
131
131
  }
132
132
  exports.S3Adapter = S3Adapter;
@@ -1 +1 @@
1
- {"version":3,"file":"s3-adapter.js","sourceRoot":"","sources":["../../src/storage/s3-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s3-adapter.js","sourceRoot":"","sources":["../../src/storage/s3-adapter.ts"],"names":[],"mappings":";;;AAAA,kDAO4B;AAC5B,sDAA8C;AAC9C,mCAAkC;AAElC,sDAA4D;AAC5D,kDAAsD;AAOtD,MAAa,SAAS;IAKpB,YAAY,MAAgB;QAC1B,MAAM,YAAY,GAAmB;YACnC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;QAEF,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACjD,YAAY,CAAC,WAAW,GAAG;gBACzB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;aACxC,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACxC,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAQ,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAEO,GAAG,CAAC,IAAY;QACtB,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,IAAY,EACZ,IAAY,EACZ,UAA2B,EAAE;QAE7B,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,GAAG,MAAM,IAAA,sBAAQ,EAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,QAAQ;YAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC;QAC7D,IAAI,OAAO,CAAC,aAAa;YAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC;QAEjE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,oBAAM,CAAC;gBACxB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE;oBACN,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;oBACnB,IAAI,EAAE,iBAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC5B,eAAe,EAAE,eAAe;oBAChC,QAAQ,EAAE,QAAQ;iBACnB;aACF,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,IAAI,4BAAgB,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,OAAO;gBACb,eAAe,EAAE,eAAe;gBAChC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,IAAY,EACZ,UAA2B,EAAE;QAE7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,IAAI,4BAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACnE,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAiC,EAAE,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAA,mBAAO,EAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,IAAI,6BAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACpE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,iBAAqC,CAAC;QAE1C,GAAG,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,IAAI,gCAAoB,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,UAAU;gBAClB,iBAAiB,EAAE,iBAAiB;aACrC,CAAC,CACH,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC1C,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,iBAAiB,GAAG,QAAQ,CAAC,qBAAqB,CAAC;QACrD,CAAC,QAAQ,iBAAiB,EAAE;QAE5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,QAAsB;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,MAAM,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,MAAM,IAAI,GAAG,aAAa,MAAM,gBAAgB,CAAC;QACjD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAiB,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,MAAc,EAAE,OAAe,EAAE,KAAa;QACnE,OAAO,aAAa,MAAM,UAAU,MAAM,SAAS,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC;IACjI,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,MAAc,EAAE,SAAiB;QAC3D,OAAO,aAAa,MAAM,UAAU,MAAM,cAAc,SAAS,SAAS,CAAC;IAC7E,CAAC;CACF;AAjKD,8BAiKC"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAW,WAAW,EAA2C,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmB;IAEtC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,OAAO,CAQb;gBAEU,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IA4BnE,YAAY,IAAI,SAAS;IAIzB,QAAQ,IAAI,SAAS;IAIrB,KAAK,IAAI,IAAI;IAeb,IAAI,IAAI,IAAI;IAQN,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC;IAQnC,OAAO,CAAC,cAAc;YAUR,IAAI;YAcJ,kBAAkB;YAmBlB,YAAY;YAUZ,UAAU;YA6DV,aAAa;IAcrB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAavC"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAW,WAAW,EAA2C,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmB;IAEtC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,OAAO,CAQb;gBAEU,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IA6BnE,YAAY,IAAI,SAAS;IAIzB,QAAQ,IAAI,SAAS;IAIrB,KAAK,IAAI,IAAI;IAeb,IAAI,IAAI,IAAI;IAQN,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,UAAU,IAAI,QAAQ,CAAC,WAAW,CAAC;IAQnC,OAAO,CAAC,cAAc;YAUR,IAAI;YAcJ,kBAAkB;YAwBlB,YAAY;YAUZ,UAAU;YA+DV,aAAa;IAcrB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAcvC"}
@@ -36,7 +36,7 @@ class SyncEngine {
36
36
  compress: config.compression !== false,
37
37
  encryptionKey: config.encryption?.key,
38
38
  };
39
- this.snapshotManager = new snapshot_manager_js_1.SnapshotManager(db, this.s3, nodeId, config.sqlitePath, uploadOptions);
39
+ this.snapshotManager = new snapshot_manager_js_1.SnapshotManager(db, this.s3, config.dbName, nodeId, config.sqlitePath, uploadOptions);
40
40
  }
41
41
  else {
42
42
  this.s3 = null;
@@ -111,7 +111,7 @@ class SyncEngine {
111
111
  if (pending.length === 0)
112
112
  return;
113
113
  const batch = this.changeLog.buildBatch(pending);
114
- const s3Key = this.s3.logKey(this.nodeId, batch.fromSequence, batch.toSequence);
114
+ const s3Key = this.s3.logKey(this.config.dbName, this.nodeId, batch.fromSequence, batch.toSequence);
115
115
  const alreadyQueued = this.queue.hasPendingOfType('upload_log');
116
116
  if (!alreadyQueued) {
117
117
  const payload = {
@@ -140,9 +140,10 @@ class SyncEngine {
140
140
  const batchBuffer = Buffer.from(JSON.stringify(p.batch), 'utf8');
141
141
  await this.s3.upload(p.s3Key, batchBuffer, uploadOptions);
142
142
  this.changeLog.markSynced(p.fromSequence, p.toSequence);
143
- const manifest = await this.s3.getManifest(this.nodeId);
143
+ const manifest = await this.s3.getManifest(this.config.dbName);
144
144
  const latestSeq = Math.max(manifest?.latestLogSequence ?? 0, p.toSequence);
145
- await this.s3.putManifest(this.nodeId, {
145
+ await this.s3.putManifest(this.config.dbName, {
146
+ dbName: this.config.dbName,
146
147
  nodeId: this.nodeId,
147
148
  latestSnapshotKey: manifest?.latestSnapshotKey ?? null,
148
149
  latestSnapshotTimestamp: manifest?.latestSnapshotTimestamp ?? null,
@@ -157,8 +158,9 @@ class SyncEngine {
157
158
  const p = JSON.parse(job.payload);
158
159
  if (this.snapshotManager) {
159
160
  const { key, timestamp } = await this.snapshotManager.takeAndUpload();
160
- const manifest = await this.s3.getManifest(this.nodeId);
161
- await this.s3.putManifest(this.nodeId, {
161
+ const manifest = await this.s3.getManifest(this.config.dbName);
162
+ await this.s3.putManifest(this.config.dbName, {
163
+ dbName: this.config.dbName,
162
164
  nodeId: this.nodeId,
163
165
  latestSnapshotKey: key,
164
166
  latestSnapshotTimestamp: timestamp,
@@ -184,7 +186,7 @@ class SyncEngine {
184
186
  if (!this.queue.hasPendingOfType('upload_snapshot')) {
185
187
  const payload = {
186
188
  timestamp: Date.now(),
187
- s3Key: this.s3.snapshotKey(this.nodeId, Date.now()),
189
+ s3Key: this.s3.snapshotKey(this.config.dbName, this.nodeId, Date.now()),
188
190
  dbPath: this.config.sqlitePath,
189
191
  };
190
192
  this.queue.enqueue('upload_snapshot', payload);
@@ -195,8 +197,9 @@ class SyncEngine {
195
197
  if (!this.snapshotManager || !this.s3)
196
198
  return;
197
199
  const { key, timestamp } = await this.snapshotManager.takeAndUpload();
198
- const manifest = await this.s3.getManifest(this.nodeId);
199
- await this.s3.putManifest(this.nodeId, {
200
+ const manifest = await this.s3.getManifest(this.config.dbName);
201
+ await this.s3.putManifest(this.config.dbName, {
202
+ dbName: this.config.dbName,
200
203
  nodeId: this.nodeId,
201
204
  latestSnapshotKey: key,
202
205
  latestSnapshotTimestamp: timestamp,
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,11 @@ import type { S3UploadOptions } from '../storage/s3-adapter.js';
4
4
  export declare class SnapshotManager {
5
5
  private readonly db;
6
6
  private readonly s3;
7
+ private readonly dbName;
7
8
  private readonly nodeId;
8
9
  private readonly sqlitePath;
9
10
  private readonly uploadOptions;
10
- constructor(db: Database.Database, s3: S3Adapter, nodeId: string, sqlitePath: string, uploadOptions: S3UploadOptions);
11
+ constructor(db: Database.Database, s3: S3Adapter, dbName: string, nodeId: string, sqlitePath: string, uploadOptions: S3UploadOptions);
11
12
  takeAndUpload(): Promise<{
12
13
  key: string;
13
14
  timestamp: number;
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-manager.d.ts","sourceRoot":"","sources":["../../src/sync/snapshot-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;gBAG9C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,eAAe;IAS1B,aAAa,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAiC5D,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;CAiBxC"}
1
+ {"version":3,"file":"snapshot-manager.d.ts","sourceRoot":"","sources":["../../src/sync/snapshot-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;gBAG9C,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,eAAe;IAU1B,aAAa,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAiC5D,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;CAiBxC"}
@@ -39,9 +39,10 @@ const path_1 = require("path");
39
39
  const os_1 = require("os");
40
40
  const fs_2 = require("fs");
41
41
  class SnapshotManager {
42
- constructor(db, s3, nodeId, sqlitePath, uploadOptions) {
42
+ constructor(db, s3, dbName, nodeId, sqlitePath, uploadOptions) {
43
43
  this.db = db;
44
44
  this.s3 = s3;
45
+ this.dbName = dbName;
45
46
  this.nodeId = nodeId;
46
47
  this.sqlitePath = sqlitePath;
47
48
  this.uploadOptions = uploadOptions;
@@ -53,14 +54,14 @@ class SnapshotManager {
53
54
  this.db.exec('PRAGMA wal_checkpoint(FULL)');
54
55
  if (this.sqlitePath === ':memory:') {
55
56
  const backup = this.db.serialize();
56
- await this.s3.upload(this.s3.snapshotKey(this.nodeId, timestamp), Buffer.from(backup), this.uploadOptions);
57
+ await this.s3.upload(this.s3.snapshotKey(this.dbName, this.nodeId, timestamp), Buffer.from(backup), this.uploadOptions);
57
58
  }
58
59
  else {
59
60
  (0, fs_2.copyFileSync)(this.sqlitePath, tempPath);
60
61
  const data = (0, fs_1.readFileSync)(tempPath);
61
- await this.s3.upload(this.s3.snapshotKey(this.nodeId, timestamp), data, this.uploadOptions);
62
+ await this.s3.upload(this.s3.snapshotKey(this.dbName, this.nodeId, timestamp), data, this.uploadOptions);
62
63
  }
63
- const key = this.s3.snapshotKey(this.nodeId, timestamp);
64
+ const key = this.s3.snapshotKey(this.dbName, this.nodeId, timestamp);
64
65
  return { key, timestamp };
65
66
  }
66
67
  finally {
@@ -73,7 +74,7 @@ class SnapshotManager {
73
74
  }
74
75
  }
75
76
  async restoreLatest() {
76
- const manifest = await this.s3.getManifest(this.nodeId);
77
+ const manifest = await this.s3.getManifest(this.dbName);
77
78
  if (!manifest?.latestSnapshotKey)
78
79
  return false;
79
80
  const data = await this.s3.download(manifest.latestSnapshotKey, this.uploadOptions);