@zauso-ai/capstan-db 1.0.0-beta.7 → 1.0.0-beta.8
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/client.d.ts +2 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +156 -17
- package/dist/client.js.map +1 -1
- package/dist/crud.d.ts +14 -0
- package/dist/crud.d.ts.map +1 -1
- package/dist/crud.js +35 -31
- package/dist/crud.js.map +1 -1
- package/dist/dialect.d.ts +25 -0
- package/dist/dialect.d.ts.map +1 -0
- package/dist/dialect.js +208 -0
- package/dist/dialect.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts +22 -46
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +245 -160
- package/dist/migrate.js.map +1 -1
- package/dist/naming.d.ts +37 -0
- package/dist/naming.d.ts.map +1 -0
- package/dist/naming.js +196 -0
- package/dist/naming.js.map +1 -0
- package/dist/runtime.d.ts +51 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +490 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema.d.ts +2 -27
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +181 -209
- package/dist/schema.js.map +1 -1
- package/dist/write.d.ts +15 -0
- package/dist/write.d.ts.map +1 -0
- package/dist/write.js +156 -0
- package/dist/write.js.map +1 -0
- package/package.json +5 -1
package/dist/migrate.js
CHANGED
|
@@ -1,176 +1,289 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
function toSnakeCase(str) {
|
|
5
|
-
return str.replace(/[A-Z]/g, (ch) => `_${ch.toLowerCase()}`);
|
|
6
|
-
}
|
|
7
|
-
function pluralise(name) {
|
|
8
|
-
const lower = name.charAt(0).toLowerCase() + name.slice(1);
|
|
9
|
-
if (lower.endsWith("y") && !/[aeiou]y$/i.test(lower)) {
|
|
10
|
-
return lower.slice(0, -1) + "ies";
|
|
11
|
-
}
|
|
12
|
-
if (lower.endsWith("s") || lower.endsWith("x") || lower.endsWith("sh") || lower.endsWith("ch")) {
|
|
13
|
-
return lower + "es";
|
|
14
|
-
}
|
|
15
|
-
return lower + "s";
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Map a Capstan scalar type to a SQLite column type.
|
|
19
|
-
*/
|
|
20
|
-
function sqliteType(type) {
|
|
21
|
-
switch (type) {
|
|
22
|
-
case "string":
|
|
23
|
-
case "text":
|
|
24
|
-
case "date":
|
|
25
|
-
case "datetime":
|
|
26
|
-
case "json":
|
|
27
|
-
case "vector":
|
|
28
|
-
return "TEXT";
|
|
29
|
-
case "integer":
|
|
30
|
-
case "boolean":
|
|
31
|
-
return "INTEGER";
|
|
32
|
-
case "number":
|
|
33
|
-
return "REAL";
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Generate the SQL default expression for a field.
|
|
38
|
-
*/
|
|
39
|
-
function sqlDefault(def) {
|
|
40
|
-
if (def.default === undefined)
|
|
41
|
-
return null;
|
|
42
|
-
if (def.default === "now")
|
|
43
|
-
return "DEFAULT (datetime('now'))";
|
|
44
|
-
if (typeof def.default === "string")
|
|
45
|
-
return `DEFAULT '${def.default.replace(/'/g, "''")}'`;
|
|
46
|
-
if (typeof def.default === "boolean")
|
|
47
|
-
return `DEFAULT ${def.default ? 1 : 0}`;
|
|
48
|
-
if (typeof def.default === "number")
|
|
49
|
-
return `DEFAULT ${def.default}`;
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Build a column definition clause for a CREATE TABLE statement.
|
|
54
|
-
*/
|
|
55
|
-
function columnDef(fieldName, def) {
|
|
1
|
+
import { sqlDefaultClause, sqlTypeForField, sqlTypeForReference } from "./dialect.js";
|
|
2
|
+
import { indexSignature, resolveReferenceField, stableFieldSignature, tableNameForModel, toSnakeCase } from "./naming.js";
|
|
3
|
+
function columnDef(fieldName, def, provider, modelMap) {
|
|
56
4
|
const colName = toSnakeCase(fieldName);
|
|
57
|
-
const
|
|
5
|
+
const referencedField = def.references
|
|
6
|
+
? (() => {
|
|
7
|
+
const target = resolveReferenceField(def.references, modelMap);
|
|
8
|
+
return modelMap.get(target.modelName)?.fields[target.fieldName];
|
|
9
|
+
})()
|
|
10
|
+
: undefined;
|
|
11
|
+
const parts = [colName, referencedField ? sqlTypeForReference(referencedField, provider) : sqlTypeForField(def, provider)];
|
|
58
12
|
if (def.autoId) {
|
|
59
13
|
parts.push("PRIMARY KEY");
|
|
60
14
|
}
|
|
61
|
-
if (def.required && !def.autoId) {
|
|
15
|
+
if ((def.required || def.updatedAt) && !def.autoId) {
|
|
62
16
|
parts.push("NOT NULL");
|
|
63
17
|
}
|
|
64
18
|
if (def.unique && !def.autoId) {
|
|
65
19
|
parts.push("UNIQUE");
|
|
66
20
|
}
|
|
67
|
-
const defaultExpr =
|
|
21
|
+
const defaultExpr = sqlDefaultClause(def, provider);
|
|
68
22
|
if (defaultExpr) {
|
|
69
23
|
parts.push(defaultExpr);
|
|
70
24
|
}
|
|
71
25
|
if (def.references) {
|
|
72
|
-
const
|
|
73
|
-
parts.push(`REFERENCES ${
|
|
26
|
+
const target = resolveReferenceField(def.references, modelMap);
|
|
27
|
+
parts.push(`REFERENCES ${tableNameForModel(target.modelName)}(${toSnakeCase(target.fieldName)})`);
|
|
74
28
|
}
|
|
75
29
|
return parts.join(" ");
|
|
76
30
|
}
|
|
77
|
-
function
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
function createTableSQL(model) {
|
|
81
|
-
const tableName = pluralise(model.name);
|
|
82
|
-
const cols = Object.entries(model.fields).map(([name, def]) => ` ${columnDef(name, def)}`);
|
|
31
|
+
function createTableSQL(model, provider, modelMap, tableNameOverride) {
|
|
32
|
+
const tableName = tableNameOverride ?? tableNameForModel(model);
|
|
33
|
+
const cols = Object.entries(model.fields).map(([name, def]) => ` ${columnDef(name, def, provider, modelMap)}`);
|
|
83
34
|
return `CREATE TABLE ${tableName} (\n${cols.join(",\n")}\n)`;
|
|
84
35
|
}
|
|
85
|
-
function dropTableSQL(tableName) {
|
|
86
|
-
|
|
36
|
+
function dropTableSQL(tableName, provider) {
|
|
37
|
+
switch (provider) {
|
|
38
|
+
case "sqlite":
|
|
39
|
+
case "libsql":
|
|
40
|
+
case "postgres":
|
|
41
|
+
case "mysql":
|
|
42
|
+
return `DROP TABLE IF EXISTS ${tableName}`;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function addColumnSQL(tableName, fieldName, def, provider, modelMap) {
|
|
46
|
+
return `ALTER TABLE ${tableName} ADD COLUMN ${columnDef(fieldName, def, provider, modelMap)}`;
|
|
47
|
+
}
|
|
48
|
+
function renameColumnSQL(tableName, fromFieldName, toFieldName) {
|
|
49
|
+
return `ALTER TABLE ${tableName} RENAME COLUMN ${toSnakeCase(fromFieldName)} TO ${toSnakeCase(toFieldName)}`;
|
|
87
50
|
}
|
|
88
|
-
function
|
|
89
|
-
|
|
51
|
+
function renameTableSQL(fromTableName, toTableName, provider) {
|
|
52
|
+
switch (provider) {
|
|
53
|
+
case "mysql":
|
|
54
|
+
return `RENAME TABLE ${fromTableName} TO ${toTableName}`;
|
|
55
|
+
case "sqlite":
|
|
56
|
+
case "libsql":
|
|
57
|
+
case "postgres":
|
|
58
|
+
return `ALTER TABLE ${fromTableName} RENAME TO ${toTableName}`;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function indexName(tableName, idx) {
|
|
62
|
+
return `idx_${tableName}_${idx.fields.map(toSnakeCase).join("_")}`;
|
|
90
63
|
}
|
|
91
|
-
function createIndexSQL(tableName, idx,
|
|
92
|
-
const idxName =
|
|
64
|
+
function createIndexSQL(tableName, idx, provider) {
|
|
65
|
+
const idxName = indexName(tableName, idx);
|
|
93
66
|
const unique = idx.unique ? "UNIQUE " : "";
|
|
94
|
-
const cols = idx.fields.map((
|
|
95
|
-
const col = toSnakeCase(
|
|
67
|
+
const cols = idx.fields.map((fieldName) => {
|
|
68
|
+
const col = toSnakeCase(fieldName);
|
|
96
69
|
return idx.order ? `${col} ${idx.order.toUpperCase()}` : col;
|
|
97
70
|
});
|
|
98
|
-
|
|
71
|
+
switch (provider) {
|
|
72
|
+
case "sqlite":
|
|
73
|
+
case "libsql":
|
|
74
|
+
case "postgres":
|
|
75
|
+
return `CREATE ${unique}INDEX IF NOT EXISTS ${idxName} ON ${tableName} (${cols.join(", ")})`;
|
|
76
|
+
case "mysql":
|
|
77
|
+
return `CREATE ${unique}INDEX ${idxName} ON ${tableName} (${cols.join(", ")})`;
|
|
78
|
+
}
|
|
99
79
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
80
|
+
function dropIndexSQL(tableName, idx, provider) {
|
|
81
|
+
const idxName = indexName(tableName, idx);
|
|
82
|
+
switch (provider) {
|
|
83
|
+
case "sqlite":
|
|
84
|
+
case "libsql":
|
|
85
|
+
case "postgres":
|
|
86
|
+
return `DROP INDEX IF EXISTS ${idxName}`;
|
|
87
|
+
case "mysql":
|
|
88
|
+
return `DROP INDEX ${idxName} ON ${tableName}`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function tableInfo(model) {
|
|
92
|
+
return { tableName: tableNameForModel(model), model };
|
|
93
|
+
}
|
|
94
|
+
function resolveMigrationOptions(options) {
|
|
95
|
+
if (!options) {
|
|
96
|
+
return { provider: "sqlite", allowDestructive: false, strict: false };
|
|
97
|
+
}
|
|
98
|
+
if (typeof options === "string") {
|
|
99
|
+
return { provider: options, allowDestructive: false, strict: false };
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
provider: options.provider ?? "sqlite",
|
|
103
|
+
allowDestructive: options.allowDestructive ?? false,
|
|
104
|
+
strict: options.strict ?? false,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function isBlockingIssue(issue) {
|
|
108
|
+
return issue.code !== "RENAME_COLUMN";
|
|
109
|
+
}
|
|
110
|
+
function detectColumnRenames(fromModel, toModel) {
|
|
111
|
+
const removed = Object.keys(fromModel.fields).filter((fieldName) => !(fieldName in toModel.fields));
|
|
112
|
+
const added = Object.keys(toModel.fields).filter((fieldName) => !(fieldName in fromModel.fields));
|
|
113
|
+
const used = new Set();
|
|
114
|
+
const renames = [];
|
|
115
|
+
for (const toFieldName of added) {
|
|
116
|
+
const matches = removed.filter((fromFieldName) => !used.has(fromFieldName) &&
|
|
117
|
+
stableFieldSignature(fromModel.fields[fromFieldName]) === stableFieldSignature(toModel.fields[toFieldName]));
|
|
118
|
+
if (matches.length === 1) {
|
|
119
|
+
const fromFieldName = matches[0];
|
|
120
|
+
used.add(fromFieldName);
|
|
121
|
+
renames.push({ fromFieldName, toFieldName });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return renames;
|
|
125
|
+
}
|
|
126
|
+
function tempTableName(tableName) {
|
|
127
|
+
return `__capstan_tmp_${tableName}`;
|
|
128
|
+
}
|
|
129
|
+
function buildTableRewriteSQL(fromModel, toModel, provider, modelMap, renames) {
|
|
130
|
+
const tableName = tableNameForModel(toModel);
|
|
131
|
+
const tempName = tempTableName(tableName);
|
|
132
|
+
const renamedFields = new Map(renames.map((rename) => [rename.toFieldName, rename.fromFieldName]));
|
|
133
|
+
const copyColumns = Object.keys(toModel.fields)
|
|
134
|
+
.map((fieldName) => {
|
|
135
|
+
const sourceFieldName = renamedFields.get(fieldName) ?? (fieldName in fromModel.fields ? fieldName : null);
|
|
136
|
+
if (!sourceFieldName) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
targetColumn: toSnakeCase(fieldName),
|
|
141
|
+
sourceColumn: toSnakeCase(sourceFieldName),
|
|
142
|
+
};
|
|
143
|
+
})
|
|
144
|
+
.filter((entry) => entry !== null);
|
|
145
|
+
const statements = [createTableSQL(toModel, provider, modelMap, tempName)];
|
|
146
|
+
if (copyColumns.length > 0) {
|
|
147
|
+
statements.push(`INSERT INTO ${tempName} (${copyColumns.map((entry) => entry.targetColumn).join(", ")}) ` +
|
|
148
|
+
`SELECT ${copyColumns.map((entry) => entry.sourceColumn).join(", ")} FROM ${tableName}`);
|
|
149
|
+
}
|
|
150
|
+
statements.push(dropTableSQL(tableName, provider));
|
|
151
|
+
statements.push(renameTableSQL(tempName, tableName, provider));
|
|
152
|
+
for (const idx of toModel.indexes) {
|
|
153
|
+
statements.push(createIndexSQL(tableName, idx, provider));
|
|
154
|
+
}
|
|
155
|
+
return statements;
|
|
156
|
+
}
|
|
157
|
+
export function planMigration(fromModels, toModels, options) {
|
|
158
|
+
const resolved = resolveMigrationOptions(options);
|
|
115
159
|
const statements = [];
|
|
160
|
+
const issues = [];
|
|
116
161
|
const fromMap = new Map();
|
|
117
|
-
for (const
|
|
118
|
-
const info = tableInfo(
|
|
162
|
+
for (const model of fromModels) {
|
|
163
|
+
const info = tableInfo(model);
|
|
119
164
|
fromMap.set(info.tableName, info);
|
|
120
165
|
}
|
|
121
166
|
const toMap = new Map();
|
|
122
|
-
for (const
|
|
123
|
-
const info = tableInfo(
|
|
167
|
+
for (const model of toModels) {
|
|
168
|
+
const info = tableInfo(model);
|
|
124
169
|
toMap.set(info.tableName, info);
|
|
125
170
|
}
|
|
126
|
-
|
|
171
|
+
const modelMap = new Map([
|
|
172
|
+
...fromModels.map((model) => [model.name, model]),
|
|
173
|
+
...toModels.map((model) => [model.name, model]),
|
|
174
|
+
]);
|
|
127
175
|
for (const [tableName] of fromMap) {
|
|
128
176
|
if (!toMap.has(tableName)) {
|
|
129
|
-
|
|
177
|
+
issues.push({
|
|
178
|
+
code: "DROP_TABLE",
|
|
179
|
+
tableName,
|
|
180
|
+
destructive: true,
|
|
181
|
+
message: `Table "${tableName}" no longer exists in the target model set.`,
|
|
182
|
+
});
|
|
183
|
+
if (resolved.allowDestructive) {
|
|
184
|
+
statements.push(dropTableSQL(tableName, resolved.provider));
|
|
185
|
+
}
|
|
130
186
|
}
|
|
131
187
|
}
|
|
132
|
-
// Tables in `to`
|
|
133
188
|
for (const [tableName, toInfo] of toMap) {
|
|
134
189
|
const fromInfo = fromMap.get(tableName);
|
|
135
190
|
if (!fromInfo) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
for (let i = 0; i < toInfo.model.indexes.length; i++) {
|
|
140
|
-
statements.push(createIndexSQL(tableName, toInfo.model.indexes[i], i));
|
|
191
|
+
statements.push(createTableSQL(toInfo.model, resolved.provider, modelMap));
|
|
192
|
+
for (const idx of toInfo.model.indexes) {
|
|
193
|
+
statements.push(createIndexSQL(tableName, idx, resolved.provider));
|
|
141
194
|
}
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
const fromFieldNames = new Set(Object.keys(fromInfo.model.fields));
|
|
198
|
+
const toFieldNames = new Set(Object.keys(toInfo.model.fields));
|
|
199
|
+
const renames = detectColumnRenames(fromInfo.model, toInfo.model);
|
|
200
|
+
const renamedFrom = new Set(renames.map((rename) => rename.fromFieldName));
|
|
201
|
+
const renamedTo = new Set(renames.map((rename) => rename.toFieldName));
|
|
202
|
+
const addedFieldNames = [...toFieldNames].filter((fieldName) => !fromFieldNames.has(fieldName) && !renamedTo.has(fieldName));
|
|
203
|
+
const removedFieldNames = [...fromFieldNames].filter((fieldName) => !toFieldNames.has(fieldName) && !renamedFrom.has(fieldName));
|
|
204
|
+
const changedFieldNames = Object.keys(toInfo.model.fields).filter((fieldName) => fieldName in fromInfo.model.fields &&
|
|
205
|
+
stableFieldSignature(fromInfo.model.fields[fieldName]) !== stableFieldSignature(toInfo.model.fields[fieldName]));
|
|
206
|
+
for (const rename of renames) {
|
|
207
|
+
issues.push({
|
|
208
|
+
code: "RENAME_COLUMN",
|
|
209
|
+
tableName,
|
|
210
|
+
fieldName: `${rename.fromFieldName}->${rename.toFieldName}`,
|
|
211
|
+
destructive: false,
|
|
212
|
+
message: `Column "${tableName}.${rename.fromFieldName}" was renamed to "${rename.toFieldName}".`,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
for (const fieldName of removedFieldNames) {
|
|
216
|
+
issues.push({
|
|
217
|
+
code: "DROP_COLUMN",
|
|
218
|
+
tableName,
|
|
219
|
+
fieldName,
|
|
220
|
+
destructive: true,
|
|
221
|
+
message: `Column "${tableName}.${fieldName}" no longer exists in the target model set.`,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
const needsRewrite = changedFieldNames.length > 0 || removedFieldNames.length > 0;
|
|
225
|
+
const canRewrite = removedFieldNames.length === 0 || resolved.allowDestructive;
|
|
226
|
+
if (needsRewrite && canRewrite) {
|
|
227
|
+
statements.push(...buildTableRewriteSQL(fromInfo.model, toInfo.model, resolved.provider, modelMap, renames));
|
|
142
228
|
}
|
|
143
229
|
else {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
230
|
+
for (const rename of renames) {
|
|
231
|
+
statements.push(renameColumnSQL(tableName, rename.fromFieldName, rename.toFieldName));
|
|
232
|
+
}
|
|
233
|
+
for (const fieldName of addedFieldNames) {
|
|
234
|
+
statements.push(addColumnSQL(tableName, fieldName, toInfo.model.fields[fieldName], resolved.provider, modelMap));
|
|
235
|
+
}
|
|
236
|
+
for (const fieldName of changedFieldNames) {
|
|
237
|
+
issues.push({
|
|
238
|
+
code: "ALTER_COLUMN",
|
|
239
|
+
tableName,
|
|
240
|
+
fieldName,
|
|
241
|
+
destructive: false,
|
|
242
|
+
message: `Column "${tableName}.${fieldName}" changed shape and requires a table rewrite migration.`,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const existingIndexes = new Map(fromInfo.model.indexes.map((idx) => [indexSignature(idx), idx]));
|
|
247
|
+
const nextIndexes = new Map(toInfo.model.indexes.map((idx) => [indexSignature(idx), idx]));
|
|
248
|
+
if (!needsRewrite || !canRewrite) {
|
|
249
|
+
for (const [signature, idx] of nextIndexes) {
|
|
250
|
+
if (!existingIndexes.has(signature)) {
|
|
251
|
+
statements.push(createIndexSQL(tableName, idx, resolved.provider));
|
|
149
252
|
}
|
|
150
253
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
254
|
+
for (const [signature, idx] of existingIndexes) {
|
|
255
|
+
if (!nextIndexes.has(signature)) {
|
|
256
|
+
issues.push({
|
|
257
|
+
code: "DROP_INDEX",
|
|
258
|
+
tableName,
|
|
259
|
+
destructive: true,
|
|
260
|
+
message: `Index "${indexName(tableName, idx)}" no longer exists in the target model set.`,
|
|
261
|
+
});
|
|
262
|
+
if (resolved.allowDestructive) {
|
|
263
|
+
statements.push(dropIndexSQL(tableName, idx, resolved.provider));
|
|
264
|
+
}
|
|
158
265
|
}
|
|
159
266
|
}
|
|
160
267
|
}
|
|
161
268
|
}
|
|
162
|
-
return
|
|
269
|
+
return {
|
|
270
|
+
provider: resolved.provider,
|
|
271
|
+
statements,
|
|
272
|
+
issues,
|
|
273
|
+
safe: issues.every((issue) => !isBlockingIssue(issue)),
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
export function generateMigration(fromModels, toModels, options) {
|
|
277
|
+
const resolved = resolveMigrationOptions(options);
|
|
278
|
+
const plan = planMigration(fromModels, toModels, resolved);
|
|
279
|
+
if (resolved.strict && plan.issues.some((issue) => isBlockingIssue(issue))) {
|
|
280
|
+
const details = plan.issues
|
|
281
|
+
.map((issue) => `- ${issue.code}: ${issue.message}`)
|
|
282
|
+
.join("\n");
|
|
283
|
+
throw new Error(`Unsafe or unsupported migration changes detected:\n${details}`);
|
|
284
|
+
}
|
|
285
|
+
return plan.statements;
|
|
163
286
|
}
|
|
164
|
-
/**
|
|
165
|
-
* Execute an array of SQL migration statements against a database.
|
|
166
|
-
*
|
|
167
|
-
* The statements are run inside a transaction so that either all succeed or
|
|
168
|
-
* none are applied.
|
|
169
|
-
*
|
|
170
|
-
* @param db - A Drizzle `BetterSQLite3Database` instance (or any object whose
|
|
171
|
-
* `$client` property is a better-sqlite3 `Database`).
|
|
172
|
-
* @param sql - The SQL statements to execute.
|
|
173
|
-
*/
|
|
174
287
|
export function applyMigration(db, sql) {
|
|
175
288
|
if (sql.length === 0)
|
|
176
289
|
return;
|
|
@@ -187,12 +300,6 @@ export function applyMigration(db, sql) {
|
|
|
187
300
|
throw err;
|
|
188
301
|
}
|
|
189
302
|
}
|
|
190
|
-
// ---------------------------------------------------------------------------
|
|
191
|
-
// Migration tracking
|
|
192
|
-
// ---------------------------------------------------------------------------
|
|
193
|
-
/**
|
|
194
|
-
* SQL to create the `_capstan_migrations` tracking table, per provider.
|
|
195
|
-
*/
|
|
196
303
|
function createTrackingTableSQL(provider) {
|
|
197
304
|
switch (provider) {
|
|
198
305
|
case "postgres":
|
|
@@ -217,57 +324,35 @@ function createTrackingTableSQL(provider) {
|
|
|
217
324
|
)`;
|
|
218
325
|
}
|
|
219
326
|
}
|
|
220
|
-
/**
|
|
221
|
-
* Ensure the `_capstan_migrations` tracking table exists.
|
|
222
|
-
*/
|
|
223
327
|
export function ensureTrackingTable(client, provider = "sqlite") {
|
|
224
328
|
client.exec(createTrackingTableSQL(provider));
|
|
225
329
|
}
|
|
226
|
-
/**
|
|
227
|
-
* Get the list of migration names that have already been applied.
|
|
228
|
-
*/
|
|
229
330
|
export function getAppliedMigrations(client) {
|
|
230
331
|
const rows = client.prepare("SELECT name FROM _capstan_migrations ORDER BY id ASC").all();
|
|
231
|
-
return rows.map((
|
|
332
|
+
return rows.map((row) => row.name);
|
|
232
333
|
}
|
|
233
|
-
/**
|
|
234
|
-
* Return which migrations have been applied and which are pending.
|
|
235
|
-
*
|
|
236
|
-
* @param client - The underlying database client (e.g. better-sqlite3 `Database`).
|
|
237
|
-
* @param allMigrationNames - Every migration file name, sorted chronologically.
|
|
238
|
-
* @param provider - The database provider (defaults to `"sqlite"`).
|
|
239
|
-
*/
|
|
240
334
|
export function getMigrationStatus(client, allMigrationNames, provider = "sqlite") {
|
|
241
335
|
ensureTrackingTable(client, provider);
|
|
242
336
|
const rows = client.prepare("SELECT name, applied_at FROM _capstan_migrations ORDER BY id ASC").all();
|
|
243
|
-
const appliedSet = new Set(rows.map((
|
|
337
|
+
const appliedSet = new Set(rows.map((row) => row.name));
|
|
244
338
|
return {
|
|
245
|
-
applied: rows.map((
|
|
246
|
-
pending: allMigrationNames.filter((
|
|
339
|
+
applied: rows.map((row) => ({ name: row.name, appliedAt: row.applied_at })),
|
|
340
|
+
pending: allMigrationNames.filter((name) => !appliedSet.has(name)),
|
|
247
341
|
};
|
|
248
342
|
}
|
|
249
|
-
/**
|
|
250
|
-
* Apply migration file SQL against a database, tracking each file in the
|
|
251
|
-
* `_capstan_migrations` table. Only files not yet recorded are executed.
|
|
252
|
-
*
|
|
253
|
-
* @param client - The underlying database client.
|
|
254
|
-
* @param migrations - Array of `{ name, sql }` objects (file name + raw SQL content).
|
|
255
|
-
* @param provider - The database provider (defaults to `"sqlite"`).
|
|
256
|
-
* @returns The list of migration names that were applied in this call.
|
|
257
|
-
*/
|
|
258
343
|
export function applyTrackedMigrations(client, migrations, provider = "sqlite") {
|
|
259
344
|
ensureTrackingTable(client, provider);
|
|
260
345
|
const applied = getAppliedMigrations(client);
|
|
261
346
|
const appliedSet = new Set(applied);
|
|
262
|
-
const pending = migrations.filter((
|
|
347
|
+
const pending = migrations.filter((migration) => !appliedSet.has(migration.name));
|
|
263
348
|
if (pending.length === 0)
|
|
264
349
|
return [];
|
|
265
350
|
const executed = [];
|
|
266
351
|
for (const migration of pending) {
|
|
267
352
|
const statements = migration.sql
|
|
268
353
|
.split(";")
|
|
269
|
-
.map((
|
|
270
|
-
.filter((
|
|
354
|
+
.map((statement) => statement.trim())
|
|
355
|
+
.filter((statement) => statement.length > 0 && !statement.startsWith("--"));
|
|
271
356
|
client.exec("BEGIN TRANSACTION");
|
|
272
357
|
try {
|
|
273
358
|
for (const stmt of statements) {
|
package/dist/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/naming.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { FieldDefinition, ModelDefinition, RelationDefinition } from "./types.js";
|
|
2
|
+
export declare function toSnakeCase(str: string): string;
|
|
3
|
+
export declare function lowerFirst(str: string): string;
|
|
4
|
+
export declare function pluralizeModelName(name: string): string;
|
|
5
|
+
export declare function tableNameForModel(model: Pick<ModelDefinition, "name"> | string): string;
|
|
6
|
+
export declare function tableVarForModel(model: Pick<ModelDefinition, "name"> | string): string;
|
|
7
|
+
export declare function inferRelationForeignKey(relation: RelationDefinition): string;
|
|
8
|
+
export declare function inferTargetRelationForeignKey(sourceModel: Pick<ModelDefinition, "name"> | string, relation: RelationDefinition): string;
|
|
9
|
+
export declare function resolveTargetRelationForeignKey(sourceModel: ModelDefinition, relation: RelationDefinition, modelMap: Map<string, ModelDefinition>): string;
|
|
10
|
+
export declare function autoFieldNames(model: ModelDefinition): Set<string>;
|
|
11
|
+
export declare function updatedAtFieldNames(model: ModelDefinition): string[];
|
|
12
|
+
export declare function findPrimaryKeyField(model: ModelDefinition): string | null;
|
|
13
|
+
export interface ReferenceTarget {
|
|
14
|
+
modelName: string;
|
|
15
|
+
fieldName?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function parseReferenceTarget(reference: string): ReferenceTarget;
|
|
18
|
+
export declare function resolveReferenceField(reference: string, modelMap?: Map<string, ModelDefinition>): ReferenceTarget & {
|
|
19
|
+
fieldName: string;
|
|
20
|
+
};
|
|
21
|
+
export declare function findModelByReference(reference: string, modelMap: Map<string, ModelDefinition>): ModelDefinition | null;
|
|
22
|
+
export interface ManyToManyResolution {
|
|
23
|
+
throughModel: ModelDefinition;
|
|
24
|
+
sourceForeignKey: string;
|
|
25
|
+
targetForeignKey: string;
|
|
26
|
+
sourcePrimaryKey: string;
|
|
27
|
+
targetPrimaryKey: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function resolveManyToManyRelation(sourceModel: ModelDefinition, relation: RelationDefinition, modelMap: Map<string, ModelDefinition>): ManyToManyResolution | null;
|
|
30
|
+
export declare function stableFieldSignature(field: FieldDefinition): string;
|
|
31
|
+
export declare function indexSignature(index: {
|
|
32
|
+
fields: string[];
|
|
33
|
+
unique?: boolean;
|
|
34
|
+
order?: "asc" | "desc";
|
|
35
|
+
}): string;
|
|
36
|
+
export declare function cloneDefaultValue<T>(value: T): T;
|
|
37
|
+
//# sourceMappingURL=naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASvD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAEtF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAE5E;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,MAAM,EACnD,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,CAER;AAED,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACrC,MAAM,CAiBR;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAQlE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,CAQpE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAYzE;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAGvE;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACtC,eAAe,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAWzC;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACrC,eAAe,GAAG,IAAI,CAiBxB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,eAAe,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACrC,oBAAoB,GAAG,IAAI,CA2D7B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAcnE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,GAAG,MAAM,CAM5G;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAOhD"}
|