linkgress-orm 0.4.30 → 0.4.32
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/entity/db-context.d.ts +7 -0
- package/dist/entity/db-context.d.ts.map +1 -1
- package/dist/entity/db-context.js +7 -0
- package/dist/entity/db-context.js.map +1 -1
- package/dist/migration/db-schema-manager.d.ts +60 -0
- package/dist/migration/db-schema-manager.d.ts.map +1 -1
- package/dist/migration/db-schema-manager.js +165 -20
- package/dist/migration/db-schema-manager.js.map +1 -1
- package/dist/migration/index-sql.d.ts +137 -0
- package/dist/migration/index-sql.d.ts.map +1 -0
- package/dist/migration/index-sql.js +267 -0
- package/dist/migration/index-sql.js.map +1 -0
- package/dist/migration/migration-scaffold.d.ts +6 -5
- package/dist/migration/migration-scaffold.d.ts.map +1 -1
- package/dist/migration/migration-scaffold.js +40 -20
- package/dist/migration/migration-scaffold.js.map +1 -1
- package/dist/query/query-builder.d.ts.map +1 -1
- package/dist/query/query-builder.js +15 -0
- package/dist/query/query-builder.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { IndexMethod } from '../schema/table-builder';
|
|
2
|
+
/**
|
|
3
|
+
* Shared index SQL generation + definition comparison.
|
|
4
|
+
*
|
|
5
|
+
* Centralizing the CREATE/DROP statement builders here guarantees that the live
|
|
6
|
+
* auto-migrate path (`DbSchemaManager`) and the file scaffold (`MigrationScaffold`)
|
|
7
|
+
* emit byte-for-byte identical SQL — which in turn keeps the signature comparison
|
|
8
|
+
* below stable: an index this module creates always normalizes back to the same
|
|
9
|
+
* signature this module derives from the model, so it is never recreated twice.
|
|
10
|
+
*/
|
|
11
|
+
/** Minimal index shape needed to render SQL — a subset of `IndexDefinition`. */
|
|
12
|
+
export interface IndexSqlSpec {
|
|
13
|
+
name: string;
|
|
14
|
+
columns: string[];
|
|
15
|
+
isUnique?: boolean;
|
|
16
|
+
using?: IndexMethod;
|
|
17
|
+
operatorClass?: string;
|
|
18
|
+
expressions?: string[];
|
|
19
|
+
where?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Build the parenthesized column/expression list, applying the per-column
|
|
23
|
+
* operator-class suffix. Mirrors the logic the ORM has always used so the
|
|
24
|
+
* generated SQL — and therefore PostgreSQL's stored definition — is unchanged.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildIndexColumnList(spec: IndexSqlSpec): string;
|
|
27
|
+
/**
|
|
28
|
+
* Build a `CREATE INDEX` statement. `qualifiedTable` must already be quoted /
|
|
29
|
+
* schema-qualified by the caller (e.g. `"public"."t"`).
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildCreateIndexStatement(spec: IndexSqlSpec, qualifiedTable: string, opts?: {
|
|
32
|
+
concurrent?: boolean;
|
|
33
|
+
ifNotExists?: boolean;
|
|
34
|
+
}): string;
|
|
35
|
+
/**
|
|
36
|
+
* Build a `DROP INDEX` statement. `qualifiedIndex` must already be quoted /
|
|
37
|
+
* schema-qualified by the caller.
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildDropIndexStatement(qualifiedIndex: string, opts?: {
|
|
40
|
+
concurrent?: boolean;
|
|
41
|
+
ifExists?: boolean;
|
|
42
|
+
}): string;
|
|
43
|
+
/** The comparable signature of an index, normalized for equality testing. */
|
|
44
|
+
export interface IndexSignature {
|
|
45
|
+
isUnique: boolean;
|
|
46
|
+
/** Access method, lower-cased. `undefined` model `using` is treated as btree. */
|
|
47
|
+
method: string;
|
|
48
|
+
/** Normalized column / expression list. */
|
|
49
|
+
columns: string;
|
|
50
|
+
/** Normalized partial-index predicate (empty string when none). */
|
|
51
|
+
where: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Normalize an index column-list or predicate fragment so the model's intended
|
|
55
|
+
* SQL and PostgreSQL's canonical `pg_get_indexdef()` form compare equal.
|
|
56
|
+
*
|
|
57
|
+
* The transforms, derived from observed `pg_get_indexdef(oid, 0, true)` output:
|
|
58
|
+
* - lower-case (folds keyword/identifier case: `USING`/`using`, `DESC`, ...);
|
|
59
|
+
* - strip double quotes (`"email"` -> `email`);
|
|
60
|
+
* - strip the `public.` schema prefix the ORM emits for `search_normalize`,
|
|
61
|
+
* which PostgreSQL drops because `public` is on the search_path;
|
|
62
|
+
* - strip `::type` casts that PostgreSQL injects for argument coercion
|
|
63
|
+
* (`search_normalize(email::text)` -> `search_normalize(email)`), the key to
|
|
64
|
+
* leaving `ixNormalized` indexes on varchar columns untouched;
|
|
65
|
+
* - collapse whitespace and tighten spacing around commas/parens.
|
|
66
|
+
*
|
|
67
|
+
* Known limitations (documented): lower-casing also folds string literals inside
|
|
68
|
+
* a partial-index `WHERE`; an explicitly-specified *default* operator class is
|
|
69
|
+
* hidden by PostgreSQL and would read as a difference. Both are rare and noted
|
|
70
|
+
* in the migration guide.
|
|
71
|
+
*/
|
|
72
|
+
export declare function normalizeIndexFragment(fragment: string | undefined): string;
|
|
73
|
+
/**
|
|
74
|
+
* Normalize a partial-index `WHERE` predicate. Builds on
|
|
75
|
+
* {@link normalizeIndexFragment} and additionally folds the rewrites PostgreSQL
|
|
76
|
+
* applies to a predicate at parse-analysis time, so the model's raw predicate
|
|
77
|
+
* string compares equal to the form `pg_get_indexdef` reports:
|
|
78
|
+
*
|
|
79
|
+
* - `!=` → `<>`;
|
|
80
|
+
* - `LIKE`/`ILIKE`/`NOT LIKE`/`NOT ILIKE` → the `~~` / `~~*` / `!~~` / `!~~*`
|
|
81
|
+
* operators PostgreSQL stores;
|
|
82
|
+
* - `col = ANY (ARRAY[...])` ↔ `col IN (...)` (PostgreSQL rewrites `IN` lists to
|
|
83
|
+
* the `= ANY (ARRAY[...])` form — normalize both directions to `IN`);
|
|
84
|
+
* - `col BETWEEN a AND b` → `col >= a AND col <= b` (PostgreSQL's stored form).
|
|
85
|
+
*
|
|
86
|
+
* Not recoverable by text normalization, and therefore documented as
|
|
87
|
+
* limitations (the index may be recreated once per migration): PostgreSQL
|
|
88
|
+
* expands bare date/time literals to a fully-qualified `timestamptz` with the
|
|
89
|
+
* server's offset, and re-parenthesizes sub-expressions by operator precedence.
|
|
90
|
+
* Write such predicates in PostgreSQL's canonical form, or disable
|
|
91
|
+
* `recreateChangedIndexes`, to avoid churn.
|
|
92
|
+
*/
|
|
93
|
+
export declare function normalizeIndexPredicate(where: string | undefined): string;
|
|
94
|
+
/** Build the normalized signature of a model `IndexDefinition`-like object. */
|
|
95
|
+
export declare function modelIndexSignature(spec: IndexSqlSpec): IndexSignature;
|
|
96
|
+
/**
|
|
97
|
+
* Parse PostgreSQL's canonical index definition
|
|
98
|
+
* (`pg_get_indexdef(oid, 0, true)`) into a normalized signature.
|
|
99
|
+
*
|
|
100
|
+
* Returns `null` when the definition cannot be parsed or carries a clause the
|
|
101
|
+
* model cannot express (e.g. `INCLUDE`), in which case the caller treats the
|
|
102
|
+
* index as unchanged to avoid pointless rebuilds.
|
|
103
|
+
*/
|
|
104
|
+
export declare function parseDbIndexSignature(canonicalDef: string): IndexSignature | null;
|
|
105
|
+
export interface IndexComparison {
|
|
106
|
+
changed: boolean;
|
|
107
|
+
/** Human-readable summary of what differs (for logs / scaffold comments). */
|
|
108
|
+
reason?: string;
|
|
109
|
+
modelSignature: IndexSignature;
|
|
110
|
+
dbSignature: IndexSignature | null;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Decide whether the model's index definition differs from what PostgreSQL
|
|
114
|
+
* currently stores. Conservative by design: if the database definition can't be
|
|
115
|
+
* parsed/compared, it reports `changed: false` so a same-named index is never
|
|
116
|
+
* needlessly rebuilt.
|
|
117
|
+
*/
|
|
118
|
+
export declare function compareIndexDefinition(canonicalDbDef: string, spec: IndexSqlSpec): IndexComparison;
|
|
119
|
+
/**
|
|
120
|
+
* Reduce a canonical `pg_get_indexdef()` string to the parts that define the
|
|
121
|
+
* index's shape: its uniqueness and everything from `USING <method>` onward
|
|
122
|
+
* (access method, column/expression list with operator classes, and the partial
|
|
123
|
+
* predicate). The index name and table reference — which differ between the real
|
|
124
|
+
* index and its temp-table rebuild — are deliberately excluded.
|
|
125
|
+
*/
|
|
126
|
+
export declare function indexCanonicalSignature(canonicalDef: string): {
|
|
127
|
+
isUnique: boolean;
|
|
128
|
+
body: string;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Whether two canonical `pg_get_indexdef()` strings describe the same index
|
|
132
|
+
* shape (ignoring index name and table). Because both strings come from
|
|
133
|
+
* PostgreSQL's own deparser in the same session, equivalent definitions are
|
|
134
|
+
* byte-identical here — making this an exact, false-positive-free check.
|
|
135
|
+
*/
|
|
136
|
+
export declare function canonicalDefsEquivalent(defA: string, defB: string): boolean;
|
|
137
|
+
//# sourceMappingURL=index-sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-sql.d.ts","sourceRoot":"","sources":["../../src/migration/index-sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAO/D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,MAAM,EACtB,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GACrD,MAAM,CAQR;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,MAAM,EACtB,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAClD,MAAM,CAIR;AAMD,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;CACf;AAiBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAqB3E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAkBzE;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAOtE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA2CjF;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,YAAY,GACjB,eAAe,CA4BjB;AAaD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAQjG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3E"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildIndexColumnList = buildIndexColumnList;
|
|
4
|
+
exports.buildCreateIndexStatement = buildCreateIndexStatement;
|
|
5
|
+
exports.buildDropIndexStatement = buildDropIndexStatement;
|
|
6
|
+
exports.normalizeIndexFragment = normalizeIndexFragment;
|
|
7
|
+
exports.normalizeIndexPredicate = normalizeIndexPredicate;
|
|
8
|
+
exports.modelIndexSignature = modelIndexSignature;
|
|
9
|
+
exports.parseDbIndexSignature = parseDbIndexSignature;
|
|
10
|
+
exports.compareIndexDefinition = compareIndexDefinition;
|
|
11
|
+
exports.indexCanonicalSignature = indexCanonicalSignature;
|
|
12
|
+
exports.canonicalDefsEquivalent = canonicalDefsEquivalent;
|
|
13
|
+
/**
|
|
14
|
+
* Build the parenthesized column/expression list, applying the per-column
|
|
15
|
+
* operator-class suffix. Mirrors the logic the ORM has always used so the
|
|
16
|
+
* generated SQL — and therefore PostgreSQL's stored definition — is unchanged.
|
|
17
|
+
*/
|
|
18
|
+
function buildIndexColumnList(spec) {
|
|
19
|
+
const opClassSuffix = spec.operatorClass ? ` ${spec.operatorClass}` : '';
|
|
20
|
+
if (spec.expressions && spec.expressions.length > 0) {
|
|
21
|
+
// Expression-based index: raw SQL expressions, no identifier quoting.
|
|
22
|
+
return spec.expressions.map(expr => `${expr}${opClassSuffix}`).join(', ');
|
|
23
|
+
}
|
|
24
|
+
return spec.columns.map(col => `"${col}"${opClassSuffix}`).join(', ');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Build a `CREATE INDEX` statement. `qualifiedTable` must already be quoted /
|
|
28
|
+
* schema-qualified by the caller (e.g. `"public"."t"`).
|
|
29
|
+
*/
|
|
30
|
+
function buildCreateIndexStatement(spec, qualifiedTable, opts) {
|
|
31
|
+
const uniqueStr = spec.isUnique ? 'UNIQUE ' : '';
|
|
32
|
+
const concurrentStr = opts?.concurrent ? 'CONCURRENTLY ' : '';
|
|
33
|
+
const ifNotExistsStr = opts?.ifNotExists ? 'IF NOT EXISTS ' : '';
|
|
34
|
+
const usingStr = spec.using ? ` USING ${spec.using}` : '';
|
|
35
|
+
const whereStr = spec.where ? ` WHERE ${spec.where}` : '';
|
|
36
|
+
const columnList = buildIndexColumnList(spec);
|
|
37
|
+
return `CREATE ${uniqueStr}INDEX ${concurrentStr}${ifNotExistsStr}"${spec.name}" ON ${qualifiedTable}${usingStr} (${columnList})${whereStr}`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Build a `DROP INDEX` statement. `qualifiedIndex` must already be quoted /
|
|
41
|
+
* schema-qualified by the caller.
|
|
42
|
+
*/
|
|
43
|
+
function buildDropIndexStatement(qualifiedIndex, opts) {
|
|
44
|
+
const concurrentStr = opts?.concurrent ? 'CONCURRENTLY ' : '';
|
|
45
|
+
const ifExistsStr = opts?.ifExists ? 'IF EXISTS ' : '';
|
|
46
|
+
return `DROP INDEX ${concurrentStr}${ifExistsStr}${qualifiedIndex}`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Known multi-word PostgreSQL type names, matched before the generic
|
|
50
|
+
* single-identifier rule so a cast like `::timestamp with time zone` is removed
|
|
51
|
+
* whole rather than leaving ` with time zone` behind to corrupt the comparison.
|
|
52
|
+
*/
|
|
53
|
+
const MULTIWORD_CAST_TYPES = [
|
|
54
|
+
'character varying',
|
|
55
|
+
'double precision',
|
|
56
|
+
'bit varying',
|
|
57
|
+
'timestamp without time zone',
|
|
58
|
+
'timestamp with time zone',
|
|
59
|
+
'time without time zone',
|
|
60
|
+
'time with time zone',
|
|
61
|
+
];
|
|
62
|
+
/**
|
|
63
|
+
* Normalize an index column-list or predicate fragment so the model's intended
|
|
64
|
+
* SQL and PostgreSQL's canonical `pg_get_indexdef()` form compare equal.
|
|
65
|
+
*
|
|
66
|
+
* The transforms, derived from observed `pg_get_indexdef(oid, 0, true)` output:
|
|
67
|
+
* - lower-case (folds keyword/identifier case: `USING`/`using`, `DESC`, ...);
|
|
68
|
+
* - strip double quotes (`"email"` -> `email`);
|
|
69
|
+
* - strip the `public.` schema prefix the ORM emits for `search_normalize`,
|
|
70
|
+
* which PostgreSQL drops because `public` is on the search_path;
|
|
71
|
+
* - strip `::type` casts that PostgreSQL injects for argument coercion
|
|
72
|
+
* (`search_normalize(email::text)` -> `search_normalize(email)`), the key to
|
|
73
|
+
* leaving `ixNormalized` indexes on varchar columns untouched;
|
|
74
|
+
* - collapse whitespace and tighten spacing around commas/parens.
|
|
75
|
+
*
|
|
76
|
+
* Known limitations (documented): lower-casing also folds string literals inside
|
|
77
|
+
* a partial-index `WHERE`; an explicitly-specified *default* operator class is
|
|
78
|
+
* hidden by PostgreSQL and would read as a difference. Both are rare and noted
|
|
79
|
+
* in the migration guide.
|
|
80
|
+
*/
|
|
81
|
+
function normalizeIndexFragment(fragment) {
|
|
82
|
+
if (!fragment)
|
|
83
|
+
return '';
|
|
84
|
+
let s = fragment.toLowerCase();
|
|
85
|
+
s = s.replace(/"/g, '');
|
|
86
|
+
s = s.replace(/public\./g, '');
|
|
87
|
+
// Remove casts: `::` + (multi-word type | quoted type | identifier) + optional
|
|
88
|
+
// typmod (`(255)`, `(10,2)`) + optional array suffix (`[]`, as in `::text[]`).
|
|
89
|
+
const multiword = MULTIWORD_CAST_TYPES.join('|');
|
|
90
|
+
const castRe = new RegExp(`::\\s*(?:${multiword}|[a-z_][a-z0-9_]*)(?:\\s*\\(\\s*[0-9,\\s]*\\))?(?:\\s*\\[\\s*\\])?`, 'g');
|
|
91
|
+
s = s.replace(castRe, '');
|
|
92
|
+
// Tighten whitespace and spacing around structural punctuation.
|
|
93
|
+
s = s.replace(/\s+/g, ' ');
|
|
94
|
+
s = s.replace(/\s*,\s*/g, ', ');
|
|
95
|
+
s = s.replace(/\(\s+/g, '(');
|
|
96
|
+
s = s.replace(/\s+\)/g, ')');
|
|
97
|
+
return s.trim();
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Normalize a partial-index `WHERE` predicate. Builds on
|
|
101
|
+
* {@link normalizeIndexFragment} and additionally folds the rewrites PostgreSQL
|
|
102
|
+
* applies to a predicate at parse-analysis time, so the model's raw predicate
|
|
103
|
+
* string compares equal to the form `pg_get_indexdef` reports:
|
|
104
|
+
*
|
|
105
|
+
* - `!=` → `<>`;
|
|
106
|
+
* - `LIKE`/`ILIKE`/`NOT LIKE`/`NOT ILIKE` → the `~~` / `~~*` / `!~~` / `!~~*`
|
|
107
|
+
* operators PostgreSQL stores;
|
|
108
|
+
* - `col = ANY (ARRAY[...])` ↔ `col IN (...)` (PostgreSQL rewrites `IN` lists to
|
|
109
|
+
* the `= ANY (ARRAY[...])` form — normalize both directions to `IN`);
|
|
110
|
+
* - `col BETWEEN a AND b` → `col >= a AND col <= b` (PostgreSQL's stored form).
|
|
111
|
+
*
|
|
112
|
+
* Not recoverable by text normalization, and therefore documented as
|
|
113
|
+
* limitations (the index may be recreated once per migration): PostgreSQL
|
|
114
|
+
* expands bare date/time literals to a fully-qualified `timestamptz` with the
|
|
115
|
+
* server's offset, and re-parenthesizes sub-expressions by operator precedence.
|
|
116
|
+
* Write such predicates in PostgreSQL's canonical form, or disable
|
|
117
|
+
* `recreateChangedIndexes`, to avoid churn.
|
|
118
|
+
*/
|
|
119
|
+
function normalizeIndexPredicate(where) {
|
|
120
|
+
let s = normalizeIndexFragment(where);
|
|
121
|
+
if (!s)
|
|
122
|
+
return '';
|
|
123
|
+
// Operator spellings PostgreSQL canonicalizes (input already lower-cased).
|
|
124
|
+
s = s.replace(/!=/g, '<>');
|
|
125
|
+
s = s.replace(/\bnot\s+ilike\b/g, '!~~*');
|
|
126
|
+
s = s.replace(/\bnot\s+like\b/g, '!~~');
|
|
127
|
+
s = s.replace(/\bilike\b/g, '~~*');
|
|
128
|
+
s = s.replace(/\blike\b/g, '~~');
|
|
129
|
+
// `col = ANY (ARRAY[a, b, c])` -> `col in (a, b, c)` (PG's IN-list rewrite).
|
|
130
|
+
s = s.replace(/([a-z0-9_."]+)\s*=\s*any\s*\(\s*array\[([^\]]*)\]\s*\)/g, '$1 in ($2)');
|
|
131
|
+
// `col BETWEEN a AND b` -> `col >= a AND col <= b` (PG's stored form).
|
|
132
|
+
s = s.replace(/([a-z0-9_."]+)\s+between\s+(\S+)\s+and\s+(\S+)/g, '$1 >= $2 and $1 <= $3');
|
|
133
|
+
return s.replace(/\s+/g, ' ').trim();
|
|
134
|
+
}
|
|
135
|
+
/** Build the normalized signature of a model `IndexDefinition`-like object. */
|
|
136
|
+
function modelIndexSignature(spec) {
|
|
137
|
+
return {
|
|
138
|
+
isUnique: !!spec.isUnique,
|
|
139
|
+
method: (spec.using || 'btree').toLowerCase(),
|
|
140
|
+
columns: normalizeIndexFragment(buildIndexColumnList(spec)),
|
|
141
|
+
where: normalizeIndexPredicate(spec.where),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Parse PostgreSQL's canonical index definition
|
|
146
|
+
* (`pg_get_indexdef(oid, 0, true)`) into a normalized signature.
|
|
147
|
+
*
|
|
148
|
+
* Returns `null` when the definition cannot be parsed or carries a clause the
|
|
149
|
+
* model cannot express (e.g. `INCLUDE`), in which case the caller treats the
|
|
150
|
+
* index as unchanged to avoid pointless rebuilds.
|
|
151
|
+
*/
|
|
152
|
+
function parseDbIndexSignature(canonicalDef) {
|
|
153
|
+
const head = /^CREATE (UNIQUE )?INDEX .+? ON .+? USING (\w+) \(/i.exec(canonicalDef);
|
|
154
|
+
if (!head)
|
|
155
|
+
return null;
|
|
156
|
+
const isUnique = !!head[1];
|
|
157
|
+
const method = head[2].toLowerCase();
|
|
158
|
+
// The column list is the balanced-paren group that opens at the end of the
|
|
159
|
+
// header match. Walk it so nested function-call parens don't end it early.
|
|
160
|
+
const openParenIdx = head.index + head[0].length - 1;
|
|
161
|
+
let depth = 0;
|
|
162
|
+
let closeParenIdx = -1;
|
|
163
|
+
for (let i = openParenIdx; i < canonicalDef.length; i++) {
|
|
164
|
+
const ch = canonicalDef[i];
|
|
165
|
+
if (ch === '(')
|
|
166
|
+
depth++;
|
|
167
|
+
else if (ch === ')') {
|
|
168
|
+
depth--;
|
|
169
|
+
if (depth === 0) {
|
|
170
|
+
closeParenIdx = i;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (closeParenIdx === -1)
|
|
176
|
+
return null;
|
|
177
|
+
const columns = canonicalDef.slice(openParenIdx + 1, closeParenIdx);
|
|
178
|
+
const rest = canonicalDef.slice(closeParenIdx + 1).trim();
|
|
179
|
+
let where = '';
|
|
180
|
+
if (rest) {
|
|
181
|
+
const whereMatch = /^WHERE\s+(.*)$/is.exec(rest);
|
|
182
|
+
if (whereMatch) {
|
|
183
|
+
where = whereMatch[1];
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Trailing clause the model can't represent (INCLUDE, WITH, TABLESPACE...).
|
|
187
|
+
// Be conservative: signal "unknown" so we don't rebuild on every run.
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
isUnique,
|
|
193
|
+
method,
|
|
194
|
+
columns: normalizeIndexFragment(columns),
|
|
195
|
+
where: normalizeIndexPredicate(where),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Decide whether the model's index definition differs from what PostgreSQL
|
|
200
|
+
* currently stores. Conservative by design: if the database definition can't be
|
|
201
|
+
* parsed/compared, it reports `changed: false` so a same-named index is never
|
|
202
|
+
* needlessly rebuilt.
|
|
203
|
+
*/
|
|
204
|
+
function compareIndexDefinition(canonicalDbDef, spec) {
|
|
205
|
+
const modelSignature = modelIndexSignature(spec);
|
|
206
|
+
const dbSignature = parseDbIndexSignature(canonicalDbDef);
|
|
207
|
+
if (!dbSignature) {
|
|
208
|
+
return { changed: false, modelSignature, dbSignature: null };
|
|
209
|
+
}
|
|
210
|
+
const diffs = [];
|
|
211
|
+
if (modelSignature.isUnique !== dbSignature.isUnique) {
|
|
212
|
+
diffs.push(`unique ${dbSignature.isUnique} -> ${modelSignature.isUnique}`);
|
|
213
|
+
}
|
|
214
|
+
if (modelSignature.method !== dbSignature.method) {
|
|
215
|
+
diffs.push(`method ${dbSignature.method} -> ${modelSignature.method}`);
|
|
216
|
+
}
|
|
217
|
+
if (modelSignature.columns !== dbSignature.columns) {
|
|
218
|
+
diffs.push(`columns (${dbSignature.columns}) -> (${modelSignature.columns})`);
|
|
219
|
+
}
|
|
220
|
+
if (modelSignature.where !== dbSignature.where) {
|
|
221
|
+
diffs.push(`where (${dbSignature.where || 'none'}) -> (${modelSignature.where || 'none'})`);
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
changed: diffs.length > 0,
|
|
225
|
+
reason: diffs.length > 0 ? diffs.join('; ') : undefined,
|
|
226
|
+
modelSignature,
|
|
227
|
+
dbSignature,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
// ---------------------------------------------------------------------------
|
|
231
|
+
// Authoritative comparison via PostgreSQL's own canonical form
|
|
232
|
+
// ---------------------------------------------------------------------------
|
|
233
|
+
//
|
|
234
|
+
// The string comparison above is a fast first pass. To be certain two index
|
|
235
|
+
// definitions are equivalent — without any normalization guesswork — the schema
|
|
236
|
+
// manager rebuilds the model index on an empty mirror table and compares
|
|
237
|
+
// PostgreSQL's `pg_get_indexdef()` of both sides. These helpers compare two such
|
|
238
|
+
// canonical defs while ignoring the parts that legitimately differ (the index
|
|
239
|
+
// name and the table it is on).
|
|
240
|
+
/**
|
|
241
|
+
* Reduce a canonical `pg_get_indexdef()` string to the parts that define the
|
|
242
|
+
* index's shape: its uniqueness and everything from `USING <method>` onward
|
|
243
|
+
* (access method, column/expression list with operator classes, and the partial
|
|
244
|
+
* predicate). The index name and table reference — which differ between the real
|
|
245
|
+
* index and its temp-table rebuild — are deliberately excluded.
|
|
246
|
+
*/
|
|
247
|
+
function indexCanonicalSignature(canonicalDef) {
|
|
248
|
+
const trimmed = canonicalDef.trim();
|
|
249
|
+
const isUnique = /^CREATE\s+UNIQUE\s+INDEX\b/i.test(trimmed);
|
|
250
|
+
const usingIdx = trimmed.indexOf(' USING ');
|
|
251
|
+
const body = (usingIdx >= 0 ? trimmed.slice(usingIdx) : trimmed)
|
|
252
|
+
.replace(/\s+/g, ' ')
|
|
253
|
+
.trim();
|
|
254
|
+
return { isUnique, body };
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Whether two canonical `pg_get_indexdef()` strings describe the same index
|
|
258
|
+
* shape (ignoring index name and table). Because both strings come from
|
|
259
|
+
* PostgreSQL's own deparser in the same session, equivalent definitions are
|
|
260
|
+
* byte-identical here — making this an exact, false-positive-free check.
|
|
261
|
+
*/
|
|
262
|
+
function canonicalDefsEquivalent(defA, defB) {
|
|
263
|
+
const a = indexCanonicalSignature(defA);
|
|
264
|
+
const b = indexCanonicalSignature(defB);
|
|
265
|
+
return a.isUnique === b.isUnique && a.body === b.body;
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=index-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-sql.js","sourceRoot":"","sources":["../../src/migration/index-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,12 +60,13 @@ export declare class MigrationScaffold {
|
|
|
60
60
|
*/
|
|
61
61
|
private resolveDbType;
|
|
62
62
|
/**
|
|
63
|
-
* Build
|
|
64
|
-
* Returns [DROP IF EXISTS, CREATE] for idempotency
|
|
65
|
-
*
|
|
66
|
-
*
|
|
63
|
+
* Build the UP SQL for a create_index / recreate_index operation.
|
|
64
|
+
* Returns [DROP IF EXISTS, CREATE] for idempotency, so a recreate replaces a
|
|
65
|
+
* changed-signature index in place. Uses the shared builders so the generated
|
|
66
|
+
* SQL is identical to the live auto-migrate path — including `USING <method>`
|
|
67
|
+
* and per-column operator classes (which the previous scaffold omitted).
|
|
67
68
|
*/
|
|
68
|
-
private
|
|
69
|
+
private buildIndexUpSql;
|
|
69
70
|
/**
|
|
70
71
|
* Build CREATE FOREIGN KEY SQL.
|
|
71
72
|
* Returns [DROP IF EXISTS, ADD CONSTRAINT] for idempotency.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-scaffold.d.ts","sourceRoot":"","sources":["../../src/migration/migration-scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"migration-scaffold.d.ts","sourceRoot":"","sources":["../../src/migration/migration-scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AASxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAJhB,OAAO,CAAC,MAAM,CAAkB;gBAGtB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,eAAe;IAKjC;;;OAGG;IACH,OAAO,CAAC,aAAa;IAiErB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+EvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAmE3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAoBrB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IA0BvB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAwBhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;;;;;;OASG;IACG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAClD,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IA8BF;;;;;OAKG;IACG,aAAa,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACvD,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAWF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;OAEG;IACH,OAAO,CAAC,0BAA0B;CA2BnC"}
|
|
@@ -37,6 +37,7 @@ exports.MigrationScaffold = void 0;
|
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const migration_loader_1 = require("./migration-loader");
|
|
40
|
+
const index_sql_1 = require("./index-sql");
|
|
40
41
|
const conditions_1 = require("../query/conditions");
|
|
41
42
|
/**
|
|
42
43
|
* Generates migration scaffold files from schema differences.
|
|
@@ -99,7 +100,10 @@ class MigrationScaffold {
|
|
|
99
100
|
case 'alter_column':
|
|
100
101
|
return [this.buildAlterColumnSql(op.tableName, op.columnName, op.from, op.to, op.schema)];
|
|
101
102
|
case 'create_index':
|
|
102
|
-
|
|
103
|
+
case 'recreate_index':
|
|
104
|
+
// Both drop-if-exists then create, so the statement is idempotent and a
|
|
105
|
+
// changed-signature recreate replaces the old index in place.
|
|
106
|
+
return this.buildIndexUpSql(op);
|
|
103
107
|
case 'drop_index': {
|
|
104
108
|
const qualifiedIndex = op.schema
|
|
105
109
|
? `"${op.schema}"."${op.indexName}"`
|
|
@@ -159,6 +163,18 @@ class MigrationScaffold {
|
|
|
159
163
|
: `"${op.indexName}"`;
|
|
160
164
|
return [`DROP INDEX IF EXISTS ${idxName}`];
|
|
161
165
|
}
|
|
166
|
+
case 'recreate_index': {
|
|
167
|
+
// Reverse a signature change by restoring the index's previous
|
|
168
|
+
// definition, captured from the live database at scaffold time.
|
|
169
|
+
const idxName = op.schema
|
|
170
|
+
? `"${op.schema}"."${op.indexName}"`
|
|
171
|
+
: `"${op.indexName}"`;
|
|
172
|
+
const down = [`DROP INDEX IF EXISTS ${idxName}`];
|
|
173
|
+
down.push(op.previousDef
|
|
174
|
+
? op.previousDef
|
|
175
|
+
: `-- Cannot auto-generate: recreate previous definition of index "${op.indexName}"`);
|
|
176
|
+
return down;
|
|
177
|
+
}
|
|
162
178
|
case 'drop_index':
|
|
163
179
|
return [`-- Cannot auto-generate: recreate index "${op.indexName}"`];
|
|
164
180
|
case 'create_foreign_key': {
|
|
@@ -335,27 +351,31 @@ class MigrationScaffold {
|
|
|
335
351
|
return dataType;
|
|
336
352
|
}
|
|
337
353
|
/**
|
|
338
|
-
* Build
|
|
339
|
-
* Returns [DROP IF EXISTS, CREATE] for idempotency
|
|
340
|
-
*
|
|
341
|
-
*
|
|
354
|
+
* Build the UP SQL for a create_index / recreate_index operation.
|
|
355
|
+
* Returns [DROP IF EXISTS, CREATE] for idempotency, so a recreate replaces a
|
|
356
|
+
* changed-signature index in place. Uses the shared builders so the generated
|
|
357
|
+
* SQL is identical to the live auto-migrate path — including `USING <method>`
|
|
358
|
+
* and per-column operator classes (which the previous scaffold omitted).
|
|
342
359
|
*/
|
|
343
|
-
|
|
344
|
-
const qualifiedTable = schema
|
|
345
|
-
? `"${schema}"."${tableName}"`
|
|
346
|
-
: `"${tableName}"`;
|
|
347
|
-
const qualifiedIndex = schema
|
|
348
|
-
? `"${schema}"."${indexName}"`
|
|
349
|
-
: `"${indexName}"`;
|
|
350
|
-
const
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
:
|
|
354
|
-
|
|
355
|
-
|
|
360
|
+
buildIndexUpSql(op) {
|
|
361
|
+
const qualifiedTable = op.schema
|
|
362
|
+
? `"${op.schema}"."${op.tableName}"`
|
|
363
|
+
: `"${op.tableName}"`;
|
|
364
|
+
const qualifiedIndex = op.schema
|
|
365
|
+
? `"${op.schema}"."${op.indexName}"`
|
|
366
|
+
: `"${op.indexName}"`;
|
|
367
|
+
const spec = {
|
|
368
|
+
name: op.indexName,
|
|
369
|
+
columns: op.columns,
|
|
370
|
+
isUnique: op.isUnique,
|
|
371
|
+
using: op.using,
|
|
372
|
+
operatorClass: op.operatorClass,
|
|
373
|
+
expressions: op.expressions,
|
|
374
|
+
where: op.where,
|
|
375
|
+
};
|
|
356
376
|
return [
|
|
357
|
-
|
|
358
|
-
|
|
377
|
+
(0, index_sql_1.buildDropIndexStatement)(qualifiedIndex, { concurrent: op.concurrent, ifExists: true }),
|
|
378
|
+
(0, index_sql_1.buildCreateIndexStatement)(spec, qualifiedTable, { concurrent: op.concurrent }),
|
|
359
379
|
];
|
|
360
380
|
}
|
|
361
381
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-scaffold.js","sourceRoot":"","sources":["../../src/migration/migration-scaffold.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migration-scaffold.js","sourceRoot":"","sources":["../../src/migration/migration-scaffold.ts"],"names":[],"mappings":"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"}
|