@prisma-next/target-postgres 0.12.0-dev.4 → 0.12.0-dev.41

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 (170) hide show
  1. package/dist/{codec-ids-DliyCWPY.d.mts → codec-ids-Cx7C07Y_.d.mts} +3 -2
  2. package/dist/codec-ids-Cx7C07Y_.d.mts.map +1 -0
  3. package/dist/{codec-ids-C5qzBqus.mjs → codec-ids-DTqscwN9.mjs} +3 -2
  4. package/dist/codec-ids-DTqscwN9.mjs.map +1 -0
  5. package/dist/codec-ids.d.mts +2 -2
  6. package/dist/codec-ids.mjs +2 -2
  7. package/dist/{codec-types-BF1DXTPs.d.mts → codec-types-BoxMGJk-.d.mts} +2 -2
  8. package/dist/{codec-types-BF1DXTPs.d.mts.map → codec-types-BoxMGJk-.d.mts.map} +1 -1
  9. package/dist/codec-types.d.mts +1 -1
  10. package/dist/{codecs-DuP3d9Au.d.mts → codecs-DCSyTOCb.d.mts} +2 -2
  11. package/dist/codecs-DCSyTOCb.d.mts.map +1 -0
  12. package/dist/codecs.d.mts +1 -1
  13. package/dist/codecs.mjs +37 -2
  14. package/dist/codecs.mjs.map +1 -1
  15. package/dist/column-type-compatibility-Dzxz_CkP.mjs +11 -0
  16. package/dist/column-type-compatibility-Dzxz_CkP.mjs.map +1 -0
  17. package/dist/column-type-compatibility.d.mts +5 -0
  18. package/dist/column-type-compatibility.d.mts.map +1 -0
  19. package/dist/column-type-compatibility.mjs +2 -0
  20. package/dist/contract-free.d.mts +75 -0
  21. package/dist/contract-free.d.mts.map +1 -0
  22. package/dist/contract-free.mjs +139 -0
  23. package/dist/contract-free.mjs.map +1 -0
  24. package/dist/control.d.mts +1 -1
  25. package/dist/control.mjs +64 -36
  26. package/dist/control.mjs.map +1 -1
  27. package/dist/{data-transform-CAPmAdxS.d.mts → data-transform-5gLOgP68.d.mts} +2 -2
  28. package/dist/{data-transform-CAPmAdxS.d.mts.map → data-transform-5gLOgP68.d.mts.map} +1 -1
  29. package/dist/{data-transform-CRkv2T_U.mjs → data-transform-DIYwbe4S.mjs} +1 -1
  30. package/dist/{data-transform-CRkv2T_U.mjs.map → data-transform-DIYwbe4S.mjs.map} +1 -1
  31. package/dist/data-transform.d.mts +1 -1
  32. package/dist/data-transform.mjs +1 -1
  33. package/dist/ddl.d.mts +2 -0
  34. package/dist/ddl.mjs +2 -0
  35. package/dist/{default-normalizer-DaAhmzBV.mjs → default-normalizer-DFHtpCPH.mjs} +1 -1
  36. package/dist/{default-normalizer-DaAhmzBV.mjs.map → default-normalizer-DFHtpCPH.mjs.map} +1 -1
  37. package/dist/default-normalizer.mjs +1 -1
  38. package/dist/{descriptor-meta-Uu8QaClr.mjs → descriptor-meta-BqATo5Dz.mjs} +3 -2
  39. package/dist/descriptor-meta-BqATo5Dz.mjs.map +1 -0
  40. package/dist/{descriptor-meta-runtime-DMRX39kp.mjs → descriptor-meta-runtime-BBL7VdnR.mjs} +2 -2
  41. package/dist/{descriptor-meta-runtime-DMRX39kp.mjs.map → descriptor-meta-runtime-BBL7VdnR.mjs.map} +1 -1
  42. package/dist/{enum-planning-DRA9LaMU.mjs → enum-planning-Cb-NjaH6.mjs} +0 -0
  43. package/dist/{enum-planning-DRA9LaMU.mjs.map → enum-planning-Cb-NjaH6.mjs.map} +1 -1
  44. package/dist/enum-planning.d.mts +1 -1
  45. package/dist/enum-planning.mjs +1 -1
  46. package/dist/{errors-BbnITmAD.mjs → errors-De185dnO.mjs} +1 -1
  47. package/dist/{errors-BbnITmAD.mjs.map → errors-De185dnO.mjs.map} +1 -1
  48. package/dist/errors.mjs +1 -1
  49. package/dist/{issue-planner-BtaL6OfW.mjs → issue-planner-NzRtXfjR.mjs} +22 -23
  50. package/dist/issue-planner-NzRtXfjR.mjs.map +1 -0
  51. package/dist/issue-planner.d.mts +1 -1
  52. package/dist/issue-planner.d.mts.map +1 -1
  53. package/dist/issue-planner.mjs +1 -1
  54. package/dist/migration.d.mts +3 -3
  55. package/dist/migration.mjs +3 -3
  56. package/dist/{native-type-normalizer-BNEQ9VDs.mjs → native-type-normalizer-BUUe8USD.mjs} +1 -1
  57. package/dist/{native-type-normalizer-BNEQ9VDs.mjs.map → native-type-normalizer-BUUe8USD.mjs.map} +1 -1
  58. package/dist/native-type-normalizer.mjs +1 -1
  59. package/dist/nodes-DCC8-DhV.mjs +42 -0
  60. package/dist/nodes-DCC8-DhV.mjs.map +1 -0
  61. package/dist/nodes-DflxwrE8.d.mts +38 -0
  62. package/dist/nodes-DflxwrE8.d.mts.map +1 -0
  63. package/dist/{op-factory-call-CDlImOF_.d.mts → op-factory-call-B-HEOf41.d.mts} +3 -3
  64. package/dist/{op-factory-call-CDlImOF_.d.mts.map → op-factory-call-B-HEOf41.d.mts.map} +1 -1
  65. package/dist/{op-factory-call-ewOd5q6L.mjs → op-factory-call-ZqeS5JxZ.mjs} +2 -2
  66. package/dist/{op-factory-call-ewOd5q6L.mjs.map → op-factory-call-ZqeS5JxZ.mjs.map} +1 -1
  67. package/dist/op-factory-call.d.mts +1 -1
  68. package/dist/op-factory-call.mjs +1 -1
  69. package/dist/pack.d.mts +3 -2
  70. package/dist/pack.d.mts.map +1 -1
  71. package/dist/pack.mjs +1 -1
  72. package/dist/planner-BRGVWfq4.mjs +342 -0
  73. package/dist/planner-BRGVWfq4.mjs.map +1 -0
  74. package/dist/{planner-ddl-builders-BNMfSE9r.mjs → planner-ddl-builders-BfN5p8wr.mjs} +3 -3
  75. package/dist/{planner-ddl-builders-BNMfSE9r.mjs.map → planner-ddl-builders-BfN5p8wr.mjs.map} +1 -1
  76. package/dist/planner-ddl-builders.d.mts +1 -1
  77. package/dist/planner-ddl-builders.mjs +1 -1
  78. package/dist/{planner-identity-values-nhVj0hp-.mjs → planner-identity-values-DmwlJe_z.mjs} +1 -1
  79. package/dist/{planner-identity-values-nhVj0hp-.mjs.map → planner-identity-values-DmwlJe_z.mjs.map} +1 -1
  80. package/dist/planner-identity-values.mjs +1 -1
  81. package/dist/{planner-produced-postgres-migration-D02NOhVQ.d.mts → planner-produced-postgres-migration-Co71_VbU.d.mts} +3 -3
  82. package/dist/{planner-produced-postgres-migration-D02NOhVQ.d.mts.map → planner-produced-postgres-migration-Co71_VbU.d.mts.map} +1 -1
  83. package/dist/{planner-produced-postgres-migration-D_nsXbhl.mjs → planner-produced-postgres-migration-D6KXC2DH.mjs} +4 -4
  84. package/dist/{planner-produced-postgres-migration-D_nsXbhl.mjs.map → planner-produced-postgres-migration-D6KXC2DH.mjs.map} +1 -1
  85. package/dist/planner-produced-postgres-migration.d.mts +1 -1
  86. package/dist/planner-produced-postgres-migration.mjs +1 -1
  87. package/dist/{planner-schema-lookup-CGxxYfnD.mjs → planner-schema-lookup-Bm4S3LvB.mjs} +1 -1
  88. package/dist/{planner-schema-lookup-CGxxYfnD.mjs.map → planner-schema-lookup-Bm4S3LvB.mjs.map} +1 -1
  89. package/dist/planner-schema-lookup.mjs +1 -1
  90. package/dist/{planner-sql-checks-CfEiTXoQ.mjs → planner-sql-checks-C43dcyOd.mjs} +39 -12
  91. package/dist/planner-sql-checks-C43dcyOd.mjs.map +1 -0
  92. package/dist/planner-sql-checks.mjs +1 -1
  93. package/dist/{planner-target-details-a_wuOiYf.d.mts → planner-target-details-Dv5N6x6k.d.mts} +1 -1
  94. package/dist/{planner-target-details-a_wuOiYf.d.mts.map → planner-target-details-Dv5N6x6k.d.mts.map} +1 -1
  95. package/dist/planner-target-details.d.mts +1 -1
  96. package/dist/planner.d.mts +3 -2
  97. package/dist/planner.d.mts.map +1 -1
  98. package/dist/planner.mjs +1 -1
  99. package/dist/{postgres-contract-serializer-BnOboPWs.mjs → postgres-contract-serializer-K_3f7YlX.mjs} +33 -24
  100. package/dist/postgres-contract-serializer-K_3f7YlX.mjs.map +1 -0
  101. package/dist/{postgres-enum-type-CSzsvXrO.d.mts → postgres-enum-type-CWwVGBNK.d.mts} +1 -1
  102. package/dist/{postgres-enum-type-CSzsvXrO.d.mts.map → postgres-enum-type-CWwVGBNK.d.mts.map} +1 -1
  103. package/dist/{postgres-enum-type-BMgyxNyy.mjs → postgres-enum-type-CaGZ2mfI.mjs} +1 -1
  104. package/dist/{postgres-enum-type-BMgyxNyy.mjs.map → postgres-enum-type-CaGZ2mfI.mjs.map} +1 -1
  105. package/dist/{postgres-migration-DRY8V-bQ.d.mts → postgres-migration-BcKS2Lqq.d.mts} +3 -3
  106. package/dist/{postgres-migration-DRY8V-bQ.d.mts.map → postgres-migration-BcKS2Lqq.d.mts.map} +1 -1
  107. package/dist/{postgres-migration-BatbEvU6.mjs → postgres-migration-BnDg_Nj0.mjs} +3 -3
  108. package/dist/{postgres-migration-BatbEvU6.mjs.map → postgres-migration-BnDg_Nj0.mjs.map} +1 -1
  109. package/dist/{postgres-schema-BxAuNFX0.mjs → postgres-schema-BQG4laaB.mjs} +29 -14
  110. package/dist/postgres-schema-BQG4laaB.mjs.map +1 -0
  111. package/dist/{render-ops-XhICjX_P.mjs → render-ops-BpU-Qv06.mjs} +1 -1
  112. package/dist/{render-ops-XhICjX_P.mjs.map → render-ops-BpU-Qv06.mjs.map} +1 -1
  113. package/dist/render-ops.d.mts +1 -1
  114. package/dist/render-ops.mjs +1 -1
  115. package/dist/{render-typescript-K125n-RZ.mjs → render-typescript-D9O7aOS_.mjs} +1 -1
  116. package/dist/{render-typescript-K125n-RZ.mjs.map → render-typescript-D9O7aOS_.mjs.map} +1 -1
  117. package/dist/render-typescript.mjs +1 -1
  118. package/dist/runtime.d.mts.map +1 -1
  119. package/dist/runtime.mjs +2 -2
  120. package/dist/{shared-Do_a5ymU.d.mts → shared-CMqM-2BA.d.mts} +2 -2
  121. package/dist/{shared-Do_a5ymU.d.mts.map → shared-CMqM-2BA.d.mts.map} +1 -1
  122. package/dist/{sql-utils-CggjWNij.mjs → sql-utils-DR_F9aHR.mjs} +1 -1
  123. package/dist/{sql-utils-CggjWNij.mjs.map → sql-utils-DR_F9aHR.mjs.map} +1 -1
  124. package/dist/sql-utils.mjs +1 -1
  125. package/dist/{tables-DoA39Yqo.mjs → tables-DiNZG5Ln.mjs} +3 -3
  126. package/dist/{tables-DoA39Yqo.mjs.map → tables-DiNZG5Ln.mjs.map} +1 -1
  127. package/dist/{types-O40IcFV9.d.mts → types-kggVJs6C.d.mts} +1 -1
  128. package/dist/types-kggVJs6C.d.mts.map +1 -0
  129. package/dist/types.d.mts +16 -11
  130. package/dist/types.d.mts.map +1 -1
  131. package/dist/types.mjs +2 -2
  132. package/package.json +20 -18
  133. package/src/contract-free/columns.ts +49 -0
  134. package/src/contract-free/control-bootstrap.ts +55 -0
  135. package/src/contract-free/ddl.ts +32 -0
  136. package/src/core/ast/table-source.ts +23 -0
  137. package/src/core/codec-ids.ts +1 -0
  138. package/src/core/codecs.ts +44 -0
  139. package/src/core/column-type-compatibility.ts +13 -0
  140. package/src/core/ddl/nodes.ts +59 -0
  141. package/src/core/descriptor-meta.ts +1 -0
  142. package/src/core/migrations/control-policy.ts +234 -0
  143. package/src/core/migrations/issue-planner.ts +3 -3
  144. package/src/core/migrations/planner-sql-checks.ts +9 -9
  145. package/src/core/migrations/planner-strategies.ts +16 -10
  146. package/src/core/migrations/planner.ts +57 -6
  147. package/src/core/migrations/runner.ts +78 -45
  148. package/src/core/postgres-contract-serializer.ts +52 -46
  149. package/src/core/postgres-schema.ts +43 -25
  150. package/src/exports/column-type-compatibility.ts +1 -0
  151. package/src/exports/contract-free.ts +7 -0
  152. package/src/exports/ddl.ts +7 -0
  153. package/dist/codec-ids-C5qzBqus.mjs.map +0 -1
  154. package/dist/codec-ids-DliyCWPY.d.mts.map +0 -1
  155. package/dist/codecs-DuP3d9Au.d.mts.map +0 -1
  156. package/dist/descriptor-meta-Uu8QaClr.mjs.map +0 -1
  157. package/dist/issue-planner-BtaL6OfW.mjs.map +0 -1
  158. package/dist/planner-Bjz5pnLa.mjs +0 -177
  159. package/dist/planner-Bjz5pnLa.mjs.map +0 -1
  160. package/dist/planner-sql-checks-CfEiTXoQ.mjs.map +0 -1
  161. package/dist/postgres-contract-serializer-BnOboPWs.mjs.map +0 -1
  162. package/dist/postgres-schema-BxAuNFX0.mjs.map +0 -1
  163. package/dist/statement-builders-DVI5IVAa.mjs +0 -131
  164. package/dist/statement-builders-DVI5IVAa.mjs.map +0 -1
  165. package/dist/statement-builders.d.mts +0 -51
  166. package/dist/statement-builders.d.mts.map +0 -1
  167. package/dist/statement-builders.mjs +0 -2
  168. package/dist/types-O40IcFV9.d.mts.map +0 -1
  169. package/src/core/migrations/statement-builders.ts +0 -183
  170. package/src/exports/statement-builders.ts +0 -8
@@ -1,4 +1,4 @@
1
- import type { ContractMarkerRecord } from '@prisma-next/contract/types';
1
+ import type { Contract, ContractMarkerRecord } from '@prisma-next/contract/types';
2
2
  import type {
3
3
  MigrationOperationPolicy,
4
4
  SqlControlFamilyInstance,
@@ -19,22 +19,17 @@ import type {
19
19
  } from '@prisma-next/framework-components/control';
20
20
  import { APP_SPACE_ID } from '@prisma-next/framework-components/control';
21
21
  import { UNBOUND_NAMESPACE_ID } from '@prisma-next/framework-components/ir';
22
+ import type { SqlStorage } from '@prisma-next/sql-contract/types';
22
23
  import { SqlQueryError } from '@prisma-next/sql-errors';
24
+ import type { LoweredStatement } from '@prisma-next/sql-relational-core/ast';
23
25
  import { ifDefined } from '@prisma-next/utils/defined';
24
26
  import type { Result } from '@prisma-next/utils/result';
25
27
  import { notOk, ok, okVoid } from '@prisma-next/utils/result';
28
+ import { postgresColumnsCompatible } from '../column-type-compatibility';
26
29
  import { parsePostgresDefault } from '../default-normalizer';
27
30
  import { normalizeSchemaNativeType } from '../native-type-normalizer';
28
31
  import { createResolveExistingEnumValues } from './enum-planning';
29
32
  import type { PostgresPlanTargetDetails } from './planner-target-details';
30
- import {
31
- buildLedgerInsertStatement,
32
- buildMergeMarkerStatements,
33
- ensureLedgerTableStatement,
34
- ensureMarkerTableStatement,
35
- ensurePrismaContractSchemaStatement,
36
- type SqlStatement,
37
- } from './statement-builders';
38
33
 
39
34
  interface ApplyPlanSuccessValue {
40
35
  readonly operationsExecuted: number;
@@ -107,7 +102,7 @@ class PostgresMigrationRunner implements SqlMigrationRunner<PostgresPlanTargetDe
107
102
  if (!policyCheck.ok) return policyCheck;
108
103
 
109
104
  await this.acquireLock(driver, lockKey);
110
- const ensureResult = await this.ensureControlTables(driver);
105
+ const ensureResult = await this.ensureControlTables(driver, options.destinationContract);
111
106
  if (!ensureResult.ok) return ensureResult;
112
107
  const existingMarker = await this.family.readMarker({ driver, space });
113
108
 
@@ -146,6 +141,7 @@ class PostgresMigrationRunner implements SqlMigrationRunner<PostgresPlanTargetDe
146
141
  frameworkComponents: options.frameworkComponents,
147
142
  normalizeDefault: parsePostgresDefault,
148
143
  normalizeNativeType: normalizeSchemaNativeType,
144
+ columnsCompatible: postgresColumnsCompatible,
149
145
  resolveExistingEnumValues: createResolveExistingEnumValues(
150
146
  options.destinationContract.storage,
151
147
  ),
@@ -165,8 +161,9 @@ class PostgresMigrationRunner implements SqlMigrationRunner<PostgresPlanTargetDe
165
161
  isSelfEdge && applyValue.operationsExecuted === 0 && incomingIsSubsetOfExisting;
166
162
 
167
163
  if (!isSelfEdgeNoOp) {
168
- await this.upsertMarker(driver, options, existingMarker, space);
169
- await this.recordLedgerEntry(driver, options, existingMarker, applyValue.executedOperations);
164
+ const markerResult = await this.upsertMarker(driver, options, existingMarker, space);
165
+ if (!markerResult.ok) return markerResult;
166
+ await this.recordLedgerEntries(driver, options, applyValue.executedOperations);
170
167
  }
171
168
 
172
169
  return runnerSuccess({
@@ -282,18 +279,22 @@ class PostgresMigrationRunner implements SqlMigrationRunner<PostgresPlanTargetDe
282
279
 
283
280
  private async ensureControlTables(
284
281
  driver: SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>['driver'],
282
+ contract: Contract<SqlStorage>,
285
283
  ): Promise<Result<void, SqlMigrationRunnerFailure>> {
286
- await this.executeStatement(driver, ensurePrismaContractSchemaStatement);
287
- // Pre-1.0 zero-range guardrail: detect a pre-cleanup single-row
288
- // marker table (no `space` column) and surface a structured failure
289
- // rather than silently auto-migrating it to the per-space shape.
290
- // See `specs/framework-mechanism.spec.md § 2`.
284
+ const lowererContext = { contract };
285
+ const bootstrapQueries = this.family.bootstrapControlTableQueries();
286
+ const [schemaQuery, ...tableQueries] = bootstrapQueries;
287
+ if (schemaQuery === undefined) {
288
+ throw new Error('Postgres control-table bootstrap must include CREATE SCHEMA');
289
+ }
290
+ await this.executeStatement(driver, this.family.lowerAst(schemaQuery, lowererContext));
291
291
  const legacyDetection = await this.detectLegacyMarkerShape(driver);
292
292
  if (!legacyDetection.ok) {
293
293
  return legacyDetection;
294
294
  }
295
- await this.executeStatement(driver, ensureMarkerTableStatement);
296
- await this.executeStatement(driver, ensureLedgerTableStatement);
295
+ for (const query of tableQueries) {
296
+ await this.executeStatement(driver, this.family.lowerAst(query, lowererContext));
297
+ }
297
298
  return okVoid();
298
299
  }
299
300
 
@@ -594,43 +595,75 @@ class PostgresMigrationRunner implements SqlMigrationRunner<PostgresPlanTargetDe
594
595
  options: SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>,
595
596
  existingMarker: ContractMarkerRecord | null,
596
597
  space: string,
597
- ): Promise<void> {
598
- const incomingInvariants = options.plan.providedInvariants ?? [];
599
- const writeStatements = buildMergeMarkerStatements({
600
- space,
598
+ ): Promise<Result<void, SqlMigrationRunnerFailure>> {
599
+ const destination = {
601
600
  storageHash: options.plan.destination.storageHash,
602
601
  profileHash:
603
602
  options.plan.destination.profileHash ??
604
603
  options.destinationContract.profileHash ??
605
604
  options.plan.destination.storageHash,
606
- contractJson: options.destinationContract,
607
- canonicalVersion: null,
608
- meta: {},
609
- invariants: incomingInvariants,
605
+ invariants: options.plan.providedInvariants ?? [],
606
+ };
607
+ if (!existingMarker) {
608
+ await this.family.initMarker({ driver, space, destination });
609
+ return okVoid();
610
+ }
611
+ const updated = await this.family.updateMarker({
612
+ driver,
613
+ space,
614
+ expectedFrom: existingMarker.storageHash,
615
+ destination,
610
616
  });
611
- const statement = existingMarker ? writeStatements.update : writeStatements.insert;
612
- await this.executeStatement(driver, statement);
617
+ if (!updated) {
618
+ return runnerFailure(
619
+ 'MARKER_CAS_FAILURE',
620
+ 'Marker was modified by another process during migration execution.',
621
+ {
622
+ meta: {
623
+ space,
624
+ expectedStorageHash: existingMarker.storageHash,
625
+ destinationStorageHash: options.plan.destination.storageHash,
626
+ },
627
+ },
628
+ );
629
+ }
630
+ return okVoid();
613
631
  }
614
632
 
615
- private async recordLedgerEntry(
633
+ private async recordLedgerEntries(
616
634
  driver: SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>['driver'],
617
635
  options: SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>,
618
- existingMarker: ContractMarkerRecord | null,
619
636
  executedOperations: readonly SqlMigrationPlanOperation<PostgresPlanTargetDetails>[],
620
637
  ): Promise<void> {
621
- const ledgerStatement = buildLedgerInsertStatement({
622
- originStorageHash: existingMarker?.storageHash ?? null,
623
- originProfileHash: existingMarker?.profileHash ?? null,
624
- destinationStorageHash: options.plan.destination.storageHash,
625
- destinationProfileHash:
626
- options.plan.destination.profileHash ??
627
- options.destinationContract.profileHash ??
628
- options.plan.destination.storageHash,
629
- contractJsonBefore: existingMarker?.contractJson ?? null,
630
- contractJsonAfter: options.destinationContract,
631
- operations: executedOperations,
632
- });
633
- await this.executeStatement(driver, ledgerStatement);
638
+ const plan = options.plan;
639
+ const space = plan.spaceId;
640
+ const edges = options.migrationEdges;
641
+ const totalEdgeOps = edges.reduce((sum, edge) => sum + edge.operationCount, 0);
642
+ if (totalEdgeOps !== plan.operations.length) {
643
+ throw new Error(
644
+ `Ledger write: plan.operations length (${plan.operations.length}) does not match sum of migrationEdges operationCount (${totalEdgeOps})`,
645
+ );
646
+ }
647
+ // The ledger records the operations as executed — idempotency-skipped ops
648
+ // are substituted with skip records (empty `execute`) by `applyPlan`, so the
649
+ // journal reflects what actually ran rather than the raw plan.
650
+ let offset = 0;
651
+ for (const edge of edges) {
652
+ const edgeOps = executedOperations.slice(offset, offset + edge.operationCount);
653
+ offset += edge.operationCount;
654
+ await this.family.writeLedgerEntry({
655
+ driver,
656
+ space,
657
+ entry: {
658
+ edgeId: `${edge.from}->${edge.to}`,
659
+ from: edge.from,
660
+ to: edge.to,
661
+ migrationName: edge.dirName,
662
+ migrationHash: edge.migrationHash,
663
+ operations: edgeOps,
664
+ },
665
+ });
666
+ }
634
667
  }
635
668
 
636
669
  private async acquireLock(
@@ -660,7 +693,7 @@ class PostgresMigrationRunner implements SqlMigrationRunner<PostgresPlanTargetDe
660
693
 
661
694
  private async executeStatement(
662
695
  driver: SqlMigrationRunnerExecuteOptions<PostgresPlanTargetDetails>['driver'],
663
- statement: SqlStatement,
696
+ statement: LoweredStatement,
664
697
  ): Promise<void> {
665
698
  if (statement.params.length > 0) {
666
699
  await driver.query(statement.sql, statement.params);
@@ -14,12 +14,8 @@ import {
14
14
  NamespaceBase,
15
15
  UNBOUND_NAMESPACE_ID,
16
16
  } from '@prisma-next/framework-components/ir';
17
- import type {
18
- SqlNamespaceTablesInput,
19
- SqlStorage,
20
- SqlStorageTypeEntry,
21
- StorageTable,
22
- } from '@prisma-next/sql-contract/types';
17
+ import type { SqlNamespaceTablesInput, SqlStorage } from '@prisma-next/sql-contract/types';
18
+ import { blindCast } from '@prisma-next/utils/casts';
23
19
  import type { JsonObject } from '@prisma-next/utils/json';
24
20
  import type { Type } from 'arktype';
25
21
  import { postgresAuthoringEntityTypes } from './authoring';
@@ -57,9 +53,8 @@ function collectEntityRegistryContributions(namespace: AuthoringEntityTypeNamesp
57
53
  if (isAuthoringEntityTypeDescriptor(value)) {
58
54
  if (isAuthoringEntityTypeFactoryOutput(value.output)) {
59
55
  const { factory } = value.output;
60
- entityTypeRegistry.set(
61
- value.discriminator,
62
- (raw) => factory(raw, POSTGRES_AUTHORING_CTX) as SqlStorageTypeEntry,
56
+ entityTypeRegistry.set(value.discriminator, (raw) =>
57
+ factory(raw, POSTGRES_AUTHORING_CTX),
63
58
  );
64
59
  }
65
60
  if (value.validatorSchema !== undefined) {
@@ -91,22 +86,43 @@ export class PostgresContractSerializer extends SqlContractSerializerBase<Contra
91
86
  if (raw instanceof NamespaceBase) {
92
87
  return raw;
93
88
  }
94
- const hydrated = super.hydrateSqlNamespaceEntry(nsId, raw) as {
95
- id: string;
96
- tables: Readonly<Record<string, StorageTable>>;
97
- enum?: Readonly<Record<string, PostgresEnumType>>;
98
- };
99
- const { id, tables, enum: hydratedNsEnums } = hydrated;
89
+ const hydrated = blindCast<
90
+ SqlNamespaceTablesInput,
91
+ 'super.hydrateSqlNamespaceEntry returns the tables form when raw is not a NamespaceBase'
92
+ >(super.hydrateSqlNamespaceEntry(nsId, raw));
93
+ const { id, entries } = hydrated;
94
+
95
+ // Extract the postgres-specific `type` slot directly from raw input.
96
+ // The family base handles the `table` slot; the postgres target owns `type`.
97
+ const rawRecord = raw as Record<string, unknown>;
98
+ const rawEntries = rawRecord['entries'];
99
+ let typeSlot: Record<string, PostgresEnumType> | undefined;
100
+ if (rawEntries !== null && typeof rawEntries === 'object' && !Array.isArray(rawEntries)) {
101
+ const rawTypeSlot = (rawEntries as Record<string, unknown>)['type'];
102
+ if (rawTypeSlot !== null && typeof rawTypeSlot === 'object' && !Array.isArray(rawTypeSlot)) {
103
+ const enumFactory = this.entityTypeRegistry.get('postgres-enum');
104
+ typeSlot = Object.fromEntries(
105
+ Object.entries(rawTypeSlot as Record<string, unknown>).map(([name, entry]) => [
106
+ name,
107
+ blindCast<PostgresEnumType, 'postgres-enum factory returns PostgresEnumType'>(
108
+ enumFactory !== undefined ? enumFactory(entry) : entry,
109
+ ),
110
+ ]),
111
+ );
112
+ }
113
+ }
100
114
 
101
- const emptyTables = Object.keys(tables).length === 0;
102
- const emptyEnums = !hydratedNsEnums || Object.keys(hydratedNsEnums).length === 0;
103
- if (id === UNBOUND_NAMESPACE_ID && emptyTables && emptyEnums) {
115
+ const emptyTables = Object.keys(entries.table).length === 0;
116
+ const emptyTypes = !typeSlot || Object.keys(typeSlot).length === 0;
117
+ if (id === UNBOUND_NAMESPACE_ID && emptyTables && emptyTypes) {
104
118
  return PostgresSchema.unbound;
105
119
  }
106
120
  return new PostgresSchema({
107
121
  id,
108
- tables,
109
- ...(hydratedNsEnums !== undefined ? { enum: hydratedNsEnums } : {}),
122
+ entries: {
123
+ table: entries.table,
124
+ type: typeSlot ?? {},
125
+ },
110
126
  });
111
127
  }
112
128
 
@@ -117,30 +133,18 @@ export class PostgresContractSerializer extends SqlContractSerializerBase<Contra
117
133
  if (isPostgresSchema(ns)) {
118
134
  namespacesJson[nsId] = this.serializePostgresNamespace(ns, ns.id === UNBOUND_NAMESPACE_ID);
119
135
  } else {
120
- // Family-level SqlUnboundNamespace or other family-built SQL
121
- // namespaces haven't been promoted to a PostgresSchema instance
122
- // yet (e.g. they came straight from the TS builder before a target
123
- // `createNamespace` factory ran). Serialise them as postgres-schema /
124
- // postgres-unbound-schema so the round-trip through
125
- // deserializeContract hydrates them back into PostgresSchema
126
- // instances.
127
136
  const isUnboundSlot = nsId === UNBOUND_NAMESPACE_ID;
128
- const nsEnums = (ns as { readonly enum?: Readonly<Record<string, unknown>> }).enum ?? {};
129
137
  namespacesJson[nsId] = {
130
138
  id: nsId,
131
139
  kind: isUnboundSlot ? 'postgres-unbound-schema' : 'postgres-schema',
132
- tables: Object.fromEntries(
133
- Object.entries(ns.tables).map(([tableName, table]) => [
134
- tableName,
135
- this.serializeJsonValue(table) as JsonObject,
136
- ]),
137
- ),
138
- enum: Object.fromEntries(
139
- Object.entries(nsEnums).map(([typeName, entry]) => [
140
- typeName,
141
- this.serializeJsonValue(entry) as JsonObject,
142
- ]),
143
- ),
140
+ entries: {
141
+ table: Object.fromEntries(
142
+ Object.entries(ns.entries.table).map(([tableName, table]) => [
143
+ tableName,
144
+ this.serializeJsonValue(table) as JsonObject,
145
+ ]),
146
+ ),
147
+ },
144
148
  };
145
149
  }
146
150
  }
@@ -163,18 +167,20 @@ export class PostgresContractSerializer extends SqlContractSerializerBase<Contra
163
167
 
164
168
  private serializePostgresNamespace(ns: PostgresSchema, isUnboundSlot: boolean): JsonObject {
165
169
  const tablesOut: Record<string, JsonObject> = {};
166
- for (const [tableName, table] of Object.entries(ns.tables)) {
170
+ for (const [tableName, table] of Object.entries(ns.entries.table)) {
167
171
  tablesOut[tableName] = this.serializeJsonValue(table) as JsonObject;
168
172
  }
169
- const enumOut: Record<string, JsonObject> = {};
170
- for (const [typeName, ty] of Object.entries(ns.enum)) {
171
- enumOut[typeName] = this.serializeJsonValue(ty) as JsonObject;
173
+ const typeOut: Record<string, JsonObject> = {};
174
+ for (const [typeName, ty] of Object.entries(ns.entries.type)) {
175
+ typeOut[typeName] = this.serializeJsonValue(ty) as JsonObject;
172
176
  }
173
177
  return {
174
178
  id: ns.id,
175
179
  kind: isUnboundSlot ? 'postgres-unbound-schema' : 'postgres-schema',
176
- tables: tablesOut,
177
- enum: enumOut,
180
+ entries: {
181
+ table: tablesOut,
182
+ type: typeOut,
183
+ },
178
184
  };
179
185
  }
180
186
 
@@ -4,6 +4,7 @@ import {
4
4
  UNBOUND_NAMESPACE_ID,
5
5
  } from '@prisma-next/framework-components/ir';
6
6
  import {
7
+ type PostgresEnumStorageEntry,
7
8
  type SqlNamespaceTablesInput,
8
9
  type SqlStorage,
9
10
  StorageTable,
@@ -14,8 +15,10 @@ import { escapeLiteral } from './sql-utils';
14
15
 
15
16
  export interface PostgresSchemaInput {
16
17
  readonly id: string;
17
- readonly tables?: Record<string, StorageTable | StorageTableInput>;
18
- readonly enum?: Record<string, PostgresEnumType | PostgresEnumTypeInput>;
18
+ readonly entries: {
19
+ readonly table: Record<string, StorageTable | StorageTableInput>;
20
+ readonly type: Record<string, PostgresEnumType | PostgresEnumTypeInput>;
21
+ };
19
22
  }
20
23
 
21
24
  /**
@@ -24,9 +27,10 @@ export interface PostgresSchemaInput {
24
27
  * `namespaces: Record<NamespaceId, PostgresSchema>` map populated by
25
28
  * the Postgres PSL interpreter from `namespace { … }` AST buckets.
26
29
  *
27
- * Qualifier emission is the rendering seam: DDL / SQL emission asks the
28
- * namespace for its qualifier (`"<schema>"`) or for a qualified table
29
- * name (`"<schema>"."<table>"`) and consumes the result polymorphically.
30
+ * `entries` holds entity-kind slot maps (`table`, `type`). Qualifier
31
+ * emission is the rendering seam: DDL / SQL emission asks the namespace
32
+ * for its qualifier (`"<schema>"`) or for a qualified table name
33
+ * (`"<schema>"."<table>"`) and consumes the result polymorphically.
30
34
  * The unbound singleton below overrides these methods to elide the
31
35
  * prefix entirely — call sites stay polymorphic and never branch on
32
36
  * `id === UNBOUND_NAMESPACE_ID`.
@@ -43,28 +47,32 @@ export class PostgresSchema extends NamespaceBase {
43
47
 
44
48
  declare readonly kind: 'schema';
45
49
  readonly id: string;
46
- readonly tables: Readonly<Record<string, StorageTable>>;
47
- readonly enum: Readonly<Record<string, PostgresEnumType>>;
50
+ readonly entries: Readonly<{
51
+ readonly table: Readonly<Record<string, StorageTable>>;
52
+ readonly type: Readonly<Record<string, PostgresEnumType>>;
53
+ }>;
48
54
 
49
55
  constructor(input: PostgresSchemaInput) {
50
56
  super();
51
57
  this.id = input.id;
52
- this.tables = Object.freeze(
53
- Object.fromEntries(
54
- Object.entries(input.tables ?? {}).map(([name, t]) => [
55
- name,
56
- t instanceof StorageTable ? t : new StorageTable(t),
57
- ]),
58
+ this.entries = Object.freeze({
59
+ table: Object.freeze(
60
+ Object.fromEntries(
61
+ Object.entries(input.entries.table).map(([k, v]) => [
62
+ k,
63
+ v instanceof StorageTable ? v : new StorageTable(v as StorageTableInput),
64
+ ]),
65
+ ),
58
66
  ),
59
- );
60
- this.enum = Object.freeze(
61
- Object.fromEntries(
62
- Object.entries(input.enum ?? {}).map(([name, ty]) => [
63
- name,
64
- ty instanceof PostgresEnumType ? ty : new PostgresEnumType(ty),
65
- ]),
67
+ type: Object.freeze(
68
+ Object.fromEntries(
69
+ Object.entries(input.entries.type).map(([k, v]) => [
70
+ k,
71
+ v instanceof PostgresEnumType ? v : new PostgresEnumType(v as PostgresEnumTypeInput),
72
+ ]),
73
+ ),
66
74
  ),
67
- );
75
+ });
68
76
  Object.defineProperty(this, 'kind', {
69
77
  value: 'schema',
70
78
  writable: false,
@@ -154,7 +162,7 @@ export class PostgresUnboundSchema extends PostgresSchema {
154
162
  static readonly instance: PostgresUnboundSchema = new PostgresUnboundSchema();
155
163
 
156
164
  constructor(input?: PostgresSchemaInput) {
157
- super(input ?? { id: UNBOUND_NAMESPACE_ID });
165
+ super(input ?? { id: UNBOUND_NAMESPACE_ID, entries: { table: {}, type: {} } });
158
166
  }
159
167
 
160
168
  override qualifier(): string {
@@ -196,9 +204,19 @@ export function isPostgresSchema(ns: unknown): ns is PostgresSchema {
196
204
  * by reference and trust the resulting `SqlStorage.namespaces` map to
197
205
  * be value-stable for a given input set.
198
206
  */
199
- export function postgresCreateNamespace(input: SqlNamespaceTablesInput): PostgresSchema {
207
+ export function postgresCreateNamespace(
208
+ input: SqlNamespaceTablesInput,
209
+ enumTypes?: Readonly<Record<string, PostgresEnumStorageEntry>>,
210
+ ): PostgresSchema {
211
+ const schemaInput: PostgresSchemaInput = {
212
+ id: input.id,
213
+ entries: {
214
+ table: input.entries.table,
215
+ type: (enumTypes ?? {}) as Record<string, PostgresEnumTypeInput>,
216
+ },
217
+ };
200
218
  if (input.id === UNBOUND_NAMESPACE_ID) {
201
- return new PostgresUnboundSchema(input);
219
+ return new PostgresUnboundSchema(schemaInput);
202
220
  }
203
- return new PostgresSchema(input);
221
+ return new PostgresSchema(schemaInput);
204
222
  }
@@ -0,0 +1 @@
1
+ export { postgresColumnsCompatible } from '../core/column-type-compatibility';
@@ -0,0 +1,7 @@
1
+ export { int4, int8, jsonb, pgTable, text, textArray, timestamptz } from '../contract-free/columns';
2
+ export {
3
+ buildControlTableBootstrapQueries,
4
+ buildSignMarkerBootstrapQueries,
5
+ } from '../contract-free/control-bootstrap';
6
+ export { createSchema, createTable } from '../contract-free/ddl';
7
+ export { PostgresTableSource } from '../core/ast/table-source';
@@ -0,0 +1,7 @@
1
+ export {
2
+ type AnyPostgresDdlNode,
3
+ PostgresCreateSchema,
4
+ PostgresCreateTable,
5
+ PostgresDdlNode,
6
+ type PostgresDdlVisitor,
7
+ } from '../core/ddl/nodes';
@@ -1 +0,0 @@
1
- {"version":3,"file":"codec-ids-C5qzBqus.mjs","names":[],"sources":["../src/core/codec-ids.ts"],"sourcesContent":["export {\n SQL_CHAR_CODEC_ID,\n SQL_FLOAT_CODEC_ID,\n SQL_INT_CODEC_ID,\n SQL_TEXT_CODEC_ID,\n SQL_TIMESTAMP_CODEC_ID,\n SQL_VARCHAR_CODEC_ID,\n} from '@prisma-next/sql-relational-core/ast';\nexport const PG_TEXT_CODEC_ID = 'pg/text@1' as const;\nexport const PG_ENUM_CODEC_ID = 'pg/enum@1' as const;\nexport const PG_CHAR_CODEC_ID = 'pg/char@1' as const;\nexport const PG_VARCHAR_CODEC_ID = 'pg/varchar@1' as const;\nexport const PG_INT_CODEC_ID = 'pg/int@1' as const;\nexport const PG_INT2_CODEC_ID = 'pg/int2@1' as const;\nexport const PG_INT4_CODEC_ID = 'pg/int4@1' as const;\nexport const PG_INT8_CODEC_ID = 'pg/int8@1' as const;\nexport const PG_FLOAT_CODEC_ID = 'pg/float@1' as const;\nexport const PG_FLOAT4_CODEC_ID = 'pg/float4@1' as const;\nexport const PG_FLOAT8_CODEC_ID = 'pg/float8@1' as const;\nexport const PG_NUMERIC_CODEC_ID = 'pg/numeric@1' as const;\nexport const PG_BOOL_CODEC_ID = 'pg/bool@1' as const;\nexport const PG_BIT_CODEC_ID = 'pg/bit@1' as const;\nexport const PG_VARBIT_CODEC_ID = 'pg/varbit@1' as const;\nexport const PG_TIMESTAMP_CODEC_ID = 'pg/timestamp@1' as const;\nexport const PG_TIMESTAMPTZ_CODEC_ID = 'pg/timestamptz@1' as const;\nexport const PG_TIME_CODEC_ID = 'pg/time@1' as const;\nexport const PG_TIMETZ_CODEC_ID = 'pg/timetz@1' as const;\nexport const PG_INTERVAL_CODEC_ID = 'pg/interval@1' as const;\nexport const PG_JSON_CODEC_ID = 'pg/json@1' as const;\nexport const PG_JSONB_CODEC_ID = 'pg/jsonb@1' as const;\nexport const PG_BYTEA_CODEC_ID = 'pg/bytea@1' as const;\n"],"mappings":";;AAQA,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,sBAAsB;AACnC,MAAa,kBAAkB;AAC/B,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,oBAAoB;AACjC,MAAa,qBAAqB;AAClC,MAAa,qBAAqB;AAClC,MAAa,sBAAsB;AACnC,MAAa,mBAAmB;AAChC,MAAa,kBAAkB;AAC/B,MAAa,qBAAqB;AAClC,MAAa,wBAAwB;AACrC,MAAa,0BAA0B;AACvC,MAAa,mBAAmB;AAChC,MAAa,qBAAqB;AAClC,MAAa,uBAAuB;AACpC,MAAa,mBAAmB;AAChC,MAAa,oBAAoB;AACjC,MAAa,oBAAoB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"codec-ids-DliyCWPY.d.mts","names":[],"sources":["../src/core/codec-ids.ts"],"mappings":";;;cAQa,gBAAA;AAAA,cACA,gBAAA;AAAA,cACA,gBAAA;AAAA,cACA,mBAAA;AAAA,cACA,eAAA;AAAA,cACA,gBAAA;AAAA,cACA,gBAAA;AAAA,cACA,gBAAA;AAAA,cACA,iBAAA;AAAA,cACA,kBAAA;AAAA,cACA,kBAAA;AAAA,cACA,mBAAA;AAAA,cACA,gBAAA;AAAA,cACA,eAAA;AAAA,cACA,kBAAA;AAAA,cACA,qBAAA;AAAA,cACA,uBAAA;AAAA,cACA,gBAAA;AAAA,cACA,kBAAA;AAAA,cACA,oBAAA;AAAA,cACA,gBAAA;AAAA,cACA,iBAAA;AAAA,cACA,iBAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"codecs-DuP3d9Au.d.mts","names":[],"sources":["../src/core/codecs.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"descriptor-meta-Uu8QaClr.mjs","names":[],"sources":["../src/core/descriptor-meta.ts"],"sourcesContent":["import type { CodecTypes } from '../exports/codec-types';\nimport {\n postgresAuthoringEntityTypes,\n postgresAuthoringFieldPresets,\n postgresAuthoringTypes,\n} from './authoring';\nimport { postgresTargetDescriptorMetaRuntime } from './descriptor-meta-runtime';\n\nconst postgresTargetDescriptorMetaBase = {\n ...postgresTargetDescriptorMetaRuntime,\n authoring: {\n type: postgresAuthoringTypes,\n field: postgresAuthoringFieldPresets,\n entityTypes: postgresAuthoringEntityTypes,\n },\n} as const;\n\nexport const postgresTargetDescriptorMeta: typeof postgresTargetDescriptorMetaBase & {\n readonly __codecTypes?: CodecTypes;\n} = postgresTargetDescriptorMetaBase;\n"],"mappings":";AAiBA,MAAa,+BAET;CAVF,GAAG;CACH,WAAW;EACT,MAAM;EACN,OAAO;EACP,aAAa;CACf;AAKE"}