linkgress-orm 0.4.30 → 0.4.31

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.
@@ -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 CREATE INDEX SQL.
64
- * Returns [DROP IF EXISTS, CREATE] for idempotency.
65
- * When `concurrent` is true, emits `CREATE INDEX CONCURRENTLY`; the caller
66
- * must run the statement outside of a transaction block.
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 buildCreateIndexSql;
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;AAQxD;;;;;;;;;;;;;;;;;;;;;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;IAuErB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkEvB;;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;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;;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"}
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
- return this.buildCreateIndexSql(op.tableName, op.indexName, op.columns, op.isUnique, op.schema, op.concurrent, op.expressions, op.where);
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 CREATE INDEX SQL.
339
- * Returns [DROP IF EXISTS, CREATE] for idempotency.
340
- * When `concurrent` is true, emits `CREATE INDEX CONCURRENTLY`; the caller
341
- * must run the statement outside of a transaction block.
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
- buildCreateIndexSql(tableName, indexName, columns, isUnique, schema, concurrent, expressions, where) {
344
- const qualifiedTable = schema
345
- ? `"${schema}"."${tableName}"`
346
- : `"${tableName}"`;
347
- const qualifiedIndex = schema
348
- ? `"${schema}"."${indexName}"`
349
- : `"${indexName}"`;
350
- const uniqueStr = isUnique ? 'UNIQUE ' : '';
351
- const columnList = expressions && expressions.length > 0
352
- ? expressions.join(', ')
353
- : columns.map(c => `"${c}"`).join(', ');
354
- const concurrentStr = concurrent ? 'CONCURRENTLY ' : '';
355
- const whereStr = where ? ` WHERE ${where}` : '';
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
- `DROP INDEX IF EXISTS ${qualifiedIndex}`,
358
- `CREATE ${uniqueStr}INDEX ${concurrentStr}"${indexName}" ON ${qualifiedTable} (${columnList})${whereStr}`
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linkgress-orm",
3
- "version": "0.4.30",
3
+ "version": "0.4.31",
4
4
  "description": "A lightweight, type-safe ORM for PostgreSQL with LINQ-style queries and automatic type inference",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",