@metaobjectsdev/migrate-ts 0.9.0 → 0.11.0-rc.1
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/check-expr-compare.d.ts.map +1 -1
- package/dist/check-expr-compare.js +9 -0
- package/dist/check-expr-compare.js.map +1 -1
- package/dist/diff/index.d.ts +16 -0
- package/dist/diff/index.d.ts.map +1 -1
- package/dist/diff/index.js +44 -5
- package/dist/diff/index.js.map +1 -1
- package/dist/emit/postgres.js +13 -1
- package/dist/emit/postgres.js.map +1 -1
- package/dist/expected-schema.d.ts.map +1 -1
- package/dist/expected-schema.js +211 -21
- package/dist/expected-schema.js.map +1 -1
- package/dist/introspect/postgres.d.ts +10 -3
- package/dist/introspect/postgres.d.ts.map +1 -1
- package/dist/introspect/postgres.js +89 -12
- package/dist/introspect/postgres.js.map +1 -1
- package/dist/types.d.ts +25 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +15 -4
- package/src/check-expr-compare.ts +9 -0
- package/src/diff/index.ts +63 -5
- package/src/emit/postgres.ts +13 -1
- package/src/expected-schema.ts +232 -23
- package/src/introspect/postgres.ts +113 -16
- package/src/types.ts +25 -0
package/dist/expected-schema.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VALIDATOR_SUBTYPE_NUMERIC, VALIDATOR_SUBTYPE_LENGTH, VALIDATOR_SUBTYPE_REGEX, VALIDATOR_ATTR_PATTERN, TYPE_OBJECT, MetaSource, IDENTITY_ATTR_GENERATION, IDENTITY_ATTR_UNIQUE, FIELD_ATTR_DEFAULT, FIELD_ATTR_MAX_LENGTH, FIELD_ATTR_PRECISION, FIELD_ATTR_SCALE, FIELD_ATTR_UNIQUE, FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG,
|
|
1
|
+
import { VALIDATOR_SUBTYPE_NUMERIC, VALIDATOR_SUBTYPE_LENGTH, VALIDATOR_SUBTYPE_REGEX, VALIDATOR_SUBTYPE_COMPARISON, VALIDATOR_SUBTYPE_REQUIRED_WHEN, VALIDATOR_SUBTYPE_PRESENT_IFF, VALIDATOR_SUBTYPE_AT_LEAST_ONE, VALIDATOR_ATTR_PATTERN, VALIDATOR_ATTR_LEFT, VALIDATOR_ATTR_OP, VALIDATOR_ATTR_RIGHT, VALIDATOR_ATTR_FIELD, VALIDATOR_ATTR_WHEN, VALIDATOR_ATTR_EQUALS, VALIDATOR_ATTR_FIELDS, TYPE_OBJECT, TYPE_FIELD, OBJECT_ATTR_DISCRIMINATOR, OBJECT_ATTR_DISCRIMINATOR_VALUE, MetaSource, IDENTITY_ATTR_GENERATION, IDENTITY_ATTR_UNIQUE, IDENTITY_ATTR_ORDERS, IDENTITY_ATTR_WHERE, IDENTITY_ATTR_EXPR, IDENTITY_ATTR_USING, IDENTITY_ATTR_CONSTRAINT_NAME, FIELD_ATTR_DEFAULT, FIELD_ATTR_MAX_LENGTH, FIELD_ATTR_PRECISION, FIELD_ATTR_SCALE, FIELD_ATTR_UNIQUE, FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_CURRENCY, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_TIME, FIELD_SUBTYPE_TIMESTAMP, FIELD_SUBTYPE_OBJECT, FIELD_SUBTYPE_UUID, FIELD_SUBTYPE_ENUM, FIELD_ATTR_VALUES, FIELD_ATTR_OBJECT_REF, FIELD_ATTR_STORAGE, FIELD_ATTR_DB_COLUMN_TYPE, DB_COLUMN_TYPE_UUID, DB_COLUMN_TYPE_JSONB, DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ, STORAGE_FLATTENED, DOC_ATTR_DESCRIPTION, applyColumnNamingStrategy, DEFAULT_COLUMN_NAMING_STRATEGY, resolveTableName, resolveColumnName, resolveTableSchema, } from "@metaobjectsdev/metadata";
|
|
2
2
|
import { buildExpectedViews } from "./expected-views.js";
|
|
3
3
|
import { resolveReferentialActions, validateSetNullNullability, readIdentityFields, findField, isRequired, } from "./referential-actions.js";
|
|
4
4
|
export function buildExpectedSchema(root, opts) {
|
|
@@ -20,6 +20,10 @@ export function buildExpectedSchema(root, opts) {
|
|
|
20
20
|
continue;
|
|
21
21
|
if (child.subType === "value")
|
|
22
22
|
continue;
|
|
23
|
+
// FR-017 TPH: a subtype shares its discriminator base's single table, so it
|
|
24
|
+
// emits no table of its own. Its own columns are folded into the base below.
|
|
25
|
+
if (isTphSubtype(child))
|
|
26
|
+
continue;
|
|
23
27
|
const hasReadOnlySource = child.ownChildren().some((c) => c instanceof MetaSource && c.isReadOnly());
|
|
24
28
|
const hasWritableSource = child.ownChildren().some((c) => c instanceof MetaSource && c.isWritable());
|
|
25
29
|
// Projection: read-only and not write-through.
|
|
@@ -28,7 +32,13 @@ export function buildExpectedSchema(root, opts) {
|
|
|
28
32
|
entities.push({ entity: child, tableName: resolveTableName(child) });
|
|
29
33
|
}
|
|
30
34
|
const entityToTable = new Map(entities.map((e) => [e.entity.name, e.tableName]));
|
|
31
|
-
|
|
35
|
+
// A reference's targetEntity is package-qualified by the loader (e.g.
|
|
36
|
+
// "acme::a::Foo"), but entityToTable is keyed by the bare entity name ("Foo").
|
|
37
|
+
// Fall back to the bare suffix so cross-package FK targets resolve.
|
|
38
|
+
const resolveTargetTable = (entityName) => entityToTable.get(entityName) ??
|
|
39
|
+
(entityName.includes("::")
|
|
40
|
+
? entityToTable.get(entityName.slice(entityName.lastIndexOf("::") + 2))
|
|
41
|
+
: undefined);
|
|
32
42
|
// Pass 2: build full descriptors with FK resolution.
|
|
33
43
|
// Schema is resolved here (not stored in Pass 1) to avoid exactOptionalPropertyTypes
|
|
34
44
|
// issues with `string | undefined` vs `schema?: string`.
|
|
@@ -96,6 +106,34 @@ function normalizeForSqlite(sqlType) {
|
|
|
96
106
|
return sqlType;
|
|
97
107
|
}
|
|
98
108
|
}
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
// FR-017 TPH (table-per-hierarchy) — single-table schema emission.
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
/** The @discriminator-bearing ancestor of `entity`, or undefined for non-TPH. */
|
|
113
|
+
function discriminatorBaseOf(entity) {
|
|
114
|
+
let a = entity.superResolved;
|
|
115
|
+
while (a !== undefined) {
|
|
116
|
+
if (a.ownAttr(OBJECT_ATTR_DISCRIMINATOR) !== undefined)
|
|
117
|
+
return a;
|
|
118
|
+
a = a.superResolved;
|
|
119
|
+
}
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
/** True if `entity` is a TPH SUBTYPE (declares @discriminatorValue + has a
|
|
123
|
+
* discriminator-bearing ancestor). Such an entity emits no table of its own. */
|
|
124
|
+
function isTphSubtype(entity) {
|
|
125
|
+
return (entity.ownAttr(OBJECT_ATTR_DISCRIMINATOR_VALUE) !== undefined &&
|
|
126
|
+
discriminatorBaseOf(entity) !== undefined);
|
|
127
|
+
}
|
|
128
|
+
/** Concrete TPH subtypes whose discriminator base is `base` (root-level scan). */
|
|
129
|
+
function tphConcreteSubtypes(base, root) {
|
|
130
|
+
if (base.ownAttr(OBJECT_ATTR_DISCRIMINATOR) === undefined)
|
|
131
|
+
return [];
|
|
132
|
+
return root.ownChildren().filter((c) => c.type === TYPE_OBJECT &&
|
|
133
|
+
!c.isAbstract &&
|
|
134
|
+
c.ownAttr(OBJECT_ATTR_DISCRIMINATOR_VALUE) !== undefined &&
|
|
135
|
+
discriminatorBaseOf(c) === base);
|
|
136
|
+
}
|
|
99
137
|
function buildTable(entity, tableName, resolveTargetTable, root, strategy, dialect) {
|
|
100
138
|
// Use effective accessors so inherited fields/identities (from `extends:` /
|
|
101
139
|
// abstract bases like BaseEntity) are included.
|
|
@@ -121,6 +159,25 @@ function buildTable(entity, tableName, resolveTargetTable, root, strategy, diale
|
|
|
121
159
|
columns.push(buildColumn(field, isPk, isPk ? pkGeneration : undefined, strategy));
|
|
122
160
|
}
|
|
123
161
|
}
|
|
162
|
+
// FR-017 TPH: if this is a discriminator base, fold each concrete subtype's
|
|
163
|
+
// OWN fields into the single table as NULLABLE columns (a row of any other
|
|
164
|
+
// subtype stores NULL there), even when the field is @required. Dedupe by
|
|
165
|
+
// column name so an inherited/overridden base column is not re-emitted.
|
|
166
|
+
if (entity.ownAttr(OBJECT_ATTR_DISCRIMINATOR) !== undefined) {
|
|
167
|
+
const existing = new Set(columns.map((c) => c.name));
|
|
168
|
+
for (const sub of tphConcreteSubtypes(entity, root)) {
|
|
169
|
+
for (const field of sub.ownChildren()) {
|
|
170
|
+
if (field.type !== TYPE_FIELD)
|
|
171
|
+
continue;
|
|
172
|
+
const col = buildColumn(field, false, undefined, strategy);
|
|
173
|
+
if (existing.has(col.name))
|
|
174
|
+
continue;
|
|
175
|
+
col.nullable = true; // subtype-only columns are always nullable in TPH
|
|
176
|
+
columns.push(col);
|
|
177
|
+
existing.add(col.name);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
124
181
|
const descriptor = {
|
|
125
182
|
name: tableName,
|
|
126
183
|
columns,
|
|
@@ -164,19 +221,43 @@ function buildSecondaryIndexes(entity, tableName, strategy) {
|
|
|
164
221
|
// Drizzle emits the index using the identity's @name attr directly (no table
|
|
165
222
|
// prefix), so the expected name must match.
|
|
166
223
|
for (const identity of entity.secondaryIdentities()) {
|
|
224
|
+
const exprRaw = identity.ownAttr(IDENTITY_ATTR_EXPR);
|
|
225
|
+
const expr = typeof exprRaw === "string" && exprRaw.trim().length > 0 ? exprRaw.trim() : undefined;
|
|
167
226
|
const fieldNames = readIdentityFields(identity);
|
|
168
|
-
|
|
227
|
+
// An expression index keys off @expr (not @fields); a plain index needs @fields.
|
|
228
|
+
if (fieldNames.length === 0 && expr === undefined)
|
|
169
229
|
continue;
|
|
170
230
|
const cols = fieldNames.map((jsName) => {
|
|
171
231
|
const field = findField(entity, jsName);
|
|
172
232
|
return field ? resolveColumnName(field, strategy) : applyColumnNamingStrategy(jsName, strategy);
|
|
173
233
|
});
|
|
174
234
|
const uniqueAttr = identity.ownAttr(IDENTITY_ATTR_UNIQUE);
|
|
175
|
-
|
|
235
|
+
const index = {
|
|
176
236
|
name: identity.name,
|
|
177
|
-
columns: cols,
|
|
237
|
+
columns: expr ? [] : cols,
|
|
178
238
|
unique: uniqueAttr !== false,
|
|
179
|
-
}
|
|
239
|
+
};
|
|
240
|
+
if (expr)
|
|
241
|
+
index.expr = expr;
|
|
242
|
+
const usingRaw = identity.ownAttr(IDENTITY_ATTR_USING);
|
|
243
|
+
if (typeof usingRaw === "string" && usingRaw.trim().length > 0 && usingRaw.trim() !== "btree") {
|
|
244
|
+
index.using = usingRaw.trim();
|
|
245
|
+
}
|
|
246
|
+
// @orders — per-field sort direction (positional to @fields). Only attach when
|
|
247
|
+
// at least one field is descending (an all-ascending array is the default and
|
|
248
|
+
// must serialize identically to "no orders" for diff stability).
|
|
249
|
+
const ordersRaw = identity.ownAttr(IDENTITY_ATTR_ORDERS);
|
|
250
|
+
if (Array.isArray(ordersRaw)) {
|
|
251
|
+
const orders = cols.map((_, i) => (ordersRaw[i] === "desc" ? "desc" : "asc"));
|
|
252
|
+
if (orders.some((o) => o === "desc"))
|
|
253
|
+
index.orders = orders;
|
|
254
|
+
}
|
|
255
|
+
// @where — partial-index predicate.
|
|
256
|
+
const whereRaw = identity.ownAttr(IDENTITY_ATTR_WHERE);
|
|
257
|
+
if (typeof whereRaw === "string" && whereRaw.trim().length > 0) {
|
|
258
|
+
index.where = whereRaw.trim();
|
|
259
|
+
}
|
|
260
|
+
indexes.push(index);
|
|
180
261
|
}
|
|
181
262
|
return indexes;
|
|
182
263
|
}
|
|
@@ -197,14 +278,14 @@ function buildSecondaryIndexes(entity, tableName, strategy) {
|
|
|
197
278
|
* `<table>_<col>_<validator>_chk`. The expression references the resolved physical
|
|
198
279
|
* column name verbatim (matching the enum-check convention).
|
|
199
280
|
*/
|
|
200
|
-
function validatorCheck(v,
|
|
281
|
+
function validatorCheck(v, qcol, tableName, col, dialect) {
|
|
201
282
|
switch (v.subType) {
|
|
202
283
|
case VALIDATOR_SUBTYPE_NUMERIC: {
|
|
203
284
|
const parts = [];
|
|
204
285
|
if (v.min !== undefined)
|
|
205
|
-
parts.push(`${
|
|
286
|
+
parts.push(`${qcol} >= ${v.min}`);
|
|
206
287
|
if (v.max !== undefined)
|
|
207
|
-
parts.push(`${
|
|
288
|
+
parts.push(`${qcol} <= ${v.max}`);
|
|
208
289
|
if (parts.length === 0)
|
|
209
290
|
return null;
|
|
210
291
|
return { name: `${tableName}_${col}_numeric_chk`, expression: parts.join(" AND ") };
|
|
@@ -212,9 +293,9 @@ function validatorCheck(v, col, tableName, dialect) {
|
|
|
212
293
|
case VALIDATOR_SUBTYPE_LENGTH: {
|
|
213
294
|
const parts = [];
|
|
214
295
|
if (v.min !== undefined)
|
|
215
|
-
parts.push(`length(${
|
|
296
|
+
parts.push(`length(${qcol}) >= ${v.min}`);
|
|
216
297
|
if (v.max !== undefined)
|
|
217
|
-
parts.push(`length(${
|
|
298
|
+
parts.push(`length(${qcol}) <= ${v.max}`);
|
|
218
299
|
if (parts.length === 0)
|
|
219
300
|
return null;
|
|
220
301
|
return { name: `${tableName}_${col}_length_chk`, expression: parts.join(" AND ") };
|
|
@@ -228,35 +309,142 @@ function validatorCheck(v, col, tableName, dialect) {
|
|
|
228
309
|
return null;
|
|
229
310
|
return {
|
|
230
311
|
name: `${tableName}_${col}_regex_chk`,
|
|
231
|
-
expression: `${
|
|
312
|
+
expression: `${qcol} ~ '${pattern.replace(/'/g, "''")}'`,
|
|
232
313
|
};
|
|
233
314
|
}
|
|
234
315
|
default:
|
|
235
316
|
return null;
|
|
236
317
|
}
|
|
237
318
|
}
|
|
319
|
+
/**
|
|
320
|
+
* Quote a column identifier for embedding in a CHECK expression. Both Postgres
|
|
321
|
+
* and SQLite quote identifiers with double-quotes, so the dialect-neutral
|
|
322
|
+
* expression text can carry a quoted column. Quoting is REQUIRED for a
|
|
323
|
+
* mixed-case column (e.g. `enumVal`): a bare `enumVal IN (...)` folds to
|
|
324
|
+
* lowercase `enumval` and references a non-existent column. The check-expression
|
|
325
|
+
* comparator (`normalizeCheckExpr`) strips quotes so an introspected check still
|
|
326
|
+
* compares equal.
|
|
327
|
+
*/
|
|
328
|
+
function quoteCheckCol(col) {
|
|
329
|
+
return `"${col.replace(/"/g, '""')}"`;
|
|
330
|
+
}
|
|
238
331
|
function buildChecks(entity, tableName, strategy, dialect) {
|
|
239
332
|
const checks = [];
|
|
240
333
|
for (const field of entity.fields()) {
|
|
241
334
|
const col = resolveColumnName(field, strategy);
|
|
242
|
-
|
|
335
|
+
const qcol = quoteCheckCol(col);
|
|
336
|
+
// Enum membership check.
|
|
243
337
|
if (field.subType === FIELD_SUBTYPE_ENUM) {
|
|
244
338
|
const raw = field.attr(FIELD_ATTR_VALUES);
|
|
245
339
|
if (Array.isArray(raw) && raw.length > 0) {
|
|
246
340
|
const values = raw.map((v) => String(v));
|
|
247
|
-
const expression = `${
|
|
341
|
+
const expression = `${qcol} IN (${values.map((v) => `'${v.replace(/'/g, "''")}'`).join(", ")})`;
|
|
248
342
|
checks.push({ name: `${tableName}_${col}_chk`, expression });
|
|
249
343
|
}
|
|
250
344
|
}
|
|
251
345
|
// Validator-derived checks.
|
|
252
346
|
for (const v of field.validators()) {
|
|
253
|
-
const check = validatorCheck(v,
|
|
347
|
+
const check = validatorCheck(v, qcol, tableName, col, dialect);
|
|
254
348
|
if (check)
|
|
255
349
|
checks.push(check);
|
|
256
350
|
}
|
|
257
351
|
}
|
|
352
|
+
// Entity-scoped cross-field validators (comparison / requiredWhen / presentIff / atLeastOne).
|
|
353
|
+
for (const v of entity.validators()) {
|
|
354
|
+
const check = crossFieldCheck(v, entity, tableName, strategy, dialect);
|
|
355
|
+
if (check)
|
|
356
|
+
checks.push(check);
|
|
357
|
+
}
|
|
258
358
|
return checks;
|
|
259
359
|
}
|
|
360
|
+
const COMPARISON_SQL_OP = {
|
|
361
|
+
gt: ">", gte: ">=", lt: "<", lte: "<=", ne: "<>", eq: "=",
|
|
362
|
+
};
|
|
363
|
+
/** Resolve a by-name field reference to its physical column (quoted) + the MetaField, or null. */
|
|
364
|
+
function resolveRef(entity, name, strategy) {
|
|
365
|
+
if (typeof name !== "string" || name.length === 0)
|
|
366
|
+
return null;
|
|
367
|
+
const field = entity.fields().find((f) => f.name === name);
|
|
368
|
+
if (!field)
|
|
369
|
+
return null;
|
|
370
|
+
return { qcol: quoteCheckCol(resolveColumnName(field, strategy)), field };
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Render an @equals gating value as a SQL literal, typed by the gating field's
|
|
374
|
+
* subtype: boolean → TRUE/FALSE (1/0 on sqlite/d1), numeric → bare number,
|
|
375
|
+
* everything else → quoted string.
|
|
376
|
+
*/
|
|
377
|
+
function renderEquals(raw, whenField, dialect) {
|
|
378
|
+
const s = String(raw);
|
|
379
|
+
if (whenField.subType === FIELD_SUBTYPE_BOOLEAN) {
|
|
380
|
+
const truthy = s === "true" || s === "1" || s === "TRUE";
|
|
381
|
+
if (dialect === "sqlite" || dialect === "d1")
|
|
382
|
+
return truthy ? "1" : "0";
|
|
383
|
+
return truthy ? "TRUE" : "FALSE";
|
|
384
|
+
}
|
|
385
|
+
const numeric = whenField.subType === FIELD_SUBTYPE_INT || whenField.subType === FIELD_SUBTYPE_LONG
|
|
386
|
+
|| whenField.subType === FIELD_SUBTYPE_DOUBLE || whenField.subType === FIELD_SUBTYPE_FLOAT
|
|
387
|
+
|| whenField.subType === FIELD_SUBTYPE_DECIMAL || whenField.subType === FIELD_SUBTYPE_CURRENCY;
|
|
388
|
+
if (numeric && /^-?\d+(\.\d+)?$/.test(s))
|
|
389
|
+
return s;
|
|
390
|
+
return `'${s.replace(/'/g, "''")}'`;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Derive a CHECK from an entity-scoped cross-field validator. Every reference is
|
|
394
|
+
* resolved to its physical column by name; nothing raw is read from metadata.
|
|
395
|
+
* Returns null (skips the check) if any referenced field is missing.
|
|
396
|
+
*/
|
|
397
|
+
function crossFieldCheck(v, entity, tableName, strategy, dialect) {
|
|
398
|
+
switch (v.subType) {
|
|
399
|
+
case VALIDATOR_SUBTYPE_COMPARISON: {
|
|
400
|
+
const left = resolveRef(entity, v.ownAttr(VALIDATOR_ATTR_LEFT), strategy);
|
|
401
|
+
const right = resolveRef(entity, v.ownAttr(VALIDATOR_ATTR_RIGHT), strategy);
|
|
402
|
+
const op = COMPARISON_SQL_OP[String(v.ownAttr(VALIDATOR_ATTR_OP))];
|
|
403
|
+
if (!left || !right || !op)
|
|
404
|
+
return null;
|
|
405
|
+
const lc = resolveColumnName(left.field, strategy);
|
|
406
|
+
return { name: `${tableName}_${lc}_cmp_chk`, expression: `${left.qcol} ${op} ${right.qcol}` };
|
|
407
|
+
}
|
|
408
|
+
case VALIDATOR_SUBTYPE_REQUIRED_WHEN: {
|
|
409
|
+
const target = resolveRef(entity, v.ownAttr(VALIDATOR_ATTR_FIELD), strategy);
|
|
410
|
+
const when = resolveRef(entity, v.ownAttr(VALIDATOR_ATTR_WHEN), strategy);
|
|
411
|
+
if (!target || !when)
|
|
412
|
+
return null;
|
|
413
|
+
const lit = renderEquals(v.ownAttr(VALIDATOR_ATTR_EQUALS), when.field, dialect);
|
|
414
|
+
const fc = resolveColumnName(target.field, strategy);
|
|
415
|
+
return {
|
|
416
|
+
name: `${tableName}_${fc}_reqwhen_chk`,
|
|
417
|
+
expression: `(${when.qcol} IS DISTINCT FROM ${lit}) OR (${target.qcol} IS NOT NULL)`,
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
case VALIDATOR_SUBTYPE_PRESENT_IFF: {
|
|
421
|
+
const target = resolveRef(entity, v.ownAttr(VALIDATOR_ATTR_FIELD), strategy);
|
|
422
|
+
const when = resolveRef(entity, v.ownAttr(VALIDATOR_ATTR_WHEN), strategy);
|
|
423
|
+
if (!target || !when)
|
|
424
|
+
return null;
|
|
425
|
+
const lit = renderEquals(v.ownAttr(VALIDATOR_ATTR_EQUALS), when.field, dialect);
|
|
426
|
+
const fc = resolveColumnName(target.field, strategy);
|
|
427
|
+
return {
|
|
428
|
+
name: `${tableName}_${fc}_presentiff_chk`,
|
|
429
|
+
expression: `(${target.qcol} IS NOT NULL) = (${when.qcol} IS NOT DISTINCT FROM ${lit})`,
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
case VALIDATOR_SUBTYPE_AT_LEAST_ONE: {
|
|
433
|
+
const raw = v.ownAttr(VALIDATOR_ATTR_FIELDS);
|
|
434
|
+
const names = Array.isArray(raw) ? raw : (typeof raw === "string" ? [raw] : []);
|
|
435
|
+
const refs = names.map((n) => resolveRef(entity, n, strategy));
|
|
436
|
+
if (refs.length === 0 || refs.some((r) => r === null))
|
|
437
|
+
return null;
|
|
438
|
+
const firstCol = resolveColumnName(refs[0].field, strategy);
|
|
439
|
+
return {
|
|
440
|
+
name: `${tableName}_${firstCol}_atleastone_chk`,
|
|
441
|
+
expression: refs.map((r) => `${r.qcol} IS NOT NULL`).join(" OR "),
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
default:
|
|
445
|
+
return null;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
260
448
|
function buildForeignKeys(entity, tableName, resolveTargetTable, root, strategy) {
|
|
261
449
|
const fks = [];
|
|
262
450
|
for (const refChild of entity.referenceIdentities()) {
|
|
@@ -284,7 +472,12 @@ function buildForeignKeys(entity, tableName, resolveTargetTable, root, strategy)
|
|
|
284
472
|
? explicitTargetFields.map((n) => applyColumnNamingStrategy(n, strategy))
|
|
285
473
|
: [applyColumnNamingStrategy(refChild.resolvedTargetPkField(root) ?? "id", strategy)];
|
|
286
474
|
const { onDelete, onUpdate } = resolveReferentialActions(entity, refChild);
|
|
287
|
-
|
|
475
|
+
// An explicit @constraintName adopts an existing FK name (e.g. a database
|
|
476
|
+
// created by another toolchain); absent → the auto-derived default.
|
|
477
|
+
const constraintNameOverride = refChild.ownAttr(IDENTITY_ATTR_CONSTRAINT_NAME);
|
|
478
|
+
const constraintName = typeof constraintNameOverride === "string" && constraintNameOverride.length > 0
|
|
479
|
+
? constraintNameOverride
|
|
480
|
+
: `${tableName}_${fkCols[0]}_fk`;
|
|
288
481
|
// Guard: ON DELETE SET NULL requires nullable FK columns.
|
|
289
482
|
validateSetNullNullability(entity, refChild, onDelete, constraintName);
|
|
290
483
|
const fk = {
|
|
@@ -374,9 +567,7 @@ function subtypeToSqlType(field) {
|
|
|
374
567
|
const m = field.ownAttr(FIELD_ATTR_MAX_LENGTH);
|
|
375
568
|
return typeof m === "number" ? { kind: "text", maxLength: m } : { kind: "text" };
|
|
376
569
|
}
|
|
377
|
-
case FIELD_SUBTYPE_INT:
|
|
378
|
-
case FIELD_SUBTYPE_SHORT:
|
|
379
|
-
case FIELD_SUBTYPE_BYTE: return { kind: "integer", bits: 32 };
|
|
570
|
+
case FIELD_SUBTYPE_INT: return { kind: "integer", bits: 32 };
|
|
380
571
|
case FIELD_SUBTYPE_LONG:
|
|
381
572
|
case FIELD_SUBTYPE_CURRENCY: return { kind: "integer", bits: 64 };
|
|
382
573
|
case FIELD_SUBTYPE_DOUBLE: return { kind: "real" };
|
|
@@ -398,8 +589,7 @@ function subtypeToSqlType(field) {
|
|
|
398
589
|
case FIELD_SUBTYPE_DATE: return { kind: "date" };
|
|
399
590
|
case FIELD_SUBTYPE_TIME: return { kind: "time" }; // Postgres native TIME (whole-second wire form)
|
|
400
591
|
case FIELD_SUBTYPE_TIMESTAMP: return { kind: "timestamp", withTimezone: false };
|
|
401
|
-
case FIELD_SUBTYPE_OBJECT:
|
|
402
|
-
case FIELD_SUBTYPE_CLASS: return { kind: "json" };
|
|
592
|
+
case FIELD_SUBTYPE_OBJECT: return { kind: "json" };
|
|
403
593
|
case FIELD_SUBTYPE_UUID: return { kind: "uuid" }; // R6 Plan 2a — Postgres native uuid
|
|
404
594
|
default: return { kind: "text" }; // unknown → text fallback
|
|
405
595
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expected-schema.js","sourceRoot":"","sources":["../src/expected-schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"expected-schema.js","sourceRoot":"","sources":["../src/expected-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,14 +44,21 @@ export declare function pgTypeToSqlType(dataType: string, maxLength?: number | n
|
|
|
44
44
|
* Returns undefined if the default is absent or empty.
|
|
45
45
|
*
|
|
46
46
|
* Classification rules:
|
|
47
|
-
* - Expressions: now(), CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME,
|
|
48
|
-
* nextval(...),
|
|
49
|
-
*
|
|
47
|
+
* - Expressions: now(), CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME, and any
|
|
48
|
+
* bare function-call (e.g. nextval(...), gen_random_uuid(), uuid_generate_v4()),
|
|
49
|
+
* plus any value that starts with a non-quote character and contains a `::` cast
|
|
50
|
+
* (i.e. bare identifier with cast, like `NULL::text`).
|
|
50
51
|
* - Literals: `'value'` (optionally followed by `::type` cast, which PG
|
|
51
52
|
* commonly appends for clarity). The cast is stripped; the value is unquoted.
|
|
52
53
|
*
|
|
53
54
|
* PG stores literal booleans as `'true'::boolean`, integers as `'42'::integer`,
|
|
54
55
|
* strings as `'hello'::text` — all are literals after stripping the cast.
|
|
56
|
+
*
|
|
57
|
+
* The bare function-call rule keeps this in lockstep with the metadata-side
|
|
58
|
+
* default classifier (expected-schema's EXPR_DEFAULT_PATTERNS, which treats any
|
|
59
|
+
* `()` default as an expression): without it, a `gen_random_uuid()` column default
|
|
60
|
+
* round-trips as a literal here but an expression there, producing a spurious
|
|
61
|
+
* column diff on every uuid-PK table.
|
|
55
62
|
*/
|
|
56
63
|
export declare function parsePgDefault(raw: string | null | undefined): ColumnDefault | undefined;
|
|
57
64
|
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/introspect/postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,cAAc,EAAqC,aAAa,EAA4E,MAAM,aAAa,CAAC;AAC9K,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CA0BrG;AAMD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAmEpF;AAED
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/introspect/postgres.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,cAAc,EAAqC,aAAa,EAA4E,MAAM,aAAa,CAAC;AAC9K,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CA0BrG;AAMD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAmEpF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAoCxF"}
|
|
@@ -110,24 +110,35 @@ export function pgTypeToSqlType(dataType, maxLength) {
|
|
|
110
110
|
* Returns undefined if the default is absent or empty.
|
|
111
111
|
*
|
|
112
112
|
* Classification rules:
|
|
113
|
-
* - Expressions: now(), CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME,
|
|
114
|
-
* nextval(...),
|
|
115
|
-
*
|
|
113
|
+
* - Expressions: now(), CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME, and any
|
|
114
|
+
* bare function-call (e.g. nextval(...), gen_random_uuid(), uuid_generate_v4()),
|
|
115
|
+
* plus any value that starts with a non-quote character and contains a `::` cast
|
|
116
|
+
* (i.e. bare identifier with cast, like `NULL::text`).
|
|
116
117
|
* - Literals: `'value'` (optionally followed by `::type` cast, which PG
|
|
117
118
|
* commonly appends for clarity). The cast is stripped; the value is unquoted.
|
|
118
119
|
*
|
|
119
120
|
* PG stores literal booleans as `'true'::boolean`, integers as `'42'::integer`,
|
|
120
121
|
* strings as `'hello'::text` — all are literals after stripping the cast.
|
|
122
|
+
*
|
|
123
|
+
* The bare function-call rule keeps this in lockstep with the metadata-side
|
|
124
|
+
* default classifier (expected-schema's EXPR_DEFAULT_PATTERNS, which treats any
|
|
125
|
+
* `()` default as an expression): without it, a `gen_random_uuid()` column default
|
|
126
|
+
* round-trips as a literal here but an expression there, producing a spurious
|
|
127
|
+
* column diff on every uuid-PK table.
|
|
121
128
|
*/
|
|
122
129
|
export function parsePgDefault(raw) {
|
|
123
130
|
if (raw === undefined || raw === null || raw === "")
|
|
124
131
|
return undefined;
|
|
125
|
-
// Function-call or keyword expressions
|
|
132
|
+
// Function-call or keyword expressions. The leading-identifier-then-"(" rule
|
|
133
|
+
// matches any bare function call (gen_random_uuid(), uuid_generate_v4(), …)
|
|
134
|
+
// while never matching a quoted literal (those start with a single quote and are
|
|
135
|
+
// handled below).
|
|
126
136
|
if (/^now\(\)$/i.test(raw) ||
|
|
127
137
|
/^current_timestamp\b/i.test(raw) ||
|
|
128
138
|
/^current_date\b/i.test(raw) ||
|
|
129
139
|
/^current_time\b/i.test(raw) ||
|
|
130
|
-
/^nextval\(/i.test(raw)
|
|
140
|
+
/^nextval\(/i.test(raw) ||
|
|
141
|
+
/^[a-zA-Z_][\w.]*\s*\(/.test(raw)) {
|
|
131
142
|
return { kind: "expr", value: raw };
|
|
132
143
|
}
|
|
133
144
|
// If it starts with a single-quote, it's a quoted literal (possibly with
|
|
@@ -243,6 +254,10 @@ async function readPgIndexes(k, schema, table) {
|
|
|
243
254
|
// pg-mem gap: array_position() is not implemented, so this query throws on
|
|
244
255
|
// pg-mem. We catch and return [] so non-index tests still pass against pg-mem.
|
|
245
256
|
// Real PG (Postgres 16) handles this correctly.
|
|
257
|
+
// One row per index KEY, in key order, carrying: the column name (NULL for an
|
|
258
|
+
// expression key — attnum 0), the DESC bit from `indoption`, and the partial-index
|
|
259
|
+
// predicate (`indpred`, constant per index). unnest WITH ORDINALITY over indkey +
|
|
260
|
+
// indoption keeps the key order and pairs each key with its option flags.
|
|
246
261
|
let rows;
|
|
247
262
|
try {
|
|
248
263
|
rows = await sql `
|
|
@@ -250,33 +265,95 @@ async function readPgIndexes(k, schema, table) {
|
|
|
250
265
|
ix.indisunique AS is_unique,
|
|
251
266
|
ix.indisprimary AS is_primary,
|
|
252
267
|
a.attname AS column_name,
|
|
253
|
-
|
|
268
|
+
k.ord AS ordinal,
|
|
269
|
+
(COALESCE(opt.option, 0) & 1) = 1 AS is_desc,
|
|
270
|
+
pg_get_expr(ix.indpred, ix.indrelid) AS predicate,
|
|
271
|
+
am.amname AS access_method,
|
|
272
|
+
pg_get_indexdef(ix.indexrelid) AS indexdef
|
|
254
273
|
FROM pg_index ix
|
|
255
274
|
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
256
275
|
JOIN pg_class t ON t.oid = ix.indrelid
|
|
257
276
|
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
258
|
-
JOIN
|
|
277
|
+
JOIN pg_am am ON am.oid = i.relam
|
|
278
|
+
CROSS JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS k(attnum, ord)
|
|
279
|
+
LEFT JOIN LATERAL unnest(ix.indoption) WITH ORDINALITY AS opt(option, oord)
|
|
280
|
+
ON opt.oord = k.ord
|
|
281
|
+
LEFT JOIN pg_attribute a ON a.attrelid = ix.indrelid AND a.attnum = k.attnum
|
|
259
282
|
WHERE n.nspname = ${schema}
|
|
260
283
|
AND t.relname = ${table}
|
|
261
|
-
ORDER BY i.relname,
|
|
284
|
+
ORDER BY i.relname, k.ord
|
|
262
285
|
`.execute(k);
|
|
263
286
|
}
|
|
264
287
|
catch {
|
|
265
|
-
// pg-mem:
|
|
288
|
+
// pg-mem: unnest WITH ORDINALITY / pg_get_expr unsupported — return empty list.
|
|
266
289
|
return [];
|
|
267
290
|
}
|
|
268
291
|
const byName = new Map();
|
|
269
292
|
for (const r of rows.rows) {
|
|
270
293
|
let entry = byName.get(r.index_name);
|
|
271
294
|
if (!entry) {
|
|
272
|
-
entry = {
|
|
295
|
+
entry = {
|
|
296
|
+
isUnique: r.is_unique,
|
|
297
|
+
isPrimary: r.is_primary,
|
|
298
|
+
cols: [],
|
|
299
|
+
orders: [],
|
|
300
|
+
predicate: r.predicate,
|
|
301
|
+
hasExpressionKey: false,
|
|
302
|
+
accessMethod: r.access_method,
|
|
303
|
+
indexdef: r.indexdef,
|
|
304
|
+
};
|
|
273
305
|
byName.set(r.index_name, entry);
|
|
274
306
|
}
|
|
275
|
-
|
|
307
|
+
if (r.column_name === null) {
|
|
308
|
+
// Expression key (attnum 0) — captured from the index def below.
|
|
309
|
+
entry.hasExpressionKey = true;
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
entry.cols.push(r.column_name);
|
|
313
|
+
entry.orders.push(r.is_desc ? "desc" : "asc");
|
|
314
|
+
}
|
|
276
315
|
}
|
|
277
316
|
return Array.from(byName.entries())
|
|
278
317
|
.filter(([, v]) => !v.isPrimary) // PK index excluded — PK lives in TableDescriptor.primaryKey
|
|
279
|
-
.map(([name, v]) =>
|
|
318
|
+
.map(([name, v]) => {
|
|
319
|
+
const using = v.accessMethod !== "btree" ? v.accessMethod : undefined;
|
|
320
|
+
if (v.hasExpressionKey) {
|
|
321
|
+
// Functional/expression index: lift the raw key expression out of the
|
|
322
|
+
// index def (between `USING <am> (` and its matching `)`, before WHERE).
|
|
323
|
+
const ix = { name, columns: [], unique: v.isUnique, expr: indexDefKeyExpr(v.indexdef) };
|
|
324
|
+
if (using)
|
|
325
|
+
ix.using = using;
|
|
326
|
+
if (v.predicate !== null)
|
|
327
|
+
ix.where = v.predicate;
|
|
328
|
+
return ix;
|
|
329
|
+
}
|
|
330
|
+
const ix = { name, columns: v.cols, unique: v.isUnique };
|
|
331
|
+
if (using)
|
|
332
|
+
ix.using = using;
|
|
333
|
+
if (v.orders.some((o) => o === "desc"))
|
|
334
|
+
ix.orders = v.orders;
|
|
335
|
+
if (v.predicate !== null)
|
|
336
|
+
ix.where = v.predicate;
|
|
337
|
+
return ix;
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
/** Extract the raw key-expression text from a pg index def — the balanced `(...)`
|
|
341
|
+
* after `USING <method> `, stripped of a trailing partial-index `WHERE`. */
|
|
342
|
+
function indexDefKeyExpr(indexdef) {
|
|
343
|
+
const open = indexdef.indexOf("(", indexdef.indexOf(" USING "));
|
|
344
|
+
if (open === -1)
|
|
345
|
+
return indexdef;
|
|
346
|
+
let depth = 0;
|
|
347
|
+
for (let i = open; i < indexdef.length; i++) {
|
|
348
|
+
if (indexdef[i] === "(")
|
|
349
|
+
depth++;
|
|
350
|
+
else if (indexdef[i] === ")") {
|
|
351
|
+
depth--;
|
|
352
|
+
if (depth === 0)
|
|
353
|
+
return indexdef.slice(open + 1, i).trim();
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return indexdef.slice(open + 1).trim();
|
|
280
357
|
}
|
|
281
358
|
async function readPgForeignKeys(k, schema, table) {
|
|
282
359
|
// pg-mem gap: information_schema.referential_constraints is not supported —
|