@enbox/dwn-sql-store 0.0.7 → 0.0.9

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 (57) hide show
  1. package/dist/esm/src/blockstore-sql.js +117 -0
  2. package/dist/esm/src/blockstore-sql.js.map +1 -0
  3. package/dist/esm/src/data-store-s3.js +243 -0
  4. package/dist/esm/src/data-store-s3.js.map +1 -0
  5. package/dist/esm/src/data-store-sql.js +175 -59
  6. package/dist/esm/src/data-store-sql.js.map +1 -1
  7. package/dist/esm/src/main.js +4 -0
  8. package/dist/esm/src/main.js.map +1 -1
  9. package/dist/esm/src/message-store-sql.js +1 -0
  10. package/dist/esm/src/message-store-sql.js.map +1 -1
  11. package/dist/esm/src/migration-runner.js +99 -0
  12. package/dist/esm/src/migration-runner.js.map +1 -0
  13. package/dist/esm/src/migrations/001-initial-schema.js +163 -0
  14. package/dist/esm/src/migrations/001-initial-schema.js.map +1 -0
  15. package/dist/esm/src/migrations/002-content-addressed-datastore.js +126 -0
  16. package/dist/esm/src/migrations/002-content-addressed-datastore.js.map +1 -0
  17. package/dist/esm/src/migrations/003-add-squash-column.js +17 -0
  18. package/dist/esm/src/migrations/003-add-squash-column.js.map +1 -0
  19. package/dist/esm/src/migrations/index.js +13 -0
  20. package/dist/esm/src/migrations/index.js.map +1 -0
  21. package/dist/esm/src/state-index-sql.js +4 -3
  22. package/dist/esm/src/state-index-sql.js.map +1 -1
  23. package/dist/types/src/blockstore-sql.d.ts +36 -0
  24. package/dist/types/src/blockstore-sql.d.ts.map +1 -0
  25. package/dist/types/src/data-store-s3.d.ts +53 -0
  26. package/dist/types/src/data-store-s3.d.ts.map +1 -0
  27. package/dist/types/src/data-store-sql.d.ts +12 -0
  28. package/dist/types/src/data-store-sql.d.ts.map +1 -1
  29. package/dist/types/src/main.d.ts +4 -0
  30. package/dist/types/src/main.d.ts.map +1 -1
  31. package/dist/types/src/message-store-sql.d.ts.map +1 -1
  32. package/dist/types/src/migration-runner.d.ts +50 -0
  33. package/dist/types/src/migration-runner.d.ts.map +1 -0
  34. package/dist/types/src/migrations/001-initial-schema.d.ts +10 -0
  35. package/dist/types/src/migrations/001-initial-schema.d.ts.map +1 -0
  36. package/dist/types/src/migrations/002-content-addressed-datastore.d.ts +28 -0
  37. package/dist/types/src/migrations/002-content-addressed-datastore.d.ts.map +1 -0
  38. package/dist/types/src/migrations/003-add-squash-column.d.ts +10 -0
  39. package/dist/types/src/migrations/003-add-squash-column.d.ts.map +1 -0
  40. package/dist/types/src/migrations/index.d.ts +7 -0
  41. package/dist/types/src/migrations/index.d.ts.map +1 -0
  42. package/dist/types/src/state-index-sql.d.ts.map +1 -1
  43. package/dist/types/src/types.d.ts +26 -0
  44. package/dist/types/src/types.d.ts.map +1 -1
  45. package/package.json +8 -2
  46. package/src/blockstore-sql.ts +142 -0
  47. package/src/data-store-s3.ts +338 -0
  48. package/src/data-store-sql.ts +208 -79
  49. package/src/main.ts +4 -0
  50. package/src/message-store-sql.ts +1 -0
  51. package/src/migration-runner.ts +137 -0
  52. package/src/migrations/001-initial-schema.ts +190 -0
  53. package/src/migrations/002-content-addressed-datastore.ts +140 -0
  54. package/src/migrations/003-add-squash-column.ts +21 -0
  55. package/src/migrations/index.ts +15 -0
  56. package/src/state-index-sql.ts +4 -3
  57. package/src/types.ts +30 -0
@@ -1 +1 @@
1
- {"version":3,"file":"state-index-sql.js","sourceRoot":"","sources":["../../../src/state-index-sql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-index-sql.js","sourceRoot":"","sources":["../../../src/state-index-sql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { DwnDatabaseType } from './types.js';
2
+ import type { Kysely } from 'kysely';
3
+ import type { AbortOptions, AwaitIterable } from 'interface-store';
4
+ import type { Blockstore, Pair } from 'interface-blockstore';
5
+ import { CID } from 'multiformats';
6
+ /**
7
+ * SQL-backed implementation of the `Blockstore` v5 interface, scoped to a
8
+ * single `rootDataCid`. All block operations are constrained to the blocks
9
+ * belonging to this root CID in the `dataBlocks` table.
10
+ *
11
+ * Used by `ipfs-unixfs-importer` (during `put()`) and `ipfs-unixfs-exporter`
12
+ * (during `get()`) to store and retrieve individual DAG-PB blocks.
13
+ *
14
+ * The Kysely instance and database connection are managed externally by
15
+ * `DataStoreSql`. This class does not own the connection lifecycle.
16
+ */
17
+ export declare class BlockstoreSql implements Blockstore {
18
+ #private;
19
+ constructor(db: Kysely<DwnDatabaseType>, rootDataCid: string);
20
+ open(): Promise<void>;
21
+ close(): Promise<void>;
22
+ put(key: CID, val: Uint8Array, _options?: AbortOptions): Promise<CID>;
23
+ get(key: CID, _options?: AbortOptions): Promise<Uint8Array>;
24
+ has(key: CID, _options?: AbortOptions): Promise<boolean>;
25
+ delete(key: CID, _options?: AbortOptions): Promise<void>;
26
+ isEmpty(_options?: AbortOptions): Promise<boolean>;
27
+ putMany(source: AwaitIterable<Pair>, options?: AbortOptions): AsyncIterable<CID>;
28
+ getMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<Pair>;
29
+ getAll(_options?: AbortOptions): AsyncIterable<Pair>;
30
+ deleteMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<CID>;
31
+ /**
32
+ * Deletes all blocks for this rootDataCid.
33
+ */
34
+ clear(): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=blockstore-sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockstore-sql.d.ts","sourceRoot":"","sources":["../../../src/blockstore-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,qBAAa,aAAc,YAAW,UAAU;;gBAIlC,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,MAAM;IAK/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAerE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAe3D,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAWxD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxD,OAAO,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhD,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC;IAOhF,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC;IAShF,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC;IAepD,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC;IAOjG;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAMpC"}
@@ -0,0 +1,53 @@
1
+ import type { Dialect } from './dialect/dialect.js';
2
+ import type { DataStore, DataStoreGetResult, DataStorePutResult } from '@enbox/dwn-sdk-js';
3
+ import { S3Client } from '@aws-sdk/client-s3';
4
+ /**
5
+ * S3-backed implementation of {@link DataStore} with SQL-based reference
6
+ * tracking for content-addressed deduplication.
7
+ *
8
+ * Data is stored as whole S3 objects keyed by `dataCid`. The same `dataCid`
9
+ * maps to a single S3 object regardless of how many (tenant, recordId) pairs
10
+ * reference it. A `dataRefs` SQL table tracks references; blocks are
11
+ * garbage-collected from S3 when the last ref is deleted.
12
+ *
13
+ * For files over `partSize` (default 5MB), the AWS SDK Upload helper
14
+ * automatically uses multipart upload with bounded memory
15
+ * (`queueSize * partSize`).
16
+ */
17
+ export declare class DataStoreS3 implements DataStore {
18
+ #private;
19
+ constructor(config: DataStoreS3Config);
20
+ open(): Promise<void>;
21
+ close(): Promise<void>;
22
+ get(tenant: string, recordId: string, dataCid: string): Promise<DataStoreGetResult | undefined>;
23
+ put(tenant: string, recordId: string, dataCid: string, dataStream: ReadableStream<Uint8Array>): Promise<DataStorePutResult>;
24
+ delete(tenant: string, recordId: string, dataCid: string): Promise<void>;
25
+ clear(): Promise<void>;
26
+ }
27
+ /**
28
+ * Configuration for {@link DataStoreS3}.
29
+ */
30
+ export type DataStoreS3Config = {
31
+ /** Kysely dialect for the SQL `dataRefs` table. */
32
+ dialect: Dialect;
33
+ /** S3 bucket name for content storage. */
34
+ bucket: string;
35
+ /** Optional pre-configured S3Client instance. If omitted, one is created from region/endpoint. */
36
+ s3Client?: S3Client;
37
+ /** AWS region. Default: `'us-east-1'`. */
38
+ region?: string;
39
+ /** Custom S3 endpoint URL (e.g. MinIO `http://localhost:9000`). */
40
+ endpoint?: string;
41
+ /** Use path-style access (`http://host/bucket/key`). Required for MinIO. Default: `false`. */
42
+ forcePathStyle?: boolean;
43
+ /** AWS credentials. When omitted, the SDK uses the default credential chain (IAM role, env vars, etc.). */
44
+ credentials?: {
45
+ accessKeyId: string;
46
+ secretAccessKey: string;
47
+ };
48
+ /** Multipart upload part size in bytes. Default: `5 * 1024 * 1024` (5 MB). */
49
+ partSize?: number;
50
+ /** Number of concurrent multipart upload parts. Default: `4`. */
51
+ queueSize?: number;
52
+ };
53
+ //# sourceMappingURL=data-store-s3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-store-s3.d.ts","sourceRoot":"","sources":["../../../src/data-store-s3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAM3F,OAAO,EAML,QAAQ,EACT,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAY,YAAW,SAAS;;gBAQ/B,MAAM,EAAE,iBAAiB;IAcxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IASrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAgC7B,GAAG,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC;IA4CjB,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IA0BH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA4HpC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mDAAmD;IACnD,OAAO,EAAE,OAAO,CAAC;IAEjB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,kGAAkG;IAClG,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,2GAA2G;IAC3G,WAAW,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAE/D,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -1,5 +1,17 @@
1
1
  import type { Dialect } from './dialect/dialect.js';
2
2
  import type { DataStore, DataStoreGetResult, DataStorePutResult } from '@enbox/dwn-sdk-js';
3
+ /**
4
+ * SQL-backed implementation of {@link DataStore} with content-addressed
5
+ * deduplication.
6
+ *
7
+ * Data is stored as DAG-PB blocks (via `ipfs-unixfs-importer`) in the
8
+ * `dataBlocks` table, keyed by `(rootDataCid, blockCid)`. A separate
9
+ * `dataRefs` table maps `(tenant, recordId, dataCid)` to content. When
10
+ * multiple records share the same `dataCid`, blocks are stored only once.
11
+ *
12
+ * On `delete()`, the ref is removed and blocks are garbage-collected only
13
+ * when the last ref to a `dataCid` is gone.
14
+ */
3
15
  export declare class DataStoreSql implements DataStore {
4
16
  #private;
5
17
  constructor(dialect: Dialect);
@@ -1 +1 @@
1
- {"version":3,"file":"data-store-sql.d.ts","sourceRoot":"","sources":["../../../src/data-store-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK3F,qBAAa,YAAa,YAAW,SAAS;;gBAIhC,OAAO,EAAE,OAAO;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CACP,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IA+BpC,GAAG,CACP,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC;IAoBxB,MAAM,CACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAeV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAY7B"}
1
+ {"version":3,"file":"data-store-sql.d.ts","sourceRoot":"","sources":["../../../src/data-store-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAS3F;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,YAAW,SAAS;;gBAIhC,OAAO,EAAE,OAAO;IAIf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAarB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAuC7B,GAAG,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,GACrC,OAAO,CAAC,kBAAkB,CAAC;IAsEjB,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IA0BH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAgFpC"}
@@ -3,9 +3,13 @@ export * from './dialect/bun-sqlite-adapter.js';
3
3
  export * from './dialect/mysql-dialect.js';
4
4
  export * from './dialect/postgres-dialect.js';
5
5
  export * from './dialect/sqlite-dialect.js';
6
+ export * from './blockstore-sql.js';
7
+ export * from './data-store-s3.js';
6
8
  export * from './data-store-sql.js';
7
9
  export * from './state-index-sql.js';
8
10
  export * from './message-store-sql.js';
11
+ export * from './migration-runner.js';
12
+ export * from './migrations/index.js';
9
13
  export * from './resumable-task-store-sql.js';
10
14
  export * from './smt-store-sql.js';
11
15
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"message-store-sql.d.ts","sourceRoot":"","sources":["../../../src/message-store-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAmB,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAe9C,OAAO,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAC;AAGrC,qBAAa,eAAgB,YAAW,YAAY;;gBAKtC,OAAO,EAAE,OAAO;IAKtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4G3B;;;;;OAKG;IACG,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CACP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAyChB;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoC9B,GAAG,CACP,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IA0BhC,KAAK,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAC,CAAC;IA6D9D,KAAK,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,WAAW,EACzB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAsBZ,MAAM,CACV,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAmBV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAYd,mBAAmB;IAuBjC;;;;;;;;;OASG;YACW,wBAAwB;IAsBtC;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAa9B"}
1
+ {"version":3,"file":"message-store-sql.d.ts","sourceRoot":"","sources":["../../../src/message-store-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAmB,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAe9C,OAAO,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAC;AAGrC,qBAAa,eAAgB,YAAW,YAAY;;gBAKtC,OAAO,EAAE,OAAO;IAKtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6G3B;;;;;OAKG;IACG,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,GAAG,CACP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAyChB;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoC9B,GAAG,CACP,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IA0BhC,KAAK,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,WAAW,EACzB,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAC,CAAC;IA6D9D,KAAK,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,WAAW,EACzB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAsBZ,MAAM,CACV,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAmBV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAYd,mBAAmB;IAuBjC;;;;;;;;;OASG;YACW,wBAAwB;IAsBtC;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAa9B"}
@@ -0,0 +1,50 @@
1
+ import type { Dialect } from './dialect/dialect.js';
2
+ import type { Kysely } from 'kysely';
3
+ /**
4
+ * A single migration step. Migrations are TypeScript functions (not raw SQL)
5
+ * so they can use the Dialect abstraction for cross-dialect column types.
6
+ */
7
+ export type Migration = {
8
+ /** Unique sequential name, e.g. '001-initial-schema'. */
9
+ name: string;
10
+ /**
11
+ * Apply this migration. Receives the Kysely instance and dialect for
12
+ * dialect-aware DDL (blob types, auto-increment, etc.).
13
+ */
14
+ up(db: Kysely<any>, dialect: Dialect): Promise<void>;
15
+ };
16
+ /**
17
+ * Minimal forward-only migration runner for dwn-sql-store.
18
+ *
19
+ * Tracks applied migrations in a `dwn_migrations` table and applies
20
+ * pending migrations in sequential order on each call to `run()`.
21
+ *
22
+ * Design decisions:
23
+ * - Forward-only: no rollback support. Keep migrations simple and additive.
24
+ * - TypeScript migrations: use the Dialect interface for cross-dialect DDL.
25
+ * - Idempotent: calling `run()` on an up-to-date database is a no-op.
26
+ * - Transaction per migration: each migration runs in its own transaction
27
+ * so a failure leaves the database in the last known-good state.
28
+ */
29
+ /**
30
+ * Convenience function to run all DWN store migrations against a database.
31
+ *
32
+ * Creates a `MigrationRunner` with the full set of built-in migrations and
33
+ * runs them. Call this once during application startup, before opening any
34
+ * stores — e.g. in `getDwnConfig()` or equivalent initialization code.
35
+ *
36
+ * @param db - An open Kysely instance connected to the target database.
37
+ * @param dialect - The dialect for the target database.
38
+ * @returns The names of newly applied migrations (empty if already up-to-date).
39
+ */
40
+ export declare function runDwnStoreMigrations(db: Kysely<any>, dialect: Dialect): Promise<string[]>;
41
+ export declare class MigrationRunner {
42
+ #private;
43
+ constructor(db: Kysely<any>, dialect: Dialect, migrations: Migration[]);
44
+ /**
45
+ * Ensure the `dwn_migrations` tracking table exists, then apply any
46
+ * pending migrations in order. Returns the names of newly applied migrations.
47
+ */
48
+ run(): Promise<string[]>;
49
+ }
50
+ //# sourceMappingURL=migration-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../../src/migration-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD,CAAC;AAWF;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGhG;AAED,qBAAa,eAAe;;gBAKd,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;IAMtE;;;OAGG;IACU,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAgEtC"}
@@ -0,0 +1,10 @@
1
+ import type { Migration } from '../migration-runner.js';
2
+ /**
3
+ * Baseline migration: captures the schema as of the pre-migration era.
4
+ *
5
+ * For existing databases that already have these tables, this migration is
6
+ * detected as "already applied" during the adoption bootstrap (see MigrationRunner).
7
+ * For new databases, this creates the full initial schema.
8
+ */
9
+ export declare const migration001InitialSchema: Migration;
10
+ //# sourceMappingURL=001-initial-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"001-initial-schema.d.ts","sourceRoot":"","sources":["../../../../src/migrations/001-initial-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAIxD;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAgLvC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { Migration } from '../migration-runner.js';
2
+ /**
3
+ * Migration 002: Content-addressed DataStore with deduplication.
4
+ *
5
+ * Replaces the monolithic `dataStore` table (which stores entire blobs per
6
+ * tenant+recordId+dataCid) with two tables that enable whole-file dedup:
7
+ *
8
+ * - `dataRefs`: reference table linking (tenant, recordId) to a dataCid.
9
+ * Multiple tenant/record pairs can reference the same dataCid. Includes
10
+ * `dataSize` for efficient size queries (fixes the existing admin store bug).
11
+ *
12
+ * - `dataBlocks`: content storage table keyed by (rootDataCid, blockCid).
13
+ * Stores individual ~256KB DAG-PB blocks produced by ipfs-unixfs-importer.
14
+ * Content is shared across all references to the same dataCid.
15
+ *
16
+ * Data migration strategy:
17
+ * - For each row in the old `dataStore`, insert a ref into `dataRefs` and a
18
+ * single block into `dataBlocks` with blockCid = dataCid (treating the
19
+ * existing assembled blob as one block). This is a safe migration because
20
+ * the new DataStoreSql code will re-chunk via ipfs-unixfs-importer on the
21
+ * next write. Reads of migrated data use a fast path that detects the
22
+ * single-block case and returns the data directly without the exporter.
23
+ *
24
+ * NOTE: For large databases, the data migration may take significant time.
25
+ * The migration runs in a single transaction for atomicity.
26
+ */
27
+ export declare const migration002ContentAddressedDatastore: Migration;
28
+ //# sourceMappingURL=002-content-addressed-datastore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"002-content-addressed-datastore.d.ts","sourceRoot":"","sources":["../../../../src/migrations/002-content-addressed-datastore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAIxD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,qCAAqC,EAAE,SA4GnD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Migration } from '../migration-runner.js';
2
+ /**
3
+ * Migration 003: Add `squash` boolean column to `messageStoreMessages`.
4
+ *
5
+ * The `squash` column is an index for the `$squash` protocol directive
6
+ * introduced in the DWN spec. It follows the same pattern as `published`
7
+ * and `prune` — a nullable boolean column used for query filtering.
8
+ */
9
+ export declare const migration003AddSquashColumn: Migration;
10
+ //# sourceMappingURL=003-add-squash-column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"003-add-squash-column.d.ts","sourceRoot":"","sources":["../../../../src/migrations/003-add-squash-column.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,SASzC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Migration } from '../migration-runner.js';
2
+ /**
3
+ * All migrations in sequential order. The MigrationRunner applies them
4
+ * in array order, skipping any that have already been recorded.
5
+ */
6
+ export declare const allMigrations: Migration[];
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAMxD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,EAIpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"state-index-sql.d.ts","sourceRoot":"","sources":["../../../src/state-index-sql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD,qBAAa,aAAc,YAAW,UAAU;;gBAiBlC,OAAO,EAAE,OAAO;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2ErB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC5D,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1F,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK/D,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO/F;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;YACW,UAAU;CAWzB"}
1
+ {"version":3,"file":"state-index-sql.d.ts","sourceRoot":"","sources":["../../../src/state-index-sql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD,qBAAa,aAAc,YAAW,UAAU;;gBAiBlC,OAAO,EAAE,OAAO;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2ErB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC5D,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1F,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK/D,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO/F;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;YACW,UAAU;CAWzB"}
@@ -29,6 +29,7 @@ type MessageStoreTable = {
29
29
  parentId: string | null;
30
30
  permissionGrantId: string | null;
31
31
  prune: boolean | null;
32
+ squash: boolean | null;
32
33
  };
33
34
  type MessageStoreRecordsTagsTable = {
34
35
  id: Generated<number>;
@@ -57,6 +58,10 @@ type StateIndexMetaTable = {
57
58
  messageCid: string;
58
59
  protocol: string | null;
59
60
  };
61
+ /**
62
+ * @deprecated Legacy monolithic data table. Replaced by `dataRefs` + `dataBlocks`
63
+ * in migration 002. Retained for type compatibility during migration.
64
+ */
60
65
  type DataStoreTable = {
61
66
  id: Generated<number>;
62
67
  tenant: string;
@@ -64,6 +69,25 @@ type DataStoreTable = {
64
69
  dataCid: string;
65
70
  data: Uint8Array;
66
71
  };
72
+ /**
73
+ * Reference table linking (tenant, recordId) to a content-addressed dataCid.
74
+ * Multiple tenant/record pairs can reference the same dataCid for dedup.
75
+ */
76
+ type DataRefsTable = {
77
+ tenant: string;
78
+ recordId: string;
79
+ dataCid: string;
80
+ dataSize: number;
81
+ };
82
+ /**
83
+ * Content storage table holding individual DAG-PB blocks (~256KB each)
84
+ * keyed by (rootDataCid, blockCid). Shared across all refs to the same dataCid.
85
+ */
86
+ type DataBlocksTable = {
87
+ rootDataCid: string;
88
+ blockCid: string;
89
+ data: Uint8Array;
90
+ };
67
91
  type ResumableTaskTable = {
68
92
  id: string;
69
93
  task: string;
@@ -74,6 +98,8 @@ export type DwnDatabaseType = {
74
98
  messageStoreMessages: MessageStoreTable;
75
99
  messageStoreRecordsTags: MessageStoreRecordsTagsTable;
76
100
  dataStore: DataStoreTable;
101
+ dataRefs: DataRefsTable;
102
+ dataBlocks: DataBlocksTable;
77
103
  resumableTasks: ResumableTaskTable;
78
104
  stateIndexNodes: StateIndexNodeTable;
79
105
  stateIndexRoots: StateIndexRootTable;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enbox/dwn-sql-store",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "SQL backed implementations of DWN MessageStore, DataStore, and StateIndex",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -23,8 +23,14 @@
23
23
  },
24
24
  "react-native": "./dist/esm/src/main.js",
25
25
  "dependencies": {
26
- "@enbox/dwn-sdk-js": "0.0.7",
26
+ "@aws-sdk/client-s3": "^3.700.0",
27
+ "@aws-sdk/lib-storage": "^3.700.0",
28
+ "@enbox/dwn-sdk-js": "0.1.0",
27
29
  "@ipld/dag-cbor": "9.0.5",
30
+ "interface-blockstore": "5.2.3",
31
+ "interface-store": "5.1.2",
32
+ "ipfs-unixfs-exporter": "13.1.5",
33
+ "ipfs-unixfs-importer": "15.1.5",
28
34
  "kysely": "0.26.3",
29
35
  "multiformats": "12.0.1"
30
36
  },
@@ -0,0 +1,142 @@
1
+ import type { DwnDatabaseType } from './types.js';
2
+ import type { Kysely } from 'kysely';
3
+ import type { AbortOptions, AwaitIterable } from 'interface-store';
4
+ import type { Blockstore, Pair } from 'interface-blockstore';
5
+
6
+ import { CID } from 'multiformats';
7
+
8
+ /**
9
+ * SQL-backed implementation of the `Blockstore` v5 interface, scoped to a
10
+ * single `rootDataCid`. All block operations are constrained to the blocks
11
+ * belonging to this root CID in the `dataBlocks` table.
12
+ *
13
+ * Used by `ipfs-unixfs-importer` (during `put()`) and `ipfs-unixfs-exporter`
14
+ * (during `get()`) to store and retrieve individual DAG-PB blocks.
15
+ *
16
+ * The Kysely instance and database connection are managed externally by
17
+ * `DataStoreSql`. This class does not own the connection lifecycle.
18
+ */
19
+ export class BlockstoreSql implements Blockstore {
20
+ #db: Kysely<DwnDatabaseType>;
21
+ #rootDataCid: string;
22
+
23
+ constructor(db: Kysely<DwnDatabaseType>, rootDataCid: string) {
24
+ this.#db = db;
25
+ this.#rootDataCid = rootDataCid;
26
+ }
27
+
28
+ public async open(): Promise<void> {
29
+ // No-op: connection managed by DataStoreSql.
30
+ }
31
+
32
+ public async close(): Promise<void> {
33
+ // No-op: connection managed by DataStoreSql.
34
+ }
35
+
36
+ public async put(key: CID, val: Uint8Array, _options?: AbortOptions): Promise<CID> {
37
+ const blockCid = key.toString();
38
+
39
+ await this.#db
40
+ .insertInto('dataBlocks')
41
+ .values({
42
+ rootDataCid : this.#rootDataCid,
43
+ blockCid,
44
+ data : Buffer.from(val),
45
+ })
46
+ .execute();
47
+
48
+ return key;
49
+ }
50
+
51
+ public async get(key: CID, _options?: AbortOptions): Promise<Uint8Array> {
52
+ const result = await this.#db
53
+ .selectFrom('dataBlocks')
54
+ .select('data')
55
+ .where('rootDataCid', '=', this.#rootDataCid)
56
+ .where('blockCid', '=', key.toString())
57
+ .executeTakeFirst();
58
+
59
+ if (!result) {
60
+ throw new Error(`BlockstoreSql: block not found for rootDataCid=${this.#rootDataCid}, blockCid=${key}`);
61
+ }
62
+
63
+ return new Uint8Array(result.data);
64
+ }
65
+
66
+ public async has(key: CID, _options?: AbortOptions): Promise<boolean> {
67
+ const result = await this.#db
68
+ .selectFrom('dataBlocks')
69
+ .select('blockCid')
70
+ .where('rootDataCid', '=', this.#rootDataCid)
71
+ .where('blockCid', '=', key.toString())
72
+ .executeTakeFirst();
73
+
74
+ return result !== undefined;
75
+ }
76
+
77
+ public async delete(key: CID, _options?: AbortOptions): Promise<void> {
78
+ await this.#db
79
+ .deleteFrom('dataBlocks')
80
+ .where('rootDataCid', '=', this.#rootDataCid)
81
+ .where('blockCid', '=', key.toString())
82
+ .execute();
83
+ }
84
+
85
+ public async isEmpty(_options?: AbortOptions): Promise<boolean> {
86
+ const result = await this.#db
87
+ .selectFrom('dataBlocks')
88
+ .select('blockCid')
89
+ .where('rootDataCid', '=', this.#rootDataCid)
90
+ .executeTakeFirst();
91
+
92
+ return result === undefined;
93
+ }
94
+
95
+ public async * putMany(source: AwaitIterable<Pair>, options?: AbortOptions): AsyncIterable<CID> {
96
+ for await (const entry of source) {
97
+ await this.put(entry.cid, entry.block, options);
98
+ yield entry.cid;
99
+ }
100
+ }
101
+
102
+ public async * getMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<Pair> {
103
+ for await (const key of source) {
104
+ yield {
105
+ cid : key,
106
+ block : await this.get(key, options),
107
+ };
108
+ }
109
+ }
110
+
111
+ public async * getAll(_options?: AbortOptions): AsyncIterable<Pair> {
112
+ const rows = await this.#db
113
+ .selectFrom('dataBlocks')
114
+ .select(['blockCid', 'data'])
115
+ .where('rootDataCid', '=', this.#rootDataCid)
116
+ .execute();
117
+
118
+ for (const row of rows) {
119
+ yield {
120
+ cid : CID.parse(row.blockCid),
121
+ block : new Uint8Array(row.data),
122
+ };
123
+ }
124
+ }
125
+
126
+ public async * deleteMany(source: AwaitIterable<CID>, options?: AbortOptions): AsyncIterable<CID> {
127
+ for await (const key of source) {
128
+ await this.delete(key, options);
129
+ yield key;
130
+ }
131
+ }
132
+
133
+ /**
134
+ * Deletes all blocks for this rootDataCid.
135
+ */
136
+ public async clear(): Promise<void> {
137
+ await this.#db
138
+ .deleteFrom('dataBlocks')
139
+ .where('rootDataCid', '=', this.#rootDataCid)
140
+ .execute();
141
+ }
142
+ }