@enbox/dwn-sql-store 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/src/data-store-s3.js +12 -21
- package/dist/esm/src/data-store-s3.js.map +1 -1
- package/dist/esm/src/data-store-sql.js +14 -37
- package/dist/esm/src/data-store-sql.js.map +1 -1
- package/dist/esm/src/main.js +1 -0
- package/dist/esm/src/main.js.map +1 -1
- package/dist/esm/src/message-store-sql.js +13 -107
- package/dist/esm/src/message-store-sql.js.map +1 -1
- package/dist/esm/src/migration-provider.js +36 -0
- package/dist/esm/src/migration-provider.js.map +1 -0
- package/dist/esm/src/migration-runner.js +26 -88
- package/dist/esm/src/migration-runner.js.map +1 -1
- package/dist/esm/src/migrations/001-initial-schema.js +4 -5
- package/dist/esm/src/migrations/001-initial-schema.js.map +1 -1
- package/dist/esm/src/migrations/002-content-addressed-datastore.js +3 -4
- package/dist/esm/src/migrations/002-content-addressed-datastore.js.map +1 -1
- package/dist/esm/src/migrations/003-add-squash-column.js +3 -4
- package/dist/esm/src/migrations/003-add-squash-column.js.map +1 -1
- package/dist/esm/src/migrations/index.js +14 -6
- package/dist/esm/src/migrations/index.js.map +1 -1
- package/dist/esm/src/resumable-task-store-sql.js +14 -21
- package/dist/esm/src/resumable-task-store-sql.js.map +1 -1
- package/dist/esm/src/state-index-sql.js +17 -58
- package/dist/esm/src/state-index-sql.js.map +1 -1
- package/dist/types/src/data-store-s3.d.ts.map +1 -1
- package/dist/types/src/data-store-sql.d.ts.map +1 -1
- package/dist/types/src/main.d.ts +1 -0
- package/dist/types/src/main.d.ts.map +1 -1
- package/dist/types/src/message-store-sql.d.ts +0 -8
- package/dist/types/src/message-store-sql.d.ts.map +1 -1
- package/dist/types/src/migration-provider.d.ts +36 -0
- package/dist/types/src/migration-provider.d.ts.map +1 -0
- package/dist/types/src/migration-runner.d.ts +13 -39
- package/dist/types/src/migration-runner.d.ts.map +1 -1
- package/dist/types/src/migrations/001-initial-schema.d.ts +3 -3
- package/dist/types/src/migrations/001-initial-schema.d.ts.map +1 -1
- package/dist/types/src/migrations/002-content-addressed-datastore.d.ts +2 -2
- package/dist/types/src/migrations/002-content-addressed-datastore.d.ts.map +1 -1
- package/dist/types/src/migrations/003-add-squash-column.d.ts +2 -2
- package/dist/types/src/migrations/003-add-squash-column.d.ts.map +1 -1
- package/dist/types/src/migrations/index.d.ts +12 -4
- package/dist/types/src/migrations/index.d.ts.map +1 -1
- package/dist/types/src/resumable-task-store-sql.d.ts.map +1 -1
- package/dist/types/src/state-index-sql.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/data-store-s3.ts +14 -25
- package/src/data-store-sql.ts +15 -44
- package/src/main.ts +1 -0
- package/src/message-store-sql.ts +14 -113
- package/src/migration-provider.ts +52 -0
- package/src/migration-runner.ts +33 -123
- package/src/migrations/001-initial-schema.ts +6 -7
- package/src/migrations/002-content-addressed-datastore.ts +5 -6
- package/src/migrations/003-add-squash-column.ts +5 -7
- package/src/migrations/index.ts +15 -7
- package/src/resumable-task-store-sql.ts +16 -25
- package/src/state-index-sql.ts +18 -62
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DataStream } from '@enbox/dwn-sdk-js';
|
|
2
|
-
import { Kysely } from 'kysely';
|
|
3
2
|
import { Readable } from 'stream';
|
|
4
3
|
import { Upload } from '@aws-sdk/lib-storage';
|
|
5
4
|
import { DeleteObjectCommand, DeleteObjectsCommand, GetObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client, } from '@aws-sdk/client-s3';
|
|
5
|
+
import { Kysely, sql } from 'kysely';
|
|
6
6
|
/**
|
|
7
7
|
* S3-backed implementation of {@link DataStore} with SQL-based reference
|
|
8
8
|
* tracking for content-addressed deduplication.
|
|
@@ -40,7 +40,8 @@ export class DataStoreS3 {
|
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
42
|
this.#db = new Kysely({ dialect: this.#dialect });
|
|
43
|
-
|
|
43
|
+
// Fail fast if migrations have not been run — the dataRefs table must already exist.
|
|
44
|
+
await this.#assertTablesExist();
|
|
44
45
|
}
|
|
45
46
|
async close() {
|
|
46
47
|
await this.#db?.destroy();
|
|
@@ -217,26 +218,16 @@ export class DataStoreS3 {
|
|
|
217
218
|
return dataSize;
|
|
218
219
|
}
|
|
219
220
|
/**
|
|
220
|
-
*
|
|
221
|
-
*
|
|
221
|
+
* Verifies that the required `dataRefs` table exists by executing a
|
|
222
|
+
* zero-row SELECT. Throws a clear error directing the caller to run
|
|
223
|
+
* migrations first.
|
|
222
224
|
*/
|
|
223
|
-
async #
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
230
|
-
.addColumn('recordId', 'varchar(60)', (col) => col.notNull())
|
|
231
|
-
.addColumn('dataCid', 'varchar(60)', (col) => col.notNull())
|
|
232
|
-
.addColumn('dataSize', 'bigint', (col) => col.notNull())
|
|
233
|
-
.execute();
|
|
234
|
-
await db.schema.createIndex('index_dataRefs_tenant_recordId_dataCid')
|
|
235
|
-
.on('dataRefs').columns(['tenant', 'recordId', 'dataCid']).unique().execute();
|
|
236
|
-
await db.schema.createIndex('index_dataRefs_dataCid')
|
|
237
|
-
.on('dataRefs').column('dataCid').execute();
|
|
238
|
-
await db.schema.createIndex('index_dataRefs_tenant')
|
|
239
|
-
.on('dataRefs').column('tenant').execute();
|
|
225
|
+
async #assertTablesExist() {
|
|
226
|
+
try {
|
|
227
|
+
await sql `SELECT 1 FROM ${sql.table('dataRefs')} LIMIT 0`.execute(this.#db);
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
throw new Error('DataStoreS3: table \'dataRefs\' does not exist. Run DWN store migrations before opening stores.');
|
|
240
231
|
}
|
|
241
232
|
}
|
|
242
233
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-store-s3.js","sourceRoot":"","sources":["../../../src/data-store-s3.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"data-store-s3.js","sourceRoot":"","sources":["../../../src/data-store-s3.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { CID } from 'multiformats';
|
|
|
3
3
|
import { DataStream } from '@enbox/dwn-sdk-js';
|
|
4
4
|
import { exporter } from 'ipfs-unixfs-exporter';
|
|
5
5
|
import { importer } from 'ipfs-unixfs-importer';
|
|
6
|
-
import { Kysely } from 'kysely';
|
|
6
|
+
import { Kysely, sql } from 'kysely';
|
|
7
7
|
/**
|
|
8
8
|
* SQL-backed implementation of {@link DataStore} with content-addressed
|
|
9
9
|
* deduplication.
|
|
@@ -27,10 +27,8 @@ export class DataStoreSql {
|
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
29
29
|
this.#db = new Kysely({ dialect: this.#dialect });
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
// usage (tests, plugins) that bypass the migration runner.
|
|
33
|
-
await this.#ensureTables();
|
|
30
|
+
// Fail fast if migrations have not been run — tables must already exist.
|
|
31
|
+
await this.#assertTablesExist();
|
|
34
32
|
}
|
|
35
33
|
async close() {
|
|
36
34
|
await this.#db?.destroy();
|
|
@@ -165,39 +163,18 @@ export class DataStoreSql {
|
|
|
165
163
|
return this.#db;
|
|
166
164
|
}
|
|
167
165
|
/**
|
|
168
|
-
*
|
|
169
|
-
*
|
|
166
|
+
* Verifies that the required tables exist by executing a zero-row SELECT.
|
|
167
|
+
* Throws a clear error directing the caller to run migrations first.
|
|
170
168
|
*/
|
|
171
|
-
async #
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
.addColumn('dataCid', 'varchar(60)', (col) => col.notNull())
|
|
181
|
-
.addColumn('dataSize', 'bigint', (col) => col.notNull())
|
|
182
|
-
.execute();
|
|
183
|
-
await db.schema.createIndex('index_dataRefs_tenant_recordId_dataCid')
|
|
184
|
-
.on('dataRefs').columns(['tenant', 'recordId', 'dataCid']).unique().execute();
|
|
185
|
-
await db.schema.createIndex('index_dataRefs_dataCid')
|
|
186
|
-
.on('dataRefs').column('dataCid').execute();
|
|
187
|
-
await db.schema.createIndex('index_dataRefs_tenant')
|
|
188
|
-
.on('dataRefs').column('tenant').execute();
|
|
189
|
-
}
|
|
190
|
-
// ─── dataBlocks ───────────────────────────────────────────────────
|
|
191
|
-
if (!(await this.#dialect.hasTable(db, 'dataBlocks'))) {
|
|
192
|
-
let table = db.schema
|
|
193
|
-
.createTable('dataBlocks')
|
|
194
|
-
.ifNotExists()
|
|
195
|
-
.addColumn('rootDataCid', 'varchar(60)', (col) => col.notNull())
|
|
196
|
-
.addColumn('blockCid', 'varchar(60)', (col) => col.notNull());
|
|
197
|
-
table = this.#dialect.addBlobColumn(table, 'data', (col) => col.notNull());
|
|
198
|
-
await table.execute();
|
|
199
|
-
await db.schema.createIndex('index_dataBlocks_rootDataCid_blockCid')
|
|
200
|
-
.on('dataBlocks').columns(['rootDataCid', 'blockCid']).unique().execute();
|
|
169
|
+
async #assertTablesExist() {
|
|
170
|
+
const tables = ['dataRefs', 'dataBlocks'];
|
|
171
|
+
for (const table of tables) {
|
|
172
|
+
try {
|
|
173
|
+
await sql `SELECT 1 FROM ${sql.table(table)} LIMIT 0`.execute(this.#db);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
throw new Error(`DataStoreSql: table '${table}' does not exist. Run DWN store migrations before opening stores.`);
|
|
177
|
+
}
|
|
201
178
|
}
|
|
202
179
|
}
|
|
203
180
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-store-sql.js","sourceRoot":"","sources":["../../../src/data-store-sql.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"data-store-sql.js","sourceRoot":"","sources":["../../../src/data-store-sql.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/src/main.js
CHANGED
|
@@ -8,6 +8,7 @@ export * from './data-store-s3.js';
|
|
|
8
8
|
export * from './data-store-sql.js';
|
|
9
9
|
export * from './state-index-sql.js';
|
|
10
10
|
export * from './message-store-sql.js';
|
|
11
|
+
export * from './migration-provider.js';
|
|
11
12
|
export * from './migration-runner.js';
|
|
12
13
|
export * from './migrations/index.js';
|
|
13
14
|
export * from './resumable-task-store-sql.js';
|
package/dist/esm/src/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","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
|
+
{"version":3,"file":"main.js","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,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC"}
|
|
@@ -20,116 +20,22 @@ export class MessageStoreSql {
|
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
this.#db = new Kysely({ dialect: this.#dialect });
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
const messagesTableExists = await this.#dialect.hasTable(this.#db, messagesTableName);
|
|
26
|
-
if (!messagesTableExists) {
|
|
27
|
-
let createMessagesTable = this.#db.schema
|
|
28
|
-
.createTable(messagesTableName)
|
|
29
|
-
.ifNotExists()
|
|
30
|
-
.addColumn('tenant', 'varchar(255)', (col) => col.notNull())
|
|
31
|
-
.addColumn('messageCid', 'varchar(60)', (col) => col.notNull())
|
|
32
|
-
.addColumn('interface', 'varchar(20)')
|
|
33
|
-
.addColumn('method', 'varchar(20)')
|
|
34
|
-
.addColumn('recordId', 'varchar(60)')
|
|
35
|
-
.addColumn('entryId', 'varchar(60)')
|
|
36
|
-
.addColumn('parentId', 'varchar(60)')
|
|
37
|
-
.addColumn('protocol', 'varchar(200)')
|
|
38
|
-
.addColumn('protocolPath', 'varchar(200)')
|
|
39
|
-
.addColumn('contextId', 'varchar(600)')
|
|
40
|
-
.addColumn('schema', 'varchar(200)')
|
|
41
|
-
.addColumn('author', 'varchar(255)')
|
|
42
|
-
.addColumn('recipient', 'varchar(255)')
|
|
43
|
-
.addColumn('messageTimestamp', 'varchar(30)')
|
|
44
|
-
.addColumn('dateCreated', 'varchar(30)')
|
|
45
|
-
.addColumn('datePublished', 'varchar(30)')
|
|
46
|
-
.addColumn('isLatestBaseState', 'boolean')
|
|
47
|
-
.addColumn('published', 'boolean')
|
|
48
|
-
.addColumn('prune', 'boolean')
|
|
49
|
-
.addColumn('squash', 'boolean')
|
|
50
|
-
.addColumn('dataFormat', 'varchar(30)')
|
|
51
|
-
.addColumn('dataCid', 'varchar(60)')
|
|
52
|
-
.addColumn('dataSize', 'integer')
|
|
53
|
-
.addColumn('encodedData', 'text') // we optionally store encoded data if it is below a threshold
|
|
54
|
-
.addColumn('attester', 'text')
|
|
55
|
-
.addColumn('permissionGrantId', 'varchar(60)');
|
|
56
|
-
// Add columns that have dialect-specific constraints
|
|
57
|
-
createMessagesTable = this.#dialect.addAutoIncrementingColumn(createMessagesTable, 'id', (col) => col.primaryKey());
|
|
58
|
-
createMessagesTable = this.#dialect.addBlobColumn(createMessagesTable, 'encodedMessageBytes', (col) => col.notNull());
|
|
59
|
-
await createMessagesTable.execute();
|
|
60
|
-
// add unique index for get() and delete() by messageCid — the most fundamental lookup path
|
|
61
|
-
await this.#db.schema
|
|
62
|
-
.createIndex('index_tenant_messageCid')
|
|
63
|
-
.on(messagesTableName)
|
|
64
|
-
.columns(['tenant', 'messageCid'])
|
|
65
|
-
.unique()
|
|
66
|
-
.execute();
|
|
67
|
-
// add indexes to the table
|
|
68
|
-
await this.createIndexes(this.#db, messagesTableName, [
|
|
69
|
-
['tenant', 'recordId'], // multiple uses, notably heavily depended by record chain construction for protocol authorization
|
|
70
|
-
['tenant', 'entryId'], // used by fetchInitialRecordsWriteMessage in RecordsRead, RecordsQuery, and RecordsDelete
|
|
71
|
-
['tenant', 'parentId'], // used to walk down hierarchy of records, use cases include purging of records
|
|
72
|
-
['tenant', 'protocol', 'published', 'messageTimestamp'], // index used for basically every external query
|
|
73
|
-
['tenant', 'interface'], // mainly for fast fetch of ProtocolsConfigure for authorization, not needed if protocol was a DWN Record
|
|
74
|
-
['tenant', 'permissionGrantId'], // for deleting grant-authorized messages though pending https://github.com/enboxorg/enbox/issues/716
|
|
75
|
-
['tenant', 'dateCreated'], // sort optimization for RecordsQuery with DateSort.CreatedAscending/Descending
|
|
76
|
-
['tenant', 'datePublished'], // sort optimization for RecordsQuery with DateSort.PublishedAscending/Descending
|
|
77
|
-
]);
|
|
78
|
-
// contextId index created separately because MySQL requires a prefix length to fit within
|
|
79
|
-
// the 3072-byte InnoDB index key limit. contextId is varchar(600) × 4 bytes (utf8mb4) = 2400 bytes,
|
|
80
|
-
// which combined with tenant (255 × 4 = 1020) and messageTimestamp (30 × 4 = 120) = 3540 bytes,
|
|
81
|
-
// exceeding the limit. A prefix of 480 chars (1920 bytes) brings the total to 3060 bytes.
|
|
82
|
-
// contextId values only contain ASCII chars [a-zA-Z0-9/], so a 480-char prefix is sufficient
|
|
83
|
-
// to distinguish most records (covers ~8 nesting levels of 59-char CID segments).
|
|
84
|
-
if (this.#dialect.name === 'MySQL') {
|
|
85
|
-
await sql `CREATE INDEX index_tenant_contextId_messageTimestamp
|
|
86
|
-
ON ${sql.table(messagesTableName)} (tenant, contextId(480), messageTimestamp)`
|
|
87
|
-
.execute(this.#db);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
await this.createIndexes(this.#db, messagesTableName, [
|
|
91
|
-
['tenant', 'contextId', 'messageTimestamp'], // expected to be used for common query pattern
|
|
92
|
-
]);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// create tags table
|
|
96
|
-
const tagsTableName = 'messageStoreRecordsTags';
|
|
97
|
-
const tagsTableExists = await this.#dialect.hasTable(this.#db, tagsTableName);
|
|
98
|
-
if (!tagsTableExists) {
|
|
99
|
-
let createRecordsTagsTable = this.#db.schema
|
|
100
|
-
.createTable(tagsTableName)
|
|
101
|
-
.ifNotExists()
|
|
102
|
-
.addColumn('tag', 'varchar(30)', (col) => col.notNull())
|
|
103
|
-
.addColumn('valueString', 'varchar(200)')
|
|
104
|
-
.addColumn('valueNumber', 'decimal');
|
|
105
|
-
// Add columns that have dialect-specific constraints
|
|
106
|
-
const foreignMessageInsertId = 'messageInsertId';
|
|
107
|
-
createRecordsTagsTable = this.#dialect.addAutoIncrementingColumn(createRecordsTagsTable, 'id', (col) => col.primaryKey());
|
|
108
|
-
createRecordsTagsTable = this.#dialect.addReferencedColumn(createRecordsTagsTable, tagsTableName, foreignMessageInsertId, 'integer', 'messageStoreMessages', 'id', 'cascade');
|
|
109
|
-
await createRecordsTagsTable.execute();
|
|
110
|
-
// add indexes to the table
|
|
111
|
-
await this.createIndexes(this.#db, tagsTableName, [
|
|
112
|
-
[foreignMessageInsertId],
|
|
113
|
-
['tag', 'valueString'],
|
|
114
|
-
['tag', 'valueNumber']
|
|
115
|
-
]);
|
|
116
|
-
}
|
|
23
|
+
// Fail fast if migrations have not been run — tables must already exist.
|
|
24
|
+
await this.#assertTablesExist();
|
|
117
25
|
}
|
|
118
26
|
/**
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
* @param indexes Each inner array represents a single index and contains the column names to be indexed as a composite index.
|
|
122
|
-
* If the inner array contains only one element, it will be treated as a single column index.
|
|
27
|
+
* Verifies that the required tables exist by executing a zero-row SELECT.
|
|
28
|
+
* Throws a clear error directing the caller to run migrations first.
|
|
123
29
|
*/
|
|
124
|
-
async
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
.
|
|
132
|
-
|
|
30
|
+
async #assertTablesExist() {
|
|
31
|
+
const tables = ['messageStoreMessages', 'messageStoreRecordsTags'];
|
|
32
|
+
for (const table of tables) {
|
|
33
|
+
try {
|
|
34
|
+
await sql `SELECT 1 FROM ${sql.table(table)} LIMIT 0`.execute(this.#db);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
throw new Error(`MessageStoreSql: table '${table}' does not exist. Run DWN store migrations before opening stores.`);
|
|
38
|
+
}
|
|
133
39
|
}
|
|
134
40
|
}
|
|
135
41
|
async close() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-store-sql.js","sourceRoot":"","sources":["../../../src/message-store-sql.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message-store-sql.js","sourceRoot":"","sources":["../../../src/message-store-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kysely {@link MigrationProvider} for DWN store migrations.
|
|
3
|
+
*
|
|
4
|
+
* Wraps an ordered list of `(name, factory)` pairs. At resolution time each
|
|
5
|
+
* factory is called with the dialect, producing the concrete Kysely
|
|
6
|
+
* {@link Migration} objects that the `Migrator` consumes.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const provider = new DwnMigrationProvider(dialect, allDwnMigrations);
|
|
11
|
+
* const migrator = new Migrator({ db, provider });
|
|
12
|
+
* await migrator.migrateToLatest();
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export class DwnMigrationProvider {
|
|
16
|
+
#dialect;
|
|
17
|
+
#factories;
|
|
18
|
+
constructor(dialect, factories) {
|
|
19
|
+
this.#dialect = dialect;
|
|
20
|
+
this.#factories = factories;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Called by the Kysely `Migrator` to retrieve all available migrations.
|
|
24
|
+
* Keys are migration names (e.g. `'001-initial-schema'`); values are the
|
|
25
|
+
* concrete `Migration` objects produced by invoking each factory with the
|
|
26
|
+
* captured dialect.
|
|
27
|
+
*/
|
|
28
|
+
async getMigrations() {
|
|
29
|
+
const migrations = {};
|
|
30
|
+
for (const [name, factory] of this.#factories) {
|
|
31
|
+
migrations[name] = factory(this.#dialect);
|
|
32
|
+
}
|
|
33
|
+
return migrations;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=migration-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-provider.js","sourceRoot":"","sources":["../../../src/migration-provider.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,oBAAoB;IAC/B,QAAQ,CAAU;IAClB,UAAU,CAAuE;IAEjF,YACE,OAAgB,EAChB,SAA+E;QAE/E,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa;QACxB,MAAM,UAAU,GAA8B,EAAE,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -1,99 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
* Tracks applied migrations in a `dwn_migrations` table and applies
|
|
6
|
-
* pending migrations in sequential order on each call to `run()`.
|
|
7
|
-
*
|
|
8
|
-
* Design decisions:
|
|
9
|
-
* - Forward-only: no rollback support. Keep migrations simple and additive.
|
|
10
|
-
* - TypeScript migrations: use the Dialect interface for cross-dialect DDL.
|
|
11
|
-
* - Idempotent: calling `run()` on an up-to-date database is a no-op.
|
|
12
|
-
* - Transaction per migration: each migration runs in its own transaction
|
|
13
|
-
* so a failure leaves the database in the last known-good state.
|
|
14
|
-
*/
|
|
1
|
+
import { allDwnMigrations } from './migrations/index.js';
|
|
2
|
+
import { DwnMigrationProvider } from './migration-provider.js';
|
|
3
|
+
import { Migrator } from 'kysely';
|
|
15
4
|
/**
|
|
16
5
|
* Convenience function to run all DWN store migrations against a database.
|
|
17
6
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
7
|
+
* Uses Kysely's native {@link Migrator} with the {@link DwnMigrationProvider}
|
|
8
|
+
* to apply pending migrations. The Migrator handles locking (Postgres uses
|
|
9
|
+
* `pg_advisory_xact_lock`, MySQL uses `GET_LOCK`/`RELEASE_LOCK`, SQLite is
|
|
10
|
+
* single-writer) and migration tracking via its own `kysely_migration` /
|
|
11
|
+
* `kysely_migration_lock` tables.
|
|
12
|
+
*
|
|
13
|
+
* Call this once during application startup, before opening any stores —
|
|
14
|
+
* e.g. in `getDwnConfig()` or equivalent initialization code.
|
|
21
15
|
*
|
|
22
16
|
* @param db - An open Kysely instance connected to the target database.
|
|
23
17
|
* @param dialect - The dialect for the target database.
|
|
18
|
+
* @param migrations - Optional custom migration list; defaults to the
|
|
19
|
+
* built-in {@link allDwnMigrations}.
|
|
24
20
|
* @returns The names of newly applied migrations (empty if already up-to-date).
|
|
21
|
+
* @throws If any migration fails (the Migrator rolls back only the failed migration).
|
|
25
22
|
*/
|
|
26
|
-
export async function runDwnStoreMigrations(db, dialect) {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
this.#db = db;
|
|
36
|
-
this.#dialect = dialect;
|
|
37
|
-
this.#migrations = migrations;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Ensure the `dwn_migrations` tracking table exists, then apply any
|
|
41
|
-
* pending migrations in order. Returns the names of newly applied migrations.
|
|
42
|
-
*/
|
|
43
|
-
async run() {
|
|
44
|
-
await this.#ensureMigrationTable();
|
|
45
|
-
const applied = await this.#getAppliedMigrations();
|
|
46
|
-
const appliedSet = new Set(applied);
|
|
47
|
-
const pending = this.#migrations.filter((m) => !appliedSet.has(m.name));
|
|
48
|
-
const newlyApplied = [];
|
|
49
|
-
for (const migration of pending) {
|
|
50
|
-
await this.#applyMigration(migration);
|
|
51
|
-
newlyApplied.push(migration.name);
|
|
52
|
-
}
|
|
53
|
-
return newlyApplied;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Create the `dwn_migrations` table if it does not already exist.
|
|
57
|
-
*/
|
|
58
|
-
async #ensureMigrationTable() {
|
|
59
|
-
const exists = await this.#dialect.hasTable(this.#db, 'dwn_migrations');
|
|
60
|
-
if (exists) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
await this.#db.schema
|
|
64
|
-
.createTable('dwn_migrations')
|
|
65
|
-
.ifNotExists()
|
|
66
|
-
.addColumn('name', 'varchar(255)', (col) => col.primaryKey().notNull())
|
|
67
|
-
.addColumn('appliedAt', 'varchar(30)', (col) => col.notNull())
|
|
68
|
-
.execute();
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Get the list of migration names that have already been applied.
|
|
72
|
-
*/
|
|
73
|
-
async #getAppliedMigrations() {
|
|
74
|
-
const rows = await this.#db
|
|
75
|
-
.selectFrom('dwn_migrations')
|
|
76
|
-
.select('name')
|
|
77
|
-
.orderBy('name', 'asc')
|
|
78
|
-
.execute();
|
|
79
|
-
return rows.map((r) => r.name);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Apply a single migration within a transaction and record it.
|
|
83
|
-
*/
|
|
84
|
-
async #applyMigration(migration) {
|
|
85
|
-
await this.#db.transaction().execute(async (trx) => {
|
|
86
|
-
// Run the migration
|
|
87
|
-
await migration.up(trx, this.#dialect);
|
|
88
|
-
// Record it as applied
|
|
89
|
-
await trx
|
|
90
|
-
.insertInto('dwn_migrations')
|
|
91
|
-
.values({
|
|
92
|
-
name: migration.name,
|
|
93
|
-
appliedAt: new Date().toISOString(),
|
|
94
|
-
})
|
|
95
|
-
.execute();
|
|
96
|
-
});
|
|
23
|
+
export async function runDwnStoreMigrations(db, dialect, migrations) {
|
|
24
|
+
const provider = new DwnMigrationProvider(dialect, migrations ?? allDwnMigrations);
|
|
25
|
+
const migrator = new Migrator({ db, provider });
|
|
26
|
+
const resultSet = await migrator.migrateToLatest();
|
|
27
|
+
if (resultSet.error) {
|
|
28
|
+
// Re-throw the underlying error so callers get a useful stack trace.
|
|
29
|
+
// The resultSet.results still contains info about which migrations
|
|
30
|
+
// succeeded before the failure.
|
|
31
|
+
throw resultSet.error;
|
|
97
32
|
}
|
|
33
|
+
return (resultSet.results ?? [])
|
|
34
|
+
.filter((r) => r.status === 'Success')
|
|
35
|
+
.map((r) => r.migrationName);
|
|
98
36
|
}
|
|
99
37
|
//# sourceMappingURL=migration-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-runner.js","sourceRoot":"","sources":["../../../src/migration-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migration-runner.js","sourceRoot":"","sources":["../../../src/migration-runner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAe,EACf,OAAgB,EAChB,UAAiF;IAEjF,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,UAAU,IAAI,gBAAgB,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,GAAuB,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC;IAEvE,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,qEAAqE;QACrE,mEAAmE;QACnE,gCAAgC;QAChC,MAAM,SAAS,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;SAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;SACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -3,12 +3,11 @@ import { sql } from 'kysely';
|
|
|
3
3
|
* Baseline migration: captures the schema as of the pre-migration era.
|
|
4
4
|
*
|
|
5
5
|
* For existing databases that already have these tables, this migration is
|
|
6
|
-
* detected as "already applied" during the adoption bootstrap (see
|
|
6
|
+
* detected as "already applied" during the adoption bootstrap (see runDwnStoreMigrations).
|
|
7
7
|
* For new databases, this creates the full initial schema.
|
|
8
8
|
*/
|
|
9
|
-
export const migration001InitialSchema = {
|
|
10
|
-
|
|
11
|
-
async up(db, dialect) {
|
|
9
|
+
export const migration001InitialSchema = (dialect) => ({
|
|
10
|
+
async up(db) {
|
|
12
11
|
// ─── messageStoreMessages ───────────────────────────────────────────
|
|
13
12
|
if (!(await dialect.hasTable(db, 'messageStoreMessages'))) {
|
|
14
13
|
let table = db.schema
|
|
@@ -159,5 +158,5 @@ export const migration001InitialSchema = {
|
|
|
159
158
|
.on('stateIndexMeta').columns(['tenant', 'messageCid']).execute();
|
|
160
159
|
}
|
|
161
160
|
},
|
|
162
|
-
};
|
|
161
|
+
});
|
|
163
162
|
//# sourceMappingURL=001-initial-schema.js.map
|