@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/migrate.js CHANGED
@@ -1,176 +1,289 @@
1
- // ---------------------------------------------------------------------------
2
- // Helpers
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 parts = [colName, sqliteType(def.type)];
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 = sqlDefault(def);
21
+ const defaultExpr = sqlDefaultClause(def, provider);
68
22
  if (defaultExpr) {
69
23
  parts.push(defaultExpr);
70
24
  }
71
25
  if (def.references) {
72
- const refTable = pluralise(def.references);
73
- parts.push(`REFERENCES ${refTable}(id)`);
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 tableInfo(model) {
78
- return { tableName: pluralise(model.name), model };
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
- return `DROP TABLE IF EXISTS ${tableName}`;
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 addColumnSQL(tableName, fieldName, def) {
89
- return `ALTER TABLE ${tableName} ADD COLUMN ${columnDef(fieldName, def)}`;
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, idxNum) {
92
- const idxName = `idx_${tableName}_${idx.fields.map(toSnakeCase).join("_")}`;
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((f) => {
95
- const col = toSnakeCase(f);
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
- return `CREATE ${unique}INDEX IF NOT EXISTS ${idxName} ON ${tableName} (${cols.join(", ")})`;
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
- // Public API
102
- // ---------------------------------------------------------------------------
103
- /**
104
- * Generate SQL migration statements that transform `fromModels` into
105
- * `toModels`. This is a forward-only diff: it creates new tables, adds new
106
- * columns, and creates indexes. It does NOT handle column drops, renames, or
107
- * type changes (SQLite has limited ALTER TABLE support).
108
- *
109
- * @param fromModels - The previous set of model definitions (can be empty for
110
- * initial migration).
111
- * @param toModels - The target set of model definitions.
112
- * @returns An array of SQL statements to execute.
113
- */
114
- export function generateMigration(fromModels, toModels) {
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 m of fromModels) {
118
- const info = tableInfo(m);
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 m of toModels) {
123
- const info = tableInfo(m);
167
+ for (const model of toModels) {
168
+ const info = tableInfo(model);
124
169
  toMap.set(info.tableName, info);
125
170
  }
126
- // Tables that exist in `from` but not in `to` — drop them
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
- statements.push(dropTableSQL(tableName));
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
- // New table — CREATE TABLE
137
- statements.push(createTableSQL(toInfo.model));
138
- // Create indexes for the new table
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
- // Existing table check for new columns
145
- const existingFields = new Set(Object.keys(fromInfo.model.fields));
146
- for (const [fieldName, def] of Object.entries(toInfo.model.fields)) {
147
- if (!existingFields.has(fieldName)) {
148
- statements.push(addColumnSQL(tableName, fieldName, def));
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
- // Check for new indexes
152
- const existingIndexKeys = new Set(fromInfo.model.indexes.map((idx) => idx.fields.join(",") + (idx.unique ? ":u" : "")));
153
- for (let i = 0; i < toInfo.model.indexes.length; i++) {
154
- const idx = toInfo.model.indexes[i];
155
- const key = idx.fields.join(",") + (idx.unique ? ":u" : "");
156
- if (!existingIndexKeys.has(key)) {
157
- statements.push(createIndexSQL(tableName, idx, i));
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 statements;
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((r) => r.name);
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((r) => r.name));
337
+ const appliedSet = new Set(rows.map((row) => row.name));
244
338
  return {
245
- applied: rows.map((r) => ({ name: r.name, appliedAt: r.applied_at })),
246
- pending: allMigrationNames.filter((n) => !appliedSet.has(n)),
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((m) => !appliedSet.has(m.name));
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((s) => s.trim())
270
- .filter((s) => s.length > 0 && !s.startsWith("--"));
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) {
@@ -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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"}
@@ -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"}