@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/introspect/postgres.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/introspect/postgres.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -55,6 +55,31 @@ export interface IndexDescriptor {
|
|
|
55
55
|
name: string;
|
|
56
56
|
columns: string[];
|
|
57
57
|
unique: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Per-column sort direction, positional to `columns`. Omitted (or "asc") = the
|
|
60
|
+
* default ascending order, which Postgres does not render in an index def. A
|
|
61
|
+
* "desc" entry emits `<col> DESC` and is compared against the introspected
|
|
62
|
+
* `pg_index.indoption` DESC bit. Absent ⇒ all-ascending.
|
|
63
|
+
*/
|
|
64
|
+
orders?: ("asc" | "desc")[];
|
|
65
|
+
/**
|
|
66
|
+
* Partial-index predicate (raw SQL, e.g. `delivered_at IS NULL`). Emitted as a
|
|
67
|
+
* trailing `WHERE (<predicate>)`; compared against the introspected
|
|
68
|
+
* `pg_get_expr(indpred, …)` after expression normalization. Absent ⇒ full index.
|
|
69
|
+
*/
|
|
70
|
+
where?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Raw key EXPRESSION for a functional/expression index (e.g. `lower((email)::text)`).
|
|
73
|
+
* When present, the index key is this expression and `columns` is empty —
|
|
74
|
+
* emitted as `(<expr>)` and compared against the introspected `pg_get_indexdef`
|
|
75
|
+
* key after normalization.
|
|
76
|
+
*/
|
|
77
|
+
expr?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Index access method (`gin`, `gist`, `hash`, …). Absent / `btree` is the
|
|
80
|
+
* default and not rendered. Emitted as `USING <method>` before the key list.
|
|
81
|
+
*/
|
|
82
|
+
using?: string;
|
|
58
83
|
}
|
|
59
84
|
export interface CheckDescriptor {
|
|
60
85
|
/** Constraint name, e.g. `<table>_<column>_chk`. Diff/identity key. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAO7C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,8EAA8E;IAC9E,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAChC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAO7C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,8EAA8E;IAC9E,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAChC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACvG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACzF;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACtG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACzH;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACzG;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC3E,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC/E,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC9E,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,EAAE,CAAC,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACnG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACtH;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAC7G;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACnG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAEtH;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC;AAE1F,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,wBAAwB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACzC,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACxC,GACD;IACE,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEN,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAElE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAErF,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iGAAiG;IACjG,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAMD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/migrate-ts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0-rc.1",
|
|
4
4
|
"description": "Schema migration tooling for MetaObjects: diff metadata vs DB and emit SQL for Postgres and SQLite.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -12,7 +12,12 @@
|
|
|
12
12
|
"default": "./dist/index.js"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
|
-
"files": [
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"src",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
16
21
|
"scripts": {
|
|
17
22
|
"build": "tsc -p .",
|
|
18
23
|
"typecheck": "tsc -p tsconfig.typecheck.json"
|
|
@@ -28,13 +33,19 @@
|
|
|
28
33
|
"url": "https://github.com/metaobjectsdev/metaobjects.git",
|
|
29
34
|
"directory": "server/typescript/packages/migrate-ts"
|
|
30
35
|
},
|
|
31
|
-
"keywords": [
|
|
36
|
+
"keywords": [
|
|
37
|
+
"metaobjects",
|
|
38
|
+
"migrate",
|
|
39
|
+
"postgres",
|
|
40
|
+
"sqlite",
|
|
41
|
+
"schema-diff"
|
|
42
|
+
],
|
|
32
43
|
"publishConfig": {
|
|
33
44
|
"access": "public"
|
|
34
45
|
},
|
|
35
46
|
"dependencies": {
|
|
36
47
|
"@iarna/toml": "^2.2.5",
|
|
37
|
-
"@metaobjectsdev/metadata": "0.
|
|
48
|
+
"@metaobjectsdev/metadata": "0.11.0-rc.1"
|
|
38
49
|
},
|
|
39
50
|
"peerDependencies": {
|
|
40
51
|
"kysely": ">=0.27.0"
|
|
@@ -22,6 +22,15 @@ export function normalizeCheckExpr(expr: string): string {
|
|
|
22
22
|
// (`slug ~ 'a::foo'`) is preserved — otherwise two distinct regex CHECKs would
|
|
23
23
|
// normalize equal and a pattern change would be silently missed.
|
|
24
24
|
.replace(/(?<=')::\s*"?\w+"?/g, "")
|
|
25
|
+
// Unwrap double-quoted IDENTIFIERS only (`"enumval"` → `enumval`). We emit a
|
|
26
|
+
// quoted column (`"enumVal" IN (...)`) so a mixed-case column is valid SQL;
|
|
27
|
+
// PG's introspected definition quotes mixed-case identifiers too. Unwrapping
|
|
28
|
+
// makes the generated and introspected forms compare equal, and keeps a
|
|
29
|
+
// legacy unquoted check matching its quoted re-emit. The pattern matches only
|
|
30
|
+
// a quote-pair wrapping a bare identifier (word chars), so a `"` INSIDE a
|
|
31
|
+
// single-quoted string/regex literal (`slug ~ 'a"b'`) is preserved — two
|
|
32
|
+
// distinct patterns must not normalize equal.
|
|
33
|
+
.replace(/"(\w+)"/g, "$1")
|
|
25
34
|
.replace(/[()[\]]/g, " ") // drop parens AND square brackets (ARRAY[…])
|
|
26
35
|
.replace(/\s+/g, " ")
|
|
27
36
|
.trim();
|
package/src/diff/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { sqlTypeEquals } from "../sql-type.js";
|
|
|
8
8
|
import { applyStatus } from "./status.js";
|
|
9
9
|
import { detectColumnRenames, detectTableRenames } from "./rename-heuristic.js";
|
|
10
10
|
import { viewSqlEquals } from "../view-sql-compare.js";
|
|
11
|
-
import { checkExprEquals } from "../check-expr-compare.js";
|
|
11
|
+
import { checkExprEquals, normalizeCheckExpr } from "../check-expr-compare.js";
|
|
12
12
|
import { DEFAULT_DB_SCHEMA_POSTGRES } from "@metaobjectsdev/metadata";
|
|
13
13
|
|
|
14
14
|
export interface DiffArgs {
|
|
@@ -27,6 +27,22 @@ export interface DiffArgs {
|
|
|
27
27
|
* the default. Pass additional patterns to extend.
|
|
28
28
|
*/
|
|
29
29
|
ignoreTables?: string[];
|
|
30
|
+
/**
|
|
31
|
+
* Restrict the diff to a set of DB schemas. A table whose schema is not in this
|
|
32
|
+
* set is excluded from BOTH sides — neither created/altered nor dropped.
|
|
33
|
+
*
|
|
34
|
+
* When omitted, the scope is **auto-derived from the schemas the expected
|
|
35
|
+
* (metadata) side declares**: the model manages only the schemas it actually
|
|
36
|
+
* mentions, so a table living in a schema the model never declares belongs to
|
|
37
|
+
* another owner (e.g. a downstream app's schema sharing the same database) and is
|
|
38
|
+
* left untouched. This makes per-owner drift gates clean without manual config —
|
|
39
|
+
* a model that declares only `public` ignores a co-located downstream-app schema,
|
|
40
|
+
* and vice versa. Pass an explicit set to override; pass nothing for the smart default.
|
|
41
|
+
*
|
|
42
|
+
* Auto-scoping is skipped when the expected side declares no tables at all
|
|
43
|
+
* (nothing to manage → prior whole-DB behavior is preserved).
|
|
44
|
+
*/
|
|
45
|
+
scopeSchemas?: string[];
|
|
30
46
|
/** Dialect; CHECK-constraint evolution on existing tables is emitted for postgres only. */
|
|
31
47
|
dialect?: Dialect;
|
|
32
48
|
}
|
|
@@ -101,16 +117,34 @@ export async function diff(
|
|
|
101
117
|
const changes: Change[] = [];
|
|
102
118
|
|
|
103
119
|
const ignorePatterns = args.ignoreTables ?? DEFAULT_IGNORE_TABLES;
|
|
120
|
+
|
|
121
|
+
// Schema scope (see DiffArgs.scopeSchemas): an explicit set, else the schemas the
|
|
122
|
+
// expected/metadata side declares (the smart default — the model owns only the
|
|
123
|
+
// schemas it mentions), else null = no scoping (empty model → prior whole-DB
|
|
124
|
+
// behavior). A table outside the scope is excluded from both sides, so a
|
|
125
|
+
// co-located schema owned by another app is neither dropped nor reported.
|
|
126
|
+
const declaredSchemas = new Set(
|
|
127
|
+
args.expected.tables.map((t) => t.schema ?? DEFAULT_DB_SCHEMA_POSTGRES),
|
|
128
|
+
);
|
|
129
|
+
const scopeSchemas: Set<string> | null =
|
|
130
|
+
args.scopeSchemas !== undefined
|
|
131
|
+
? new Set(args.scopeSchemas)
|
|
132
|
+
: declaredSchemas.size > 0
|
|
133
|
+
? declaredSchemas
|
|
134
|
+
: null;
|
|
135
|
+
const inScope = (schema: string | undefined): boolean =>
|
|
136
|
+
scopeSchemas === null || scopeSchemas.has(schema ?? DEFAULT_DB_SCHEMA_POSTGRES);
|
|
137
|
+
|
|
104
138
|
// Key tables on (schema, name) identity — same table name in different schemas
|
|
105
139
|
// are distinct entities. tableIdentity normalizes undefined → "public".
|
|
106
140
|
const expectedTables = new Map(
|
|
107
141
|
args.expected.tables
|
|
108
|
-
.filter((t) => !shouldIgnoreTable(t.name, ignorePatterns))
|
|
142
|
+
.filter((t) => !shouldIgnoreTable(t.name, ignorePatterns) && inScope(t.schema))
|
|
109
143
|
.map((t) => [tableIdentity(t), t] as const),
|
|
110
144
|
);
|
|
111
145
|
const actualTables = new Map(
|
|
112
146
|
args.actual.tables
|
|
113
|
-
.filter((t) => !shouldIgnoreTable(t.name, ignorePatterns))
|
|
147
|
+
.filter((t) => !shouldIgnoreTable(t.name, ignorePatterns) && inScope(t.schema))
|
|
114
148
|
.map((t) => [tableIdentity(t), t] as const),
|
|
115
149
|
);
|
|
116
150
|
|
|
@@ -168,7 +202,11 @@ export async function diff(
|
|
|
168
202
|
// Pass 2b: views. Identity is (schema, name). A name present on both sides
|
|
169
203
|
// with a divergent body (whitespace-/wrapper-normalized) emits replace-view;
|
|
170
204
|
// introspect now reads the actual body so view-body drift is visible.
|
|
171
|
-
diffViews(
|
|
205
|
+
diffViews(
|
|
206
|
+
args.expected.views.filter((v) => inScope(v.schema)),
|
|
207
|
+
args.actual.views.filter((v) => inScope(v.schema)),
|
|
208
|
+
changes,
|
|
209
|
+
);
|
|
172
210
|
|
|
173
211
|
// Pass 3: detect table renames BEFORE column renames — so a renamed table's
|
|
174
212
|
// columns are not scanned as orphaned drop/add pairs.
|
|
@@ -354,8 +392,28 @@ function columnDefaultsEqual(a: ColumnDescriptor["default"], b: ColumnDescriptor
|
|
|
354
392
|
|
|
355
393
|
function indexEquals(a: IndexDescriptor, b: IndexDescriptor): boolean {
|
|
356
394
|
if (a.unique !== b.unique) return false;
|
|
395
|
+
// Access method: absent = "btree" (the default).
|
|
396
|
+
if ((a.using ?? "btree") !== (b.using ?? "btree")) return false;
|
|
397
|
+
// Expression-key index: compare the normalized key expression (same canonicalizer
|
|
398
|
+
// as predicates). Both-absent = plain index; one-absent = different.
|
|
399
|
+
if ((a.expr === undefined) !== (b.expr === undefined)) return false;
|
|
400
|
+
if (a.expr !== undefined && b.expr !== undefined) {
|
|
401
|
+
if (normalizeCheckExpr(a.expr) !== normalizeCheckExpr(b.expr)) return false;
|
|
402
|
+
}
|
|
357
403
|
if (a.columns.length !== b.columns.length) return false;
|
|
358
|
-
|
|
404
|
+
if (!a.columns.every((c, i) => c === b.columns[i])) return false;
|
|
405
|
+
// Per-column ordering: an absent `orders` means all-ascending, so compare against
|
|
406
|
+
// a normalized array (default "asc") rather than requiring both to be present.
|
|
407
|
+
const orderAt = (ix: IndexDescriptor, i: number): "asc" | "desc" => ix.orders?.[i] ?? "asc";
|
|
408
|
+
if (a.columns.some((_, i) => orderAt(a, i) !== orderAt(b, i))) return false;
|
|
409
|
+
// Partial-index predicate: normalize (reuse the CHECK-expr canonicalizer — same PG
|
|
410
|
+
// rewrites: casts, parens, whitespace) so an authored predicate compares equal to
|
|
411
|
+
// the introspected `pg_get_expr` form. Both-absent = equal; one-absent = different.
|
|
412
|
+
if ((a.where === undefined) !== (b.where === undefined)) return false;
|
|
413
|
+
if (a.where !== undefined && b.where !== undefined) {
|
|
414
|
+
if (normalizeCheckExpr(a.where) !== normalizeCheckExpr(b.where)) return false;
|
|
415
|
+
}
|
|
416
|
+
return true;
|
|
359
417
|
}
|
|
360
418
|
|
|
361
419
|
function fkEquals(a: FkDescriptor, b: FkDescriptor): boolean {
|
package/src/emit/postgres.ts
CHANGED
|
@@ -213,9 +213,21 @@ function renderDefault(d: ColumnDefault): string {
|
|
|
213
213
|
|
|
214
214
|
function renderCreateIndex(table: string, schema: string | undefined, ix: IndexDescriptor): string {
|
|
215
215
|
const u = ix.unique ? "UNIQUE " : "";
|
|
216
|
+
// Key list: a raw expression (functional/expression index) takes precedence over
|
|
217
|
+
// the per-column list. The expression is emitted verbatim (already valid SQL).
|
|
218
|
+
const keys = ix.expr
|
|
219
|
+
? ix.expr
|
|
220
|
+
: ix.columns
|
|
221
|
+
.map((c, i) => (ix.orders?.[i] === "desc" ? `${quote(c)} DESC` : quote(c)))
|
|
222
|
+
.join(", ");
|
|
223
|
+
// Access method: btree is the default and intentionally not rendered (matches PG's
|
|
224
|
+
// canonical def); anything else (gin/gist/hash/…) is emitted as `USING <method>`.
|
|
225
|
+
const using = ix.using && ix.using !== "btree" ? ` USING ${ix.using}` : "";
|
|
226
|
+
// Partial-index predicate, when present.
|
|
227
|
+
const where = ix.where ? ` WHERE (${ix.where})` : "";
|
|
216
228
|
// Index name itself is unqualified in CREATE INDEX (Postgres places the index
|
|
217
229
|
// in the same schema as the table being indexed). Only the ON clause needs qualification.
|
|
218
|
-
return `CREATE ${u}INDEX ${quote(ix.name)} ON ${quoteQualified(table, schema)} (${
|
|
230
|
+
return `CREATE ${u}INDEX ${quote(ix.name)} ON ${quoteQualified(table, schema)}${using} (${keys})${where};`;
|
|
219
231
|
}
|
|
220
232
|
|
|
221
233
|
function renderAddFk(table: string, schema: string | undefined, fk: FkDescriptor): string {
|