@prisma-next/target-postgres 0.4.1 → 0.5.0-dev.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.
Files changed (178) hide show
  1. package/dist/codec-ids-CojIXVf9.mjs +29 -0
  2. package/dist/codec-ids-CojIXVf9.mjs.map +1 -0
  3. package/dist/codec-ids.d.mts +28 -0
  4. package/dist/codec-ids.d.mts.map +1 -0
  5. package/dist/codec-ids.mjs +3 -0
  6. package/dist/codec-types.d.mts +42 -0
  7. package/dist/codec-types.d.mts.map +1 -0
  8. package/dist/codec-types.mjs +3 -0
  9. package/dist/codecs-BoahtY_Q.mjs +385 -0
  10. package/dist/codecs-BoahtY_Q.mjs.map +1 -0
  11. package/dist/codecs-D-F2KJqt.d.mts +299 -0
  12. package/dist/codecs-D-F2KJqt.d.mts.map +1 -0
  13. package/dist/codecs.d.mts +2 -0
  14. package/dist/codecs.mjs +3 -0
  15. package/dist/control.d.mts +1 -1
  16. package/dist/control.mjs +9 -1982
  17. package/dist/control.mjs.map +1 -1
  18. package/dist/data-transform-CxFRBIUp.d.mts +32 -0
  19. package/dist/data-transform-CxFRBIUp.d.mts.map +1 -0
  20. package/dist/data-transform-VfEGzXWt.mjs +39 -0
  21. package/dist/data-transform-VfEGzXWt.mjs.map +1 -0
  22. package/dist/data-transform.d.mts +2 -0
  23. package/dist/data-transform.mjs +3 -0
  24. package/dist/default-normalizer-DNOpRoOF.mjs +131 -0
  25. package/dist/default-normalizer-DNOpRoOF.mjs.map +1 -0
  26. package/dist/default-normalizer.d.mts +19 -0
  27. package/dist/default-normalizer.d.mts.map +1 -0
  28. package/dist/default-normalizer.mjs +3 -0
  29. package/dist/{descriptor-meta-DkvCmY98.mjs → descriptor-meta-BVoVtyp-.mjs} +1 -1
  30. package/dist/{descriptor-meta-DkvCmY98.mjs.map → descriptor-meta-BVoVtyp-.mjs.map} +1 -1
  31. package/dist/errors-AFvEPZ1R.mjs +34 -0
  32. package/dist/errors-AFvEPZ1R.mjs.map +1 -0
  33. package/dist/errors.d.mts +27 -0
  34. package/dist/errors.d.mts.map +1 -0
  35. package/dist/errors.mjs +3 -0
  36. package/dist/issue-planner-CFjB0_oO.mjs +879 -0
  37. package/dist/issue-planner-CFjB0_oO.mjs.map +1 -0
  38. package/dist/issue-planner.d.mts +85 -0
  39. package/dist/issue-planner.d.mts.map +1 -0
  40. package/dist/issue-planner.mjs +3 -0
  41. package/dist/migration.d.mts +5 -79
  42. package/dist/migration.d.mts.map +1 -1
  43. package/dist/migration.mjs +6 -428
  44. package/dist/migration.mjs.map +1 -1
  45. package/dist/native-type-normalizer-CInai_oY.mjs +38 -0
  46. package/dist/native-type-normalizer-CInai_oY.mjs.map +1 -0
  47. package/dist/native-type-normalizer.d.mts +18 -0
  48. package/dist/native-type-normalizer.d.mts.map +1 -0
  49. package/dist/native-type-normalizer.mjs +3 -0
  50. package/dist/op-factory-call-BKlruaiC.mjs +605 -0
  51. package/dist/op-factory-call-BKlruaiC.mjs.map +1 -0
  52. package/dist/op-factory-call-C3bWXKSP.d.mts +304 -0
  53. package/dist/op-factory-call-C3bWXKSP.d.mts.map +1 -0
  54. package/dist/op-factory-call.d.mts +3 -0
  55. package/dist/op-factory-call.mjs +3 -0
  56. package/dist/pack.d.mts +1 -1
  57. package/dist/pack.mjs +1 -1
  58. package/dist/planner-CLUvVhUN.mjs +98 -0
  59. package/dist/planner-CLUvVhUN.mjs.map +1 -0
  60. package/dist/planner-ddl-builders-Dxvw1LHw.mjs +132 -0
  61. package/dist/planner-ddl-builders-Dxvw1LHw.mjs.map +1 -0
  62. package/dist/planner-ddl-builders.d.mts +22 -0
  63. package/dist/planner-ddl-builders.d.mts.map +1 -0
  64. package/dist/planner-ddl-builders.mjs +3 -0
  65. package/dist/planner-identity-values-Dju-o5GF.mjs +91 -0
  66. package/dist/planner-identity-values-Dju-o5GF.mjs.map +1 -0
  67. package/dist/planner-identity-values.d.mts +20 -0
  68. package/dist/planner-identity-values.d.mts.map +1 -0
  69. package/dist/planner-identity-values.mjs +3 -0
  70. package/dist/planner-produced-postgres-migration-CRRTno6Z.d.mts +20 -0
  71. package/dist/planner-produced-postgres-migration-CRRTno6Z.d.mts.map +1 -0
  72. package/dist/planner-produced-postgres-migration-DSSPq8QS.mjs +33 -0
  73. package/dist/planner-produced-postgres-migration-DSSPq8QS.mjs.map +1 -0
  74. package/dist/planner-produced-postgres-migration.d.mts +5 -0
  75. package/dist/planner-produced-postgres-migration.mjs +3 -0
  76. package/dist/planner-schema-lookup-B7lkypwn.mjs +29 -0
  77. package/dist/planner-schema-lookup-B7lkypwn.mjs.map +1 -0
  78. package/dist/planner-schema-lookup.d.mts +22 -0
  79. package/dist/planner-schema-lookup.d.mts.map +1 -0
  80. package/dist/planner-schema-lookup.mjs +3 -0
  81. package/dist/planner-sql-checks-7jkgm9TX.mjs +241 -0
  82. package/dist/planner-sql-checks-7jkgm9TX.mjs.map +1 -0
  83. package/dist/planner-sql-checks.d.mts +55 -0
  84. package/dist/planner-sql-checks.d.mts.map +1 -0
  85. package/dist/planner-sql-checks.mjs +3 -0
  86. package/dist/{planner-target-details-MXb3oeul.d.mts → planner-target-details-DH-azLu-.d.mts} +1 -1
  87. package/dist/{planner-target-details-MXb3oeul.d.mts.map → planner-target-details-DH-azLu-.d.mts.map} +1 -1
  88. package/dist/planner-target-details.d.mts +2 -0
  89. package/dist/planner-target-details.mjs +1 -0
  90. package/dist/planner.d.mts +68 -0
  91. package/dist/planner.d.mts.map +1 -0
  92. package/dist/planner.mjs +4 -0
  93. package/dist/postgres-migration-BjA3Zmts.d.mts +50 -0
  94. package/dist/postgres-migration-BjA3Zmts.d.mts.map +1 -0
  95. package/dist/postgres-migration-qtmtbONe.mjs +52 -0
  96. package/dist/postgres-migration-qtmtbONe.mjs.map +1 -0
  97. package/dist/render-ops-D6_DHdOK.mjs +8 -0
  98. package/dist/render-ops-D6_DHdOK.mjs.map +1 -0
  99. package/dist/render-ops.d.mts +11 -0
  100. package/dist/render-ops.d.mts.map +1 -0
  101. package/dist/render-ops.mjs +3 -0
  102. package/dist/render-typescript-1rF_SB4g.mjs +85 -0
  103. package/dist/render-typescript-1rF_SB4g.mjs.map +1 -0
  104. package/dist/render-typescript.d.mts +15 -0
  105. package/dist/render-typescript.d.mts.map +1 -0
  106. package/dist/render-typescript.mjs +3 -0
  107. package/dist/runtime.d.mts +15 -3
  108. package/dist/runtime.d.mts.map +1 -1
  109. package/dist/runtime.mjs +10 -1
  110. package/dist/runtime.mjs.map +1 -1
  111. package/dist/shared-Bxkt8pNO.d.mts +41 -0
  112. package/dist/shared-Bxkt8pNO.d.mts.map +1 -0
  113. package/dist/sql-utils-r-Lw535w.mjs +76 -0
  114. package/dist/sql-utils-r-Lw535w.mjs.map +1 -0
  115. package/dist/sql-utils.d.mts +59 -0
  116. package/dist/sql-utils.d.mts.map +1 -0
  117. package/dist/sql-utils.mjs +3 -0
  118. package/dist/statement-builders-BPnmt6wx.mjs +116 -0
  119. package/dist/statement-builders-BPnmt6wx.mjs.map +1 -0
  120. package/dist/statement-builders.d.mts +23 -0
  121. package/dist/statement-builders.d.mts.map +1 -0
  122. package/dist/statement-builders.mjs +3 -0
  123. package/dist/tables-BmdW_FWO.mjs +477 -0
  124. package/dist/tables-BmdW_FWO.mjs.map +1 -0
  125. package/dist/types-ClK03Ojd.d.mts +10 -0
  126. package/dist/types-ClK03Ojd.d.mts.map +1 -0
  127. package/dist/types.d.mts +2 -0
  128. package/dist/types.mjs +1 -0
  129. package/package.json +37 -20
  130. package/src/core/codec-ids.ts +30 -0
  131. package/src/core/codecs.ts +645 -0
  132. package/src/core/default-normalizer.ts +131 -0
  133. package/src/core/descriptor-meta.ts +1 -1
  134. package/src/core/errors.ts +33 -0
  135. package/src/core/json-schema-type-expression.ts +131 -0
  136. package/src/core/migrations/op-factory-call.ts +1 -5
  137. package/src/core/migrations/operations/columns.ts +1 -1
  138. package/src/core/migrations/operations/constraints.ts +1 -1
  139. package/src/core/migrations/operations/data-transform.ts +27 -21
  140. package/src/core/migrations/operations/dependencies.ts +1 -1
  141. package/src/core/migrations/operations/enums.ts +1 -1
  142. package/src/core/migrations/operations/indexes.ts +1 -1
  143. package/src/core/migrations/operations/shared.ts +1 -1
  144. package/src/core/migrations/operations/tables.ts +1 -1
  145. package/src/core/migrations/planner-ddl-builders.ts +1 -1
  146. package/src/core/migrations/planner-recipes.ts +1 -1
  147. package/src/core/migrations/planner-sql-checks.ts +1 -1
  148. package/src/core/migrations/planner.ts +2 -4
  149. package/src/core/migrations/postgres-migration.ts +54 -1
  150. package/src/core/migrations/render-typescript.ts +22 -12
  151. package/src/core/migrations/runner.ts +2 -4
  152. package/src/core/native-type-normalizer.ts +49 -0
  153. package/src/core/sql-utils.ts +104 -0
  154. package/src/exports/codec-ids.ts +1 -0
  155. package/src/exports/codec-types.ts +51 -0
  156. package/src/exports/codecs.ts +2 -0
  157. package/src/exports/data-transform.ts +1 -0
  158. package/src/exports/default-normalizer.ts +1 -0
  159. package/src/exports/errors.ts +1 -0
  160. package/src/exports/issue-planner.ts +1 -0
  161. package/src/exports/migration.ts +6 -0
  162. package/src/exports/native-type-normalizer.ts +1 -0
  163. package/src/exports/op-factory-call.ts +25 -0
  164. package/src/exports/planner-ddl-builders.ts +8 -0
  165. package/src/exports/planner-identity-values.ts +1 -0
  166. package/src/exports/planner-produced-postgres-migration.ts +1 -0
  167. package/src/exports/planner-schema-lookup.ts +6 -0
  168. package/src/exports/planner-sql-checks.ts +11 -0
  169. package/src/exports/planner-target-details.ts +1 -0
  170. package/src/exports/planner.ts +1 -0
  171. package/src/exports/render-ops.ts +1 -0
  172. package/src/exports/render-typescript.ts +1 -0
  173. package/src/exports/runtime.ts +19 -4
  174. package/src/exports/sql-utils.ts +7 -0
  175. package/src/exports/statement-builders.ts +7 -0
  176. package/src/exports/types.ts +1 -0
  177. package/dist/postgres-migration-BsHJHV9O.mjs +0 -2793
  178. package/dist/postgres-migration-BsHJHV9O.mjs.map +0 -1
@@ -0,0 +1,605 @@
1
+ import { _ as dropColumn, a as addEnumValues, b as setDefault, c as renameType, d as addForeignKey, f as addPrimaryKey, g as alterColumnType, h as addColumn, i as dropIndex, l as createExtension, m as dropConstraint, n as dropTable, o as createEnumType, p as addUnique, r as createIndex, s as dropEnumType, t as createTable, u as createSchema, v as dropDefault, x as setNotNull, y as dropNotNull } from "./tables-BmdW_FWO.mjs";
2
+ import { errorUnfilledPlaceholder } from "@prisma-next/errors/migration";
3
+ import { TsExpression, jsonToTsSource } from "@prisma-next/ts-render";
4
+
5
+ //#region src/core/migrations/op-factory-call.ts
6
+ /**
7
+ * Postgres migration IR: one concrete `*Call` class per pure factory under
8
+ * `operations/`, plus a shared `PostgresOpFactoryCallNode` abstract base.
9
+ *
10
+ * Every call class carries the literal arguments its backing factory would
11
+ * receive, computes a human-readable `label` in its constructor, and
12
+ * implements two polymorphic hooks:
13
+ *
14
+ * - `toOp()` — converts the IR node to a runtime
15
+ * `SqlMigrationPlanOperation` by delegating to the matching pure factory
16
+ * under `operations/`. `DataTransformCall.toOp()` always throws
17
+ * `PN-MIG-2001` because a planner-generated data transform is an
18
+ * unfilled authoring stub by construction.
19
+ * - `renderTypeScript()` / `importRequirements()` — inherited from
20
+ * `TsExpression`. Used by `renderCallsToTypeScript` to emit the call as
21
+ * a TypeScript expression inside the scaffolded `migration.ts`.
22
+ *
23
+ * The abstract base and all concrete classes are package-private. External
24
+ * consumers see only the framework-level `OpFactoryCall` interface and the
25
+ * `PostgresOpFactoryCall` union.
26
+ */
27
+ const TARGET_MIGRATION_MODULE = "@prisma-next/target-postgres/migration";
28
+ var PostgresOpFactoryCallNode = class extends TsExpression {
29
+ importRequirements() {
30
+ return [{
31
+ moduleSpecifier: TARGET_MIGRATION_MODULE,
32
+ symbol: this.factoryName
33
+ }];
34
+ }
35
+ freeze() {
36
+ Object.freeze(this);
37
+ }
38
+ };
39
+ var CreateTableCall = class extends PostgresOpFactoryCallNode {
40
+ factoryName = "createTable";
41
+ operationClass = "additive";
42
+ schemaName;
43
+ tableName;
44
+ columns;
45
+ primaryKey;
46
+ label;
47
+ constructor(schemaName, tableName, columns, primaryKey) {
48
+ super();
49
+ this.schemaName = schemaName;
50
+ this.tableName = tableName;
51
+ this.columns = columns;
52
+ this.primaryKey = primaryKey;
53
+ this.label = `Create table "${tableName}"`;
54
+ this.freeze();
55
+ }
56
+ toOp() {
57
+ return createTable(this.schemaName, this.tableName, this.columns, this.primaryKey);
58
+ }
59
+ renderTypeScript() {
60
+ const args = [
61
+ jsonToTsSource(this.schemaName),
62
+ jsonToTsSource(this.tableName),
63
+ jsonToTsSource(this.columns)
64
+ ];
65
+ if (this.primaryKey) args.push(jsonToTsSource(this.primaryKey));
66
+ return `createTable(${args.join(", ")})`;
67
+ }
68
+ };
69
+ var DropTableCall = class extends PostgresOpFactoryCallNode {
70
+ factoryName = "dropTable";
71
+ operationClass = "destructive";
72
+ schemaName;
73
+ tableName;
74
+ label;
75
+ constructor(schemaName, tableName) {
76
+ super();
77
+ this.schemaName = schemaName;
78
+ this.tableName = tableName;
79
+ this.label = `Drop table "${tableName}"`;
80
+ this.freeze();
81
+ }
82
+ toOp() {
83
+ return dropTable(this.schemaName, this.tableName);
84
+ }
85
+ renderTypeScript() {
86
+ return `dropTable(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)})`;
87
+ }
88
+ };
89
+ var AddColumnCall = class extends PostgresOpFactoryCallNode {
90
+ factoryName = "addColumn";
91
+ operationClass = "additive";
92
+ schemaName;
93
+ tableName;
94
+ column;
95
+ label;
96
+ constructor(schemaName, tableName, column) {
97
+ super();
98
+ this.schemaName = schemaName;
99
+ this.tableName = tableName;
100
+ this.column = column;
101
+ this.label = `Add column "${column.name}" to "${tableName}"`;
102
+ this.freeze();
103
+ }
104
+ toOp() {
105
+ return addColumn(this.schemaName, this.tableName, this.column);
106
+ }
107
+ renderTypeScript() {
108
+ return `addColumn(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.column)})`;
109
+ }
110
+ };
111
+ var DropColumnCall = class extends PostgresOpFactoryCallNode {
112
+ factoryName = "dropColumn";
113
+ operationClass = "destructive";
114
+ schemaName;
115
+ tableName;
116
+ columnName;
117
+ label;
118
+ constructor(schemaName, tableName, columnName) {
119
+ super();
120
+ this.schemaName = schemaName;
121
+ this.tableName = tableName;
122
+ this.columnName = columnName;
123
+ this.label = `Drop column "${columnName}" from "${tableName}"`;
124
+ this.freeze();
125
+ }
126
+ toOp() {
127
+ return dropColumn(this.schemaName, this.tableName, this.columnName);
128
+ }
129
+ renderTypeScript() {
130
+ return `dropColumn(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)})`;
131
+ }
132
+ };
133
+ var AlterColumnTypeCall = class extends PostgresOpFactoryCallNode {
134
+ factoryName = "alterColumnType";
135
+ operationClass = "destructive";
136
+ schemaName;
137
+ tableName;
138
+ columnName;
139
+ options;
140
+ label;
141
+ constructor(schemaName, tableName, columnName, options) {
142
+ super();
143
+ this.schemaName = schemaName;
144
+ this.tableName = tableName;
145
+ this.columnName = columnName;
146
+ this.options = options;
147
+ this.label = `Alter type of "${tableName}"."${columnName}" to ${options.rawTargetTypeForLabel}`;
148
+ this.freeze();
149
+ }
150
+ toOp() {
151
+ return alterColumnType(this.schemaName, this.tableName, this.columnName, this.options);
152
+ }
153
+ renderTypeScript() {
154
+ return `alterColumnType(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)}, ${jsonToTsSource(this.options)})`;
155
+ }
156
+ };
157
+ var SetNotNullCall = class extends PostgresOpFactoryCallNode {
158
+ factoryName = "setNotNull";
159
+ operationClass = "destructive";
160
+ schemaName;
161
+ tableName;
162
+ columnName;
163
+ label;
164
+ constructor(schemaName, tableName, columnName) {
165
+ super();
166
+ this.schemaName = schemaName;
167
+ this.tableName = tableName;
168
+ this.columnName = columnName;
169
+ this.label = `Set NOT NULL on "${tableName}"."${columnName}"`;
170
+ this.freeze();
171
+ }
172
+ toOp() {
173
+ return setNotNull(this.schemaName, this.tableName, this.columnName);
174
+ }
175
+ renderTypeScript() {
176
+ return `setNotNull(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)})`;
177
+ }
178
+ };
179
+ var DropNotNullCall = class extends PostgresOpFactoryCallNode {
180
+ factoryName = "dropNotNull";
181
+ operationClass = "widening";
182
+ schemaName;
183
+ tableName;
184
+ columnName;
185
+ label;
186
+ constructor(schemaName, tableName, columnName) {
187
+ super();
188
+ this.schemaName = schemaName;
189
+ this.tableName = tableName;
190
+ this.columnName = columnName;
191
+ this.label = `Drop NOT NULL on "${tableName}"."${columnName}"`;
192
+ this.freeze();
193
+ }
194
+ toOp() {
195
+ return dropNotNull(this.schemaName, this.tableName, this.columnName);
196
+ }
197
+ renderTypeScript() {
198
+ return `dropNotNull(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)})`;
199
+ }
200
+ };
201
+ var SetDefaultCall = class extends PostgresOpFactoryCallNode {
202
+ factoryName = "setDefault";
203
+ operationClass;
204
+ schemaName;
205
+ tableName;
206
+ columnName;
207
+ defaultSql;
208
+ label;
209
+ constructor(schemaName, tableName, columnName, defaultSql, operationClass = "additive") {
210
+ super();
211
+ this.schemaName = schemaName;
212
+ this.tableName = tableName;
213
+ this.columnName = columnName;
214
+ this.defaultSql = defaultSql;
215
+ this.operationClass = operationClass;
216
+ this.label = `Set default on "${tableName}"."${columnName}"`;
217
+ this.freeze();
218
+ }
219
+ toOp() {
220
+ return setDefault(this.schemaName, this.tableName, this.columnName, this.defaultSql, this.operationClass);
221
+ }
222
+ renderTypeScript() {
223
+ const args = [
224
+ jsonToTsSource(this.schemaName),
225
+ jsonToTsSource(this.tableName),
226
+ jsonToTsSource(this.columnName),
227
+ jsonToTsSource(this.defaultSql)
228
+ ];
229
+ if (this.operationClass !== "additive") args.push(jsonToTsSource(this.operationClass));
230
+ return `setDefault(${args.join(", ")})`;
231
+ }
232
+ };
233
+ var DropDefaultCall = class extends PostgresOpFactoryCallNode {
234
+ factoryName = "dropDefault";
235
+ operationClass = "destructive";
236
+ schemaName;
237
+ tableName;
238
+ columnName;
239
+ label;
240
+ constructor(schemaName, tableName, columnName) {
241
+ super();
242
+ this.schemaName = schemaName;
243
+ this.tableName = tableName;
244
+ this.columnName = columnName;
245
+ this.label = `Drop default on "${tableName}"."${columnName}"`;
246
+ this.freeze();
247
+ }
248
+ toOp() {
249
+ return dropDefault(this.schemaName, this.tableName, this.columnName);
250
+ }
251
+ renderTypeScript() {
252
+ return `dropDefault(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)})`;
253
+ }
254
+ };
255
+ var AddPrimaryKeyCall = class extends PostgresOpFactoryCallNode {
256
+ factoryName = "addPrimaryKey";
257
+ operationClass = "additive";
258
+ schemaName;
259
+ tableName;
260
+ constraintName;
261
+ columns;
262
+ label;
263
+ constructor(schemaName, tableName, constraintName, columns) {
264
+ super();
265
+ this.schemaName = schemaName;
266
+ this.tableName = tableName;
267
+ this.constraintName = constraintName;
268
+ this.columns = columns;
269
+ this.label = `Add primary key on "${tableName}"`;
270
+ this.freeze();
271
+ }
272
+ toOp() {
273
+ return addPrimaryKey(this.schemaName, this.tableName, this.constraintName, this.columns);
274
+ }
275
+ renderTypeScript() {
276
+ return `addPrimaryKey(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.constraintName)}, ${jsonToTsSource(this.columns)})`;
277
+ }
278
+ };
279
+ var AddUniqueCall = class extends PostgresOpFactoryCallNode {
280
+ factoryName = "addUnique";
281
+ operationClass = "additive";
282
+ schemaName;
283
+ tableName;
284
+ constraintName;
285
+ columns;
286
+ label;
287
+ constructor(schemaName, tableName, constraintName, columns) {
288
+ super();
289
+ this.schemaName = schemaName;
290
+ this.tableName = tableName;
291
+ this.constraintName = constraintName;
292
+ this.columns = columns;
293
+ this.label = `Add unique constraint on "${tableName}" (${columns.join(", ")})`;
294
+ this.freeze();
295
+ }
296
+ toOp() {
297
+ return addUnique(this.schemaName, this.tableName, this.constraintName, this.columns);
298
+ }
299
+ renderTypeScript() {
300
+ return `addUnique(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.constraintName)}, ${jsonToTsSource(this.columns)})`;
301
+ }
302
+ };
303
+ var AddForeignKeyCall = class extends PostgresOpFactoryCallNode {
304
+ factoryName = "addForeignKey";
305
+ operationClass = "additive";
306
+ schemaName;
307
+ tableName;
308
+ fk;
309
+ label;
310
+ constructor(schemaName, tableName, fk) {
311
+ super();
312
+ this.schemaName = schemaName;
313
+ this.tableName = tableName;
314
+ this.fk = fk;
315
+ this.label = `Add foreign key "${fk.name}" on "${tableName}"`;
316
+ this.freeze();
317
+ }
318
+ toOp() {
319
+ return addForeignKey(this.schemaName, this.tableName, this.fk);
320
+ }
321
+ renderTypeScript() {
322
+ return `addForeignKey(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.fk)})`;
323
+ }
324
+ };
325
+ var DropConstraintCall = class extends PostgresOpFactoryCallNode {
326
+ factoryName = "dropConstraint";
327
+ operationClass = "destructive";
328
+ schemaName;
329
+ tableName;
330
+ constraintName;
331
+ kind;
332
+ label;
333
+ constructor(schemaName, tableName, constraintName, kind = "unique") {
334
+ super();
335
+ this.schemaName = schemaName;
336
+ this.tableName = tableName;
337
+ this.constraintName = constraintName;
338
+ this.kind = kind;
339
+ this.label = `Drop constraint "${constraintName}" on "${tableName}"`;
340
+ this.freeze();
341
+ }
342
+ toOp() {
343
+ return dropConstraint(this.schemaName, this.tableName, this.constraintName, this.kind);
344
+ }
345
+ renderTypeScript() {
346
+ const args = [
347
+ jsonToTsSource(this.schemaName),
348
+ jsonToTsSource(this.tableName),
349
+ jsonToTsSource(this.constraintName)
350
+ ];
351
+ if (this.kind !== "unique") args.push(jsonToTsSource(this.kind));
352
+ return `dropConstraint(${args.join(", ")})`;
353
+ }
354
+ };
355
+ var CreateIndexCall = class extends PostgresOpFactoryCallNode {
356
+ factoryName = "createIndex";
357
+ operationClass = "additive";
358
+ schemaName;
359
+ tableName;
360
+ indexName;
361
+ columns;
362
+ label;
363
+ constructor(schemaName, tableName, indexName, columns) {
364
+ super();
365
+ this.schemaName = schemaName;
366
+ this.tableName = tableName;
367
+ this.indexName = indexName;
368
+ this.columns = columns;
369
+ this.label = `Create index "${indexName}" on "${tableName}"`;
370
+ this.freeze();
371
+ }
372
+ toOp() {
373
+ return createIndex(this.schemaName, this.tableName, this.indexName, this.columns);
374
+ }
375
+ renderTypeScript() {
376
+ return `createIndex(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.indexName)}, ${jsonToTsSource(this.columns)})`;
377
+ }
378
+ };
379
+ var DropIndexCall = class extends PostgresOpFactoryCallNode {
380
+ factoryName = "dropIndex";
381
+ operationClass = "destructive";
382
+ schemaName;
383
+ tableName;
384
+ indexName;
385
+ label;
386
+ constructor(schemaName, tableName, indexName) {
387
+ super();
388
+ this.schemaName = schemaName;
389
+ this.tableName = tableName;
390
+ this.indexName = indexName;
391
+ this.label = `Drop index "${indexName}"`;
392
+ this.freeze();
393
+ }
394
+ toOp() {
395
+ return dropIndex(this.schemaName, this.tableName, this.indexName);
396
+ }
397
+ renderTypeScript() {
398
+ return `dropIndex(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.indexName)})`;
399
+ }
400
+ };
401
+ var CreateEnumTypeCall = class extends PostgresOpFactoryCallNode {
402
+ factoryName = "createEnumType";
403
+ operationClass = "additive";
404
+ schemaName;
405
+ typeName;
406
+ values;
407
+ label;
408
+ constructor(schemaName, typeName, values) {
409
+ super();
410
+ this.schemaName = schemaName;
411
+ this.typeName = typeName;
412
+ this.values = values;
413
+ this.label = `Create enum type "${typeName}"`;
414
+ this.freeze();
415
+ }
416
+ toOp() {
417
+ return createEnumType(this.schemaName, this.typeName, this.values);
418
+ }
419
+ renderTypeScript() {
420
+ return `createEnumType(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.typeName)}, ${jsonToTsSource(this.values)})`;
421
+ }
422
+ };
423
+ var AddEnumValuesCall = class extends PostgresOpFactoryCallNode {
424
+ factoryName = "addEnumValues";
425
+ operationClass = "additive";
426
+ schemaName;
427
+ typeName;
428
+ nativeType;
429
+ values;
430
+ label;
431
+ constructor(schemaName, typeName, nativeType, values) {
432
+ super();
433
+ this.schemaName = schemaName;
434
+ this.typeName = typeName;
435
+ this.nativeType = nativeType;
436
+ this.values = values;
437
+ this.label = `Add values to enum type "${typeName}": ${values.join(", ")}`;
438
+ this.freeze();
439
+ }
440
+ toOp() {
441
+ return addEnumValues(this.schemaName, this.typeName, this.nativeType, this.values);
442
+ }
443
+ renderTypeScript() {
444
+ return `addEnumValues(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.typeName)}, ${jsonToTsSource(this.nativeType)}, ${jsonToTsSource(this.values)})`;
445
+ }
446
+ };
447
+ var DropEnumTypeCall = class extends PostgresOpFactoryCallNode {
448
+ factoryName = "dropEnumType";
449
+ operationClass = "destructive";
450
+ schemaName;
451
+ typeName;
452
+ label;
453
+ constructor(schemaName, typeName) {
454
+ super();
455
+ this.schemaName = schemaName;
456
+ this.typeName = typeName;
457
+ this.label = `Drop enum type "${typeName}"`;
458
+ this.freeze();
459
+ }
460
+ toOp() {
461
+ return dropEnumType(this.schemaName, this.typeName);
462
+ }
463
+ renderTypeScript() {
464
+ return `dropEnumType(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.typeName)})`;
465
+ }
466
+ };
467
+ var RenameTypeCall = class extends PostgresOpFactoryCallNode {
468
+ factoryName = "renameType";
469
+ operationClass = "destructive";
470
+ schemaName;
471
+ fromName;
472
+ toName;
473
+ label;
474
+ constructor(schemaName, fromName, toName) {
475
+ super();
476
+ this.schemaName = schemaName;
477
+ this.fromName = fromName;
478
+ this.toName = toName;
479
+ this.label = `Rename type "${fromName}" to "${toName}"`;
480
+ this.freeze();
481
+ }
482
+ toOp() {
483
+ return renameType(this.schemaName, this.fromName, this.toName);
484
+ }
485
+ renderTypeScript() {
486
+ return `renameType(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.fromName)}, ${jsonToTsSource(this.toName)})`;
487
+ }
488
+ };
489
+ /**
490
+ * Laundered pre-built operation.
491
+ *
492
+ * Wraps an already-materialized `SqlMigrationPlanOperation` — typically one
493
+ * produced by a SQL-family method, a codec control hook, or a component
494
+ * `databaseDependencies.init` declaration — so the planner can carry it
495
+ * alongside IR nodes without reverse-engineering it into a
496
+ * structured call class. Doubles as the user-facing escape hatch for raw
497
+ * migrations: authors can pass a full op shape to `rawSql({...})`.
498
+ *
499
+ * `toOp()` returns the stored op unchanged. `renderTypeScript()` emits
500
+ * `rawSql({...})` with the op serialized as a JSON literal — round-tripping
501
+ * requires every field on the op to be JSON-serializable (no closures).
502
+ */
503
+ var RawSqlCall = class extends PostgresOpFactoryCallNode {
504
+ factoryName = "rawSql";
505
+ operationClass;
506
+ label;
507
+ op;
508
+ constructor(op) {
509
+ super();
510
+ this.op = op;
511
+ this.label = op.label;
512
+ this.operationClass = op.operationClass;
513
+ this.freeze();
514
+ }
515
+ toOp() {
516
+ return this.op;
517
+ }
518
+ renderTypeScript() {
519
+ return `rawSql(${jsonToTsSource(this.op)})`;
520
+ }
521
+ };
522
+ var CreateExtensionCall = class extends PostgresOpFactoryCallNode {
523
+ factoryName = "createExtension";
524
+ operationClass = "additive";
525
+ extensionName;
526
+ label;
527
+ constructor(extensionName) {
528
+ super();
529
+ this.extensionName = extensionName;
530
+ this.label = `Create extension "${extensionName}"`;
531
+ this.freeze();
532
+ }
533
+ toOp() {
534
+ return createExtension(this.extensionName);
535
+ }
536
+ renderTypeScript() {
537
+ return `createExtension(${jsonToTsSource(this.extensionName)})`;
538
+ }
539
+ };
540
+ var CreateSchemaCall = class extends PostgresOpFactoryCallNode {
541
+ factoryName = "createSchema";
542
+ operationClass = "additive";
543
+ schemaName;
544
+ label;
545
+ constructor(schemaName) {
546
+ super();
547
+ this.schemaName = schemaName;
548
+ this.label = `Create schema "${schemaName}"`;
549
+ this.freeze();
550
+ }
551
+ toOp() {
552
+ return createSchema(this.schemaName);
553
+ }
554
+ renderTypeScript() {
555
+ return `createSchema(${jsonToTsSource(this.schemaName)})`;
556
+ }
557
+ };
558
+ /**
559
+ * A planner-generated data-transform stub. `checkSlot` and `runSlot` name
560
+ * the unfilled authoring slots that the rendered `migration.ts` will expose
561
+ * to the user via `placeholder("…")` calls. `toOp()` always throws
562
+ * `PN-MIG-2001`: the planner cannot lower a stubbed transform to a runtime
563
+ * op — the user must fill the rendered `migration.ts` and re-emit.
564
+ */
565
+ var DataTransformCall = class extends PostgresOpFactoryCallNode {
566
+ factoryName = "dataTransform";
567
+ operationClass;
568
+ label;
569
+ checkSlot;
570
+ runSlot;
571
+ constructor(label, checkSlot, runSlot, operationClass = "data") {
572
+ super();
573
+ this.label = label;
574
+ this.checkSlot = checkSlot;
575
+ this.runSlot = runSlot;
576
+ this.operationClass = operationClass;
577
+ this.freeze();
578
+ }
579
+ toOp() {
580
+ throw errorUnfilledPlaceholder(this.label);
581
+ }
582
+ renderTypeScript() {
583
+ return [
584
+ `this.dataTransform(endContract, ${jsonToTsSource(this.label)}, {`,
585
+ ` check: () => placeholder(${jsonToTsSource(this.checkSlot)}),`,
586
+ ` run: () => placeholder(${jsonToTsSource(this.runSlot)}),`,
587
+ "})"
588
+ ].join("\n");
589
+ }
590
+ importRequirements() {
591
+ return [{
592
+ moduleSpecifier: TARGET_MIGRATION_MODULE,
593
+ symbol: "placeholder"
594
+ }, {
595
+ moduleSpecifier: "./end-contract.json",
596
+ symbol: "endContract",
597
+ kind: "default",
598
+ attributes: { type: "json" }
599
+ }];
600
+ }
601
+ };
602
+
603
+ //#endregion
604
+ export { SetNotNullCall as C, SetDefaultCall as S, DropIndexCall as _, AddUniqueCall as a, RawSqlCall as b, CreateExtensionCall as c, CreateTableCall as d, DataTransformCall as f, DropEnumTypeCall as g, DropDefaultCall as h, AddPrimaryKeyCall as i, CreateIndexCall as l, DropConstraintCall as m, AddEnumValuesCall as n, AlterColumnTypeCall as o, DropColumnCall as p, AddForeignKeyCall as r, CreateEnumTypeCall as s, AddColumnCall as t, CreateSchemaCall as u, DropNotNullCall as v, RenameTypeCall as x, DropTableCall as y };
605
+ //# sourceMappingURL=op-factory-call-BKlruaiC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op-factory-call-BKlruaiC.mjs","names":[],"sources":["../src/core/migrations/op-factory-call.ts"],"sourcesContent":["/**\n * Postgres migration IR: one concrete `*Call` class per pure factory under\n * `operations/`, plus a shared `PostgresOpFactoryCallNode` abstract base.\n *\n * Every call class carries the literal arguments its backing factory would\n * receive, computes a human-readable `label` in its constructor, and\n * implements two polymorphic hooks:\n *\n * - `toOp()` — converts the IR node to a runtime\n * `SqlMigrationPlanOperation` by delegating to the matching pure factory\n * under `operations/`. `DataTransformCall.toOp()` always throws\n * `PN-MIG-2001` because a planner-generated data transform is an\n * unfilled authoring stub by construction.\n * - `renderTypeScript()` / `importRequirements()` — inherited from\n * `TsExpression`. Used by `renderCallsToTypeScript` to emit the call as\n * a TypeScript expression inside the scaffolded `migration.ts`.\n *\n * The abstract base and all concrete classes are package-private. External\n * consumers see only the framework-level `OpFactoryCall` interface and the\n * `PostgresOpFactoryCall` union.\n */\n\nimport { errorUnfilledPlaceholder } from '@prisma-next/errors/migration';\nimport type { SqlMigrationPlanOperation } from '@prisma-next/family-sql/control';\nimport type {\n OpFactoryCall as FrameworkOpFactoryCall,\n MigrationOperationClass,\n} from '@prisma-next/framework-components/control';\nimport { type ImportRequirement, jsonToTsSource, TsExpression } from '@prisma-next/ts-render';\nimport {\n addColumn,\n alterColumnType,\n dropColumn,\n dropDefault,\n dropNotNull,\n setDefault,\n setNotNull,\n} from './operations/columns';\nimport { addForeignKey, addPrimaryKey, addUnique, dropConstraint } from './operations/constraints';\nimport { createExtension, createSchema } from './operations/dependencies';\nimport { addEnumValues, createEnumType, dropEnumType, renameType } from './operations/enums';\nimport { createIndex, dropIndex } from './operations/indexes';\nimport type { ColumnSpec, ForeignKeySpec } from './operations/shared';\nimport { createTable, dropTable } from './operations/tables';\nimport type { PostgresPlanTargetDetails } from './planner-target-details';\n\ntype Op = SqlMigrationPlanOperation<PostgresPlanTargetDetails>;\n\nconst TARGET_MIGRATION_MODULE = '@prisma-next/target-postgres/migration';\n\nabstract class PostgresOpFactoryCallNode extends TsExpression implements FrameworkOpFactoryCall {\n abstract readonly factoryName: string;\n abstract readonly operationClass: MigrationOperationClass;\n abstract readonly label: string;\n abstract toOp(): Op;\n\n importRequirements(): readonly ImportRequirement[] {\n return [{ moduleSpecifier: TARGET_MIGRATION_MODULE, symbol: this.factoryName }];\n }\n\n protected freeze(): void {\n Object.freeze(this);\n }\n}\n\n// ============================================================================\n// Table\n// ============================================================================\n\nexport interface CreateTablePrimaryKey {\n readonly columns: readonly string[];\n}\n\nexport class CreateTableCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'createTable' as const;\n readonly operationClass = 'additive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly columns: readonly ColumnSpec[];\n readonly primaryKey: CreateTablePrimaryKey | undefined;\n readonly label: string;\n\n constructor(\n schemaName: string,\n tableName: string,\n columns: readonly ColumnSpec[],\n primaryKey?: CreateTablePrimaryKey,\n ) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.columns = columns;\n this.primaryKey = primaryKey;\n this.label = `Create table \"${tableName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return createTable(this.schemaName, this.tableName, this.columns, this.primaryKey);\n }\n\n renderTypeScript(): string {\n const args = [\n jsonToTsSource(this.schemaName),\n jsonToTsSource(this.tableName),\n jsonToTsSource(this.columns),\n ];\n if (this.primaryKey) args.push(jsonToTsSource(this.primaryKey));\n return `createTable(${args.join(', ')})`;\n }\n}\n\nexport class DropTableCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'dropTable' as const;\n readonly operationClass = 'destructive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly label: string;\n\n constructor(schemaName: string, tableName: string) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.label = `Drop table \"${tableName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return dropTable(this.schemaName, this.tableName);\n }\n\n renderTypeScript(): string {\n return `dropTable(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)})`;\n }\n}\n\n// ============================================================================\n// Column\n// ============================================================================\n\nexport class AddColumnCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'addColumn' as const;\n readonly operationClass = 'additive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly column: ColumnSpec;\n readonly label: string;\n\n constructor(schemaName: string, tableName: string, column: ColumnSpec) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.column = column;\n this.label = `Add column \"${column.name}\" to \"${tableName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return addColumn(this.schemaName, this.tableName, this.column);\n }\n\n renderTypeScript(): string {\n return `addColumn(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.column)})`;\n }\n}\n\nexport class DropColumnCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'dropColumn' as const;\n readonly operationClass = 'destructive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly columnName: string;\n readonly label: string;\n\n constructor(schemaName: string, tableName: string, columnName: string) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.columnName = columnName;\n this.label = `Drop column \"${columnName}\" from \"${tableName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return dropColumn(this.schemaName, this.tableName, this.columnName);\n }\n\n renderTypeScript(): string {\n return `dropColumn(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)})`;\n }\n}\n\nexport interface AlterColumnTypeOptions {\n readonly qualifiedTargetType: string;\n readonly formatTypeExpected: string;\n readonly rawTargetTypeForLabel: string;\n readonly using?: string;\n}\n\nexport class AlterColumnTypeCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'alterColumnType' as const;\n readonly operationClass = 'destructive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly columnName: string;\n readonly options: AlterColumnTypeOptions;\n readonly label: string;\n\n constructor(\n schemaName: string,\n tableName: string,\n columnName: string,\n options: AlterColumnTypeOptions,\n ) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.columnName = columnName;\n this.options = options;\n this.label = `Alter type of \"${tableName}\".\"${columnName}\" to ${options.rawTargetTypeForLabel}`;\n this.freeze();\n }\n\n toOp(): Op {\n return alterColumnType(this.schemaName, this.tableName, this.columnName, this.options);\n }\n\n renderTypeScript(): string {\n return `alterColumnType(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)}, ${jsonToTsSource(this.options)})`;\n }\n}\n\nexport class SetNotNullCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'setNotNull' as const;\n readonly operationClass = 'destructive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly columnName: string;\n readonly label: string;\n\n constructor(schemaName: string, tableName: string, columnName: string) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.columnName = columnName;\n this.label = `Set NOT NULL on \"${tableName}\".\"${columnName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return setNotNull(this.schemaName, this.tableName, this.columnName);\n }\n\n renderTypeScript(): string {\n return `setNotNull(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)})`;\n }\n}\n\nexport class DropNotNullCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'dropNotNull' as const;\n readonly operationClass = 'widening' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly columnName: string;\n readonly label: string;\n\n constructor(schemaName: string, tableName: string, columnName: string) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.columnName = columnName;\n this.label = `Drop NOT NULL on \"${tableName}\".\"${columnName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return dropNotNull(this.schemaName, this.tableName, this.columnName);\n }\n\n renderTypeScript(): string {\n return `dropNotNull(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)})`;\n }\n}\n\nexport class SetDefaultCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'setDefault' as const;\n readonly operationClass: 'additive' | 'widening';\n readonly schemaName: string;\n readonly tableName: string;\n readonly columnName: string;\n readonly defaultSql: string;\n readonly label: string;\n\n constructor(\n schemaName: string,\n tableName: string,\n columnName: string,\n defaultSql: string,\n operationClass: 'additive' | 'widening' = 'additive',\n ) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.columnName = columnName;\n this.defaultSql = defaultSql;\n this.operationClass = operationClass;\n this.label = `Set default on \"${tableName}\".\"${columnName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return setDefault(\n this.schemaName,\n this.tableName,\n this.columnName,\n this.defaultSql,\n this.operationClass,\n );\n }\n\n renderTypeScript(): string {\n const args = [\n jsonToTsSource(this.schemaName),\n jsonToTsSource(this.tableName),\n jsonToTsSource(this.columnName),\n jsonToTsSource(this.defaultSql),\n ];\n if (this.operationClass !== 'additive') {\n args.push(jsonToTsSource(this.operationClass));\n }\n return `setDefault(${args.join(', ')})`;\n }\n}\n\nexport class DropDefaultCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'dropDefault' as const;\n readonly operationClass = 'destructive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly columnName: string;\n readonly label: string;\n\n constructor(schemaName: string, tableName: string, columnName: string) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.columnName = columnName;\n this.label = `Drop default on \"${tableName}\".\"${columnName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return dropDefault(this.schemaName, this.tableName, this.columnName);\n }\n\n renderTypeScript(): string {\n return `dropDefault(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.columnName)})`;\n }\n}\n\n// ============================================================================\n// Constraints\n// ============================================================================\n\nexport class AddPrimaryKeyCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'addPrimaryKey' as const;\n readonly operationClass = 'additive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly constraintName: string;\n readonly columns: readonly string[];\n readonly label: string;\n\n constructor(\n schemaName: string,\n tableName: string,\n constraintName: string,\n columns: readonly string[],\n ) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.constraintName = constraintName;\n this.columns = columns;\n this.label = `Add primary key on \"${tableName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return addPrimaryKey(this.schemaName, this.tableName, this.constraintName, this.columns);\n }\n\n renderTypeScript(): string {\n return `addPrimaryKey(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.constraintName)}, ${jsonToTsSource(this.columns)})`;\n }\n}\n\nexport class AddUniqueCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'addUnique' as const;\n readonly operationClass = 'additive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly constraintName: string;\n readonly columns: readonly string[];\n readonly label: string;\n\n constructor(\n schemaName: string,\n tableName: string,\n constraintName: string,\n columns: readonly string[],\n ) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.constraintName = constraintName;\n this.columns = columns;\n this.label = `Add unique constraint on \"${tableName}\" (${columns.join(', ')})`;\n this.freeze();\n }\n\n toOp(): Op {\n return addUnique(this.schemaName, this.tableName, this.constraintName, this.columns);\n }\n\n renderTypeScript(): string {\n return `addUnique(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.constraintName)}, ${jsonToTsSource(this.columns)})`;\n }\n}\n\nexport class AddForeignKeyCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'addForeignKey' as const;\n readonly operationClass = 'additive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly fk: ForeignKeySpec;\n readonly label: string;\n\n constructor(schemaName: string, tableName: string, fk: ForeignKeySpec) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.fk = fk;\n this.label = `Add foreign key \"${fk.name}\" on \"${tableName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return addForeignKey(this.schemaName, this.tableName, this.fk);\n }\n\n renderTypeScript(): string {\n return `addForeignKey(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.fk)})`;\n }\n}\n\nexport class DropConstraintCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'dropConstraint' as const;\n readonly operationClass = 'destructive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly constraintName: string;\n readonly kind: 'foreignKey' | 'unique' | 'primaryKey';\n readonly label: string;\n\n constructor(\n schemaName: string,\n tableName: string,\n constraintName: string,\n kind: 'foreignKey' | 'unique' | 'primaryKey' = 'unique',\n ) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.constraintName = constraintName;\n this.kind = kind;\n this.label = `Drop constraint \"${constraintName}\" on \"${tableName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return dropConstraint(this.schemaName, this.tableName, this.constraintName, this.kind);\n }\n\n renderTypeScript(): string {\n const args = [\n jsonToTsSource(this.schemaName),\n jsonToTsSource(this.tableName),\n jsonToTsSource(this.constraintName),\n ];\n if (this.kind !== 'unique') {\n args.push(jsonToTsSource(this.kind));\n }\n return `dropConstraint(${args.join(', ')})`;\n }\n}\n\n// ============================================================================\n// Indexes\n// ============================================================================\n\nexport class CreateIndexCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'createIndex' as const;\n readonly operationClass = 'additive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly indexName: string;\n readonly columns: readonly string[];\n readonly label: string;\n\n constructor(\n schemaName: string,\n tableName: string,\n indexName: string,\n columns: readonly string[],\n ) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.indexName = indexName;\n this.columns = columns;\n this.label = `Create index \"${indexName}\" on \"${tableName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return createIndex(this.schemaName, this.tableName, this.indexName, this.columns);\n }\n\n renderTypeScript(): string {\n return `createIndex(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.indexName)}, ${jsonToTsSource(this.columns)})`;\n }\n}\n\nexport class DropIndexCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'dropIndex' as const;\n readonly operationClass = 'destructive' as const;\n readonly schemaName: string;\n readonly tableName: string;\n readonly indexName: string;\n readonly label: string;\n\n constructor(schemaName: string, tableName: string, indexName: string) {\n super();\n this.schemaName = schemaName;\n this.tableName = tableName;\n this.indexName = indexName;\n this.label = `Drop index \"${indexName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return dropIndex(this.schemaName, this.tableName, this.indexName);\n }\n\n renderTypeScript(): string {\n return `dropIndex(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.tableName)}, ${jsonToTsSource(this.indexName)})`;\n }\n}\n\n// ============================================================================\n// Enum types\n// ============================================================================\n\nexport class CreateEnumTypeCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'createEnumType' as const;\n readonly operationClass = 'additive' as const;\n readonly schemaName: string;\n readonly typeName: string;\n readonly values: readonly string[];\n readonly label: string;\n\n constructor(schemaName: string, typeName: string, values: readonly string[]) {\n super();\n this.schemaName = schemaName;\n this.typeName = typeName;\n this.values = values;\n this.label = `Create enum type \"${typeName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return createEnumType(this.schemaName, this.typeName, this.values);\n }\n\n renderTypeScript(): string {\n return `createEnumType(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.typeName)}, ${jsonToTsSource(this.values)})`;\n }\n}\n\nexport class AddEnumValuesCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'addEnumValues' as const;\n readonly operationClass = 'additive' as const;\n readonly schemaName: string;\n readonly typeName: string;\n readonly nativeType: string;\n readonly values: readonly string[];\n readonly label: string;\n\n constructor(schemaName: string, typeName: string, nativeType: string, values: readonly string[]) {\n super();\n this.schemaName = schemaName;\n this.typeName = typeName;\n this.nativeType = nativeType;\n this.values = values;\n this.label = `Add values to enum type \"${typeName}\": ${values.join(', ')}`;\n this.freeze();\n }\n\n toOp(): Op {\n return addEnumValues(this.schemaName, this.typeName, this.nativeType, this.values);\n }\n\n renderTypeScript(): string {\n return `addEnumValues(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.typeName)}, ${jsonToTsSource(this.nativeType)}, ${jsonToTsSource(this.values)})`;\n }\n}\n\nexport class DropEnumTypeCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'dropEnumType' as const;\n readonly operationClass = 'destructive' as const;\n readonly schemaName: string;\n readonly typeName: string;\n readonly label: string;\n\n constructor(schemaName: string, typeName: string) {\n super();\n this.schemaName = schemaName;\n this.typeName = typeName;\n this.label = `Drop enum type \"${typeName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return dropEnumType(this.schemaName, this.typeName);\n }\n\n renderTypeScript(): string {\n return `dropEnumType(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.typeName)})`;\n }\n}\n\nexport class RenameTypeCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'renameType' as const;\n readonly operationClass = 'destructive' as const;\n readonly schemaName: string;\n readonly fromName: string;\n readonly toName: string;\n readonly label: string;\n\n constructor(schemaName: string, fromName: string, toName: string) {\n super();\n this.schemaName = schemaName;\n this.fromName = fromName;\n this.toName = toName;\n this.label = `Rename type \"${fromName}\" to \"${toName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return renameType(this.schemaName, this.fromName, this.toName);\n }\n\n renderTypeScript(): string {\n return `renameType(${jsonToTsSource(this.schemaName)}, ${jsonToTsSource(this.fromName)}, ${jsonToTsSource(this.toName)})`;\n }\n}\n\n// ============================================================================\n// Raw SQL\n// ============================================================================\n\n/**\n * Laundered pre-built operation.\n *\n * Wraps an already-materialized `SqlMigrationPlanOperation` — typically one\n * produced by a SQL-family method, a codec control hook, or a component\n * `databaseDependencies.init` declaration — so the planner can carry it\n * alongside IR nodes without reverse-engineering it into a\n * structured call class. Doubles as the user-facing escape hatch for raw\n * migrations: authors can pass a full op shape to `rawSql({...})`.\n *\n * `toOp()` returns the stored op unchanged. `renderTypeScript()` emits\n * `rawSql({...})` with the op serialized as a JSON literal — round-tripping\n * requires every field on the op to be JSON-serializable (no closures).\n */\nexport class RawSqlCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'rawSql' as const;\n readonly operationClass: MigrationOperationClass;\n readonly label: string;\n readonly op: Op;\n\n constructor(op: Op) {\n super();\n this.op = op;\n this.label = op.label;\n this.operationClass = op.operationClass;\n this.freeze();\n }\n\n toOp(): Op {\n return this.op;\n }\n\n renderTypeScript(): string {\n return `rawSql(${jsonToTsSource(this.op)})`;\n }\n}\n\n// ============================================================================\n// Database dependencies (structured DDL)\n// ============================================================================\n\nexport class CreateExtensionCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'createExtension' as const;\n readonly operationClass = 'additive' as const;\n readonly extensionName: string;\n readonly label: string;\n\n constructor(extensionName: string) {\n super();\n this.extensionName = extensionName;\n this.label = `Create extension \"${extensionName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return createExtension(this.extensionName);\n }\n\n renderTypeScript(): string {\n return `createExtension(${jsonToTsSource(this.extensionName)})`;\n }\n}\n\nexport class CreateSchemaCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'createSchema' as const;\n readonly operationClass = 'additive' as const;\n readonly schemaName: string;\n readonly label: string;\n\n constructor(schemaName: string) {\n super();\n this.schemaName = schemaName;\n this.label = `Create schema \"${schemaName}\"`;\n this.freeze();\n }\n\n toOp(): Op {\n return createSchema(this.schemaName);\n }\n\n renderTypeScript(): string {\n return `createSchema(${jsonToTsSource(this.schemaName)})`;\n }\n}\n\n// ============================================================================\n// Data transform\n// ============================================================================\n\n/**\n * A planner-generated data-transform stub. `checkSlot` and `runSlot` name\n * the unfilled authoring slots that the rendered `migration.ts` will expose\n * to the user via `placeholder(\"…\")` calls. `toOp()` always throws\n * `PN-MIG-2001`: the planner cannot lower a stubbed transform to a runtime\n * op — the user must fill the rendered `migration.ts` and re-emit.\n */\nexport class DataTransformCall extends PostgresOpFactoryCallNode {\n readonly factoryName = 'dataTransform' as const;\n readonly operationClass: MigrationOperationClass;\n readonly label: string;\n readonly checkSlot: string;\n readonly runSlot: string;\n\n constructor(\n label: string,\n checkSlot: string,\n runSlot: string,\n operationClass: MigrationOperationClass = 'data',\n ) {\n super();\n this.label = label;\n this.checkSlot = checkSlot;\n this.runSlot = runSlot;\n this.operationClass = operationClass;\n this.freeze();\n }\n\n toOp(): Op {\n throw errorUnfilledPlaceholder(this.label);\n }\n\n renderTypeScript(): string {\n return [\n `this.dataTransform(endContract, ${jsonToTsSource(this.label)}, {`,\n ` check: () => placeholder(${jsonToTsSource(this.checkSlot)}),`,\n ` run: () => placeholder(${jsonToTsSource(this.runSlot)}),`,\n '})',\n ].join('\\n');\n }\n\n override importRequirements(): readonly ImportRequirement[] {\n return [\n { moduleSpecifier: TARGET_MIGRATION_MODULE, symbol: 'placeholder' },\n {\n moduleSpecifier: './end-contract.json',\n symbol: 'endContract',\n kind: 'default',\n attributes: { type: 'json' },\n },\n ];\n }\n}\n\nexport type PostgresOpFactoryCall =\n | CreateTableCall\n | DropTableCall\n | AddColumnCall\n | DropColumnCall\n | AlterColumnTypeCall\n | SetNotNullCall\n | DropNotNullCall\n | SetDefaultCall\n | DropDefaultCall\n | AddPrimaryKeyCall\n | AddForeignKeyCall\n | AddUniqueCall\n | CreateIndexCall\n | DropIndexCall\n | DropConstraintCall\n | CreateEnumTypeCall\n | AddEnumValuesCall\n | DropEnumTypeCall\n | RenameTypeCall\n | RawSqlCall\n | CreateExtensionCall\n | CreateSchemaCall\n | DataTransformCall;\n\n/**\n * Stable identity key for reconciliation-level dedup.\n *\n * Two calls whose runtime ops would share the same `id` return the same\n * key, so a `Set<string>` can collapse them before they're emitted. The\n * current implementation delegates to `toOp().id`, which is the\n * authoritative identity; isolating dedup behind this helper lets a future\n * pass replace it with an allocation-free computation directly from the\n * call's fields without touching call sites.\n *\n * `DataTransformCall` intentionally has no sensible identity today — it\n * throws `PN-MIG-2001` on `toOp()`. Reconciliation never produces one; the\n * helper is unspecified for that variant and only meant for\n * reconciliation-emitted calls.\n */\nexport function identityKeyFor(call: PostgresOpFactoryCall): string {\n return call.toOp().id;\n}\n"],"mappings":"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"}