@prisma/orm-family-sql 8.0.0-rc.17-dev.31 → 8.0.0-rc.17-dev.33

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 (58) hide show
  1. package/dist/{attribute-specs-CvAge5jQ.d.mts → attribute-specs-Dp4My87B.d.mts} +3 -3
  2. package/dist/{attribute-specs-CvAge5jQ.d.mts.map → attribute-specs-Dp4My87B.d.mts.map} +1 -1
  3. package/dist/{authoring-entity-types-CZ-vdwYS-UkZvXxD0.d.mts → authoring-entity-types-CZ-vdwYS-CrNb3aBC.d.mts} +2 -2
  4. package/dist/{authoring-entity-types-CZ-vdwYS-UkZvXxD0.d.mts.map → authoring-entity-types-CZ-vdwYS-CrNb3aBC.d.mts.map} +1 -1
  5. package/dist/{authoring-type-constructors-0Iv2zdwS-D-AoEcR1.mjs → authoring-type-constructors-0Iv2zdwS-DjC0oxBn.mjs} +2 -2
  6. package/dist/{authoring-type-constructors-0Iv2zdwS-D-AoEcR1.mjs.map → authoring-type-constructors-0Iv2zdwS-DjC0oxBn.mjs.map} +1 -1
  7. package/dist/{config-types-DabYoGbo.mjs → config-types-GKGrPAno.mjs} +2 -2
  8. package/dist/{config-types-DabYoGbo.mjs.map → config-types-GKGrPAno.mjs.map} +1 -1
  9. package/dist/{contract-builder-DZfaYN6-.d.mts → contract-builder-C4fgERNT.d.mts} +4 -2
  10. package/dist/{contract-builder-DZfaYN6-.d.mts.map → contract-builder-C4fgERNT.d.mts.map} +1 -1
  11. package/dist/{contract-builder-C5n9DeDD.mjs → contract-builder-uPgNqtxM.mjs} +3 -3
  12. package/dist/{contract-builder-C5n9DeDD.mjs.map → contract-builder-uPgNqtxM.mjs.map} +1 -1
  13. package/dist/contract-prisma7__provider.mjs +4 -4
  14. package/dist/contract-psl.d.mts +1 -1
  15. package/dist/contract-psl.mjs +1 -1
  16. package/dist/contract-psl__attribute-specs.d.mts +1 -1
  17. package/dist/contract-psl__attribute-specs.mjs +1 -1
  18. package/dist/contract-psl__provider.mjs +2 -2
  19. package/dist/contract-psl__provider.mjs.map +1 -1
  20. package/dist/contract-ts.d.mts +1 -1
  21. package/dist/contract-ts.mjs +3 -3
  22. package/dist/contract-ts__config-types.mjs +1 -1
  23. package/dist/contract-ts__contract-builder.d.mts +1 -1
  24. package/dist/contract-ts__contract-builder.mjs +2 -2
  25. package/dist/contract.mjs +1 -1
  26. package/dist/contract__validators.mjs +1 -1
  27. package/dist/{control-DNak0yEQ.d.mts → control-D4PHWMpB.d.mts} +3 -3
  28. package/dist/{control-DNak0yEQ.d.mts.map → control-D4PHWMpB.d.mts.map} +1 -1
  29. package/dist/{control-BICnlTqY.mjs → control-DoMJbS3w.mjs} +5 -5
  30. package/dist/{control-BICnlTqY.mjs.map → control-DoMJbS3w.mjs.map} +1 -1
  31. package/dist/{derived-checks-DSMOrZN--C03ao8_m.mjs → derived-checks-DSMOrZN--D4sGB1Rt.mjs} +2 -2
  32. package/dist/{derived-checks-DSMOrZN--C03ao8_m.mjs.map → derived-checks-DSMOrZN--D4sGB1Rt.mjs.map} +1 -1
  33. package/dist/family.d.mts +2 -2
  34. package/dist/family.mjs +3 -3
  35. package/dist/family__control.d.mts +1 -1
  36. package/dist/family__control.mjs +2 -2
  37. package/dist/family__ir.mjs +1 -1
  38. package/dist/family__pack.d.mts +1 -1
  39. package/dist/family__pack.mjs +2 -2
  40. package/dist/{interpreter-DJQBAjo4-DEwoC6An.mjs → interpreter-0z4AxG0I-DO_n08hz.mjs} +26 -12
  41. package/dist/interpreter-0z4AxG0I-DO_n08hz.mjs.map +1 -0
  42. package/dist/orm-client.d.mts +70 -64
  43. package/dist/orm-client.d.mts.map +1 -1
  44. package/dist/orm-client.mjs +190 -177
  45. package/dist/orm-client.mjs.map +1 -1
  46. package/dist/{pack-DW-29xFu.d.mts → pack-mniK_gmN.d.mts} +3 -3
  47. package/dist/{pack-DW-29xFu.d.mts.map → pack-mniK_gmN.d.mts.map} +1 -1
  48. package/dist/{psl-column-resolution-Dm5LhN9b-DTdMQ4ZD.d.mts → psl-column-resolution-Dm5LhN9b-BwyDcxSb.d.mts} +2 -2
  49. package/dist/{psl-column-resolution-Dm5LhN9b-DTdMQ4ZD.d.mts.map → psl-column-resolution-Dm5LhN9b-BwyDcxSb.d.mts.map} +1 -1
  50. package/dist/{psl-field-resolution-D4jnVVTd-CsmY9mnF.mjs → psl-field-resolution-D4jnVVTd-Drt-tbfu.mjs} +3 -3
  51. package/dist/{psl-field-resolution-D4jnVVTd-CsmY9mnF.mjs.map → psl-field-resolution-D4jnVVTd-Drt-tbfu.mjs.map} +1 -1
  52. package/dist/{sql-contract-serializer-DDaAVCQr-CK2KUyq0.mjs → sql-contract-serializer-DDaAVCQr-BAb4jKvV.mjs} +2 -2
  53. package/dist/{sql-contract-serializer-DDaAVCQr-CK2KUyq0.mjs.map → sql-contract-serializer-DDaAVCQr-BAb4jKvV.mjs.map} +1 -1
  54. package/dist/{validators-B9prRmOP.mjs → validators-BMWQ7-5D.mjs} +3 -3
  55. package/dist/validators-BMWQ7-5D.mjs.map +1 -0
  56. package/package.json +18 -18
  57. package/dist/interpreter-DJQBAjo4-DEwoC6An.mjs.map +0 -1
  58. package/dist/validators-B9prRmOP.mjs.map +0 -1
@@ -102,8 +102,7 @@ function resolvePolymorphismInfo(contract, namespaceId, modelName) {
102
102
  }
103
103
  const cacheKey = metadataCacheKey(namespaceId, modelName);
104
104
  if (perContract.has(cacheKey)) return perContract.get(cacheKey);
105
- const models = modelsOf(contract, namespaceId);
106
- const model = models[modelName];
105
+ const model = modelsOf(contract, namespaceId)[modelName];
107
106
  if (!model?.discriminator || !model.variants) {
108
107
  perContract.set(cacheKey, void 0);
109
108
  return;
@@ -116,21 +115,21 @@ function resolvePolymorphismInfo(contract, namespaceId, modelName) {
116
115
  const discriminatorField = model.discriminator.field;
117
116
  const discriminatorColumn = columnOfContractField(contract, namespaceId, modelName, discriminatorField);
118
117
  const variants = /* @__PURE__ */ new Map();
119
- const variantsByValue = /* @__PURE__ */ new Map();
120
118
  const mtiVariants = [];
121
- for (const [variantModelName, variantEntry] of Object.entries(model.variants)) {
122
- const variantModel = models[variantModelName];
119
+ for (const [value, variantRef] of Object.entries(model.variants)) {
120
+ const variantModelName = variantRef.model;
121
+ const variantModel = modelOf(contract, variantRef.namespace, variantModelName);
123
122
  if (!variantModel) throw new InternalError(`Model "${modelName}" declares variant "${variantModelName}", but that model is missing from the contract`);
124
123
  const variantTable = variantModel.storage?.table ?? baseTable;
125
- const strategy = variantTable === baseTable ? "sti" : "mti";
124
+ const strategy = variantRef.namespace === namespaceId && variantTable === baseTable ? "sti" : "mti";
126
125
  const info = {
127
126
  modelName: variantModelName,
128
- value: variantEntry.value,
127
+ namespaceId: variantRef.namespace,
128
+ value,
129
129
  table: variantTable,
130
130
  strategy
131
131
  };
132
- variants.set(variantModelName, info);
133
- variantsByValue.set(variantEntry.value, info);
132
+ variants.set(value, info);
134
133
  if (strategy === "mti") mtiVariants.push(info);
135
134
  }
136
135
  const result = {
@@ -138,7 +137,6 @@ function resolvePolymorphismInfo(contract, namespaceId, modelName) {
138
137
  discriminatorColumn,
139
138
  baseTable,
140
139
  variants,
141
- variantsByValue,
142
140
  mtiVariants
143
141
  };
144
142
  perContract.set(cacheKey, result);
@@ -169,6 +167,7 @@ function getModelFields(contract, namespaceId, modelName) {
169
167
  const model = modelOf(contract, namespaceId, modelName);
170
168
  const table = model?.storage?.table;
171
169
  const own = table === void 0 ? {} : Object.fromEntries(Object.entries(getOwnFieldColumns(contract, namespaceId, modelName)).map(([field, column]) => [field, {
170
+ namespaceId,
172
171
  table,
173
172
  column
174
173
  }]));
@@ -188,18 +187,18 @@ function getModelFieldColumns(contract, namespaceId, modelName) {
188
187
  ], () => Object.fromEntries(Object.entries(getModelFields(contract, namespaceId, modelName)).map(([field, { column }]) => [field, column])));
189
188
  }
190
189
  /**
191
- * The column each field of the model and of the variant `variantName` maps, keyed by field name. Without a variant, the model's fields alone.
190
+ * The column each field of the model and of the variant `variantValue` maps, keyed by field name. Without a variant, the model's fields alone.
192
191
  *
193
192
  * A surface accepts a variant's field only when it can place that field's column on the variant's table. A collection narrowed to a variant reads that variant's table, so `select`, the `where` and `orderBy` accessor and a variant create accept the narrowed variant's fields. A collection that is not narrowed reads the base table only, so only `select`, whose polymorphic projection joins each variant's table, accepts variant fields there (`getModelAndEveryVariantFieldColumns`).
194
193
  */
195
- function getModelAndVariantFieldColumns(contract, namespaceId, modelName, variantName) {
194
+ function getModelAndVariantFieldColumns(contract, namespaceId, modelName, variantValue) {
196
195
  return cachedFor(contract, [
197
196
  "modelAndVariantFieldColumns",
198
197
  namespaceId,
199
198
  modelName,
200
- variantName ?? null
199
+ variantValue ?? null
201
200
  ], () => ({
202
- ...variantName === void 0 ? {} : getOwnFieldColumns(contract, namespaceId, variantName),
201
+ ...variantValue === void 0 ? {} : getOwnFieldColumns(contract, ...addressedModel(contract, namespaceId, modelName, variantValue)),
203
202
  ...getModelFieldColumns(contract, namespaceId, modelName)
204
203
  }));
205
204
  }
@@ -222,7 +221,7 @@ function getModelAndEveryVariantFieldColumns(contract, namespaceId, modelName) {
222
221
  };
223
222
  add(getModelFieldColumns(contract, namespaceId, modelName));
224
223
  const modelFields = new Set(Object.keys(columns));
225
- for (const variant of resolvePolymorphismInfo(contract, namespaceId, modelName)?.variants.keys() ?? []) add(Object.fromEntries(Object.entries(getOwnFieldColumns(contract, namespaceId, variant)).filter(([field]) => !modelFields.has(field))));
224
+ for (const variant of resolvePolymorphismInfo(contract, namespaceId, modelName)?.variants.values() ?? []) add(Object.fromEntries(Object.entries(getOwnFieldColumns(contract, variant.namespaceId, variant.modelName)).filter(([field]) => !modelFields.has(field))));
226
225
  return columns;
227
226
  });
228
227
  }
@@ -277,22 +276,28 @@ function getUnmappedColumns(contract, namespaceId, modelName) {
277
276
  namespaceId,
278
277
  modelName
279
278
  ], () => {
280
- const root = hierarchyRootName(contract, namespaceId, modelName);
281
- const rootTable = domainModelTableInNamespace(contract, namespaceId, root);
279
+ const root = hierarchyRoot(contract, namespaceId, modelName);
280
+ const rootTable = domainModelTableInNamespace(contract, root.namespaceId, root.modelName);
282
281
  if (rootTable === void 0) return [];
283
- const variants = resolvePolymorphismInfo(contract, namespaceId, root)?.variants.values();
284
- return [.../* @__PURE__ */ new Set([rootTable, ...[...variants ?? []].map((variant) => variant.table)])].flatMap((table) => {
285
- const read = new Set(getColumnsReadOnTable(contract, namespaceId, root, table));
286
- return getAllTableColumns(contract, namespaceId, table).filter((column) => !read.has(column)).map((column) => ({
287
- table,
282
+ const polymorphism = resolvePolymorphismInfo(contract, root.namespaceId, root.modelName);
283
+ return [{
284
+ ...root,
285
+ table: rootTable
286
+ }, ...polymorphism?.mtiVariants ?? []].flatMap((model) => {
287
+ const read = new Set(getColumnsReadOnTable(contract, model.namespaceId, model.modelName, model.table));
288
+ return getAllTableColumns(contract, model.namespaceId, model.table).filter((column) => !read.has(column)).map((column) => ({
289
+ table: model.table,
288
290
  column
289
291
  }));
290
292
  });
291
293
  });
292
294
  }
293
- function hierarchyRootName(contract, namespaceId, modelName) {
295
+ function hierarchyRoot(contract, namespaceId, modelName) {
294
296
  const base = modelOf(contract, namespaceId, modelName)?.base;
295
- return base === void 0 || base.namespace !== namespaceId ? modelName : hierarchyRootName(contract, namespaceId, base.model);
297
+ return base === void 0 ? {
298
+ namespaceId,
299
+ modelName
300
+ } : hierarchyRoot(contract, base.namespace, base.model);
296
301
  }
297
302
  /**
298
303
  * The column a field name the contract itself gives maps among the model's own and inherited fields, such as a relation's join field or a discriminator. The contract was validated, so a name that is not a field is an internal error.
@@ -321,10 +326,10 @@ function resolveRelationTargetColumns(contract, relation) {
321
326
  /**
322
327
  * The fields a multi-table variant declares, with the table and column each maps, which is the variant's own table the read path joins. A single-table variant's columns are on the base table, and inherited fields are on the base model's table, so neither appears here.
323
328
  */
324
- function resolveVariantFieldColumns(contract, namespaceId, baseModelName, variantName) {
325
- const variant = resolvePolymorphismInfo(contract, namespaceId, baseModelName)?.variants.get(variantName);
329
+ function resolveVariantFieldColumns(contract, namespaceId, baseModelName, variantValue) {
330
+ const variant = resolvePolymorphismInfo(contract, namespaceId, baseModelName)?.variants.get(variantValue);
326
331
  if (variant?.strategy !== "mti") return {};
327
- return Object.fromEntries(Object.entries(getModelFields(contract, namespaceId, variant.modelName)).filter(([, field]) => field.table === variant.table));
332
+ return Object.fromEntries(Object.entries(getModelFields(contract, variant.namespaceId, variant.modelName)).filter(([, field]) => field.namespaceId === variant.namespaceId && field.table === variant.table));
328
333
  }
329
334
  /** Every column of a table, in table order. */
330
335
  function getAllTableColumns(contract, namespaceId, tableName) {
@@ -338,55 +343,59 @@ function getAllTableColumns(contract, namespaceId, tableName) {
338
343
  } });
339
344
  }
340
345
  }
341
- function isMultiTableVariantTable(contract, namespaceId, modelName, tableName) {
346
+ function isMultiTableVariantTable(contract, namespaceId, modelName, tableNamespaceId, tableName) {
342
347
  const base = modelOf(contract, namespaceId, modelName)?.base;
343
- return base !== void 0 && domainModelTableInNamespace(contract, namespaceId, modelName) === tableName && domainModelTableInNamespace(contract, base.namespace, base.model) !== tableName;
348
+ return base !== void 0 && namespaceId === tableNamespaceId && domainModelTableInNamespace(contract, namespaceId, modelName) === tableName && (base.namespace !== tableNamespaceId || domainModelTableInNamespace(contract, base.namespace, base.model) !== tableName);
344
349
  }
345
350
  /**
346
351
  * The columns of `tableName` a query on `modelName` reads, in table order: the columns on that table of the model's own and inherited fields and of its variants' fields, and, on a multi-table variant's table, the key the variant inherits. Any other column of the table is storage the model does not map, and the ORM never reads it into a row.
347
352
  */
348
- function getColumnsReadOnTable(contract, namespaceId, modelName, tableName) {
353
+ function getColumnsReadOnTable(contract, namespaceId, modelName, tableName, tableNamespaceId = namespaceId) {
349
354
  return cachedFor(contract, [
350
355
  "columnsReadOnTable",
351
356
  namespaceId,
352
357
  modelName,
358
+ tableNamespaceId,
353
359
  tableName
354
360
  ], () => {
355
361
  const read = /* @__PURE__ */ new Set();
356
- const addFieldsOnTable = (name) => {
357
- for (const field of Object.values(getModelFields(contract, namespaceId, name))) if (field.table === tableName) read.add(field.column);
362
+ const addFieldsOnTable = (modelNamespaceId, name) => {
363
+ for (const field of Object.values(getModelFields(contract, modelNamespaceId, name))) if (field.namespaceId === tableNamespaceId && field.table === tableName) read.add(field.column);
358
364
  };
359
365
  const addInheritedKey = () => {
360
- for (const column of resolvePrimaryKeyColumns(contract, namespaceId, tableName)) read.add(column);
366
+ for (const column of resolvePrimaryKeyColumns(contract, tableNamespaceId, tableName)) read.add(column);
361
367
  };
362
- addFieldsOnTable(modelName);
363
- if (isMultiTableVariantTable(contract, namespaceId, modelName, tableName)) addInheritedKey();
368
+ addFieldsOnTable(namespaceId, modelName);
369
+ if (isMultiTableVariantTable(contract, namespaceId, modelName, tableNamespaceId, tableName)) addInheritedKey();
364
370
  const variants = resolvePolymorphismInfo(contract, namespaceId, modelName)?.variants.values();
365
371
  for (const variant of variants ?? []) {
366
- if (variant.table !== tableName) continue;
367
- addFieldsOnTable(variant.modelName);
372
+ if (variant.namespaceId !== tableNamespaceId || variant.table !== tableName) continue;
373
+ addFieldsOnTable(variant.namespaceId, variant.modelName);
368
374
  if (variant.strategy === "mti") addInheritedKey();
369
375
  }
370
- return getAllTableColumns(contract, namespaceId, tableName).filter((column) => read.has(column));
376
+ return getAllTableColumns(contract, tableNamespaceId, tableName).filter((column) => read.has(column));
371
377
  });
372
378
  }
373
- /** The model a query or write addresses: the variant it is narrowed to, otherwise the collection's model. */
374
- function addressedModelName(modelName, variantName) {
375
- return variantName ?? modelName;
379
+ /** The namespace and name of the model a query or write addresses: the variant it is narrowed to, otherwise the collection's model. */
380
+ function addressedModel(contract, namespaceId, modelName, variantValue) {
381
+ const variant = variantValue === void 0 ? void 0 : resolvePolymorphismInfo(contract, namespaceId, modelName)?.variants.get(variantValue);
382
+ return variant === void 0 ? [namespaceId, modelName] : [variant.namespaceId, variant.modelName];
376
383
  }
377
- function resolveIncludeRelation(contract, namespaceId, baseModelName, relationName, variantName) {
384
+ function resolveIncludeRelation(contract, namespaceId, baseModelName, relationName, variantValue) {
378
385
  const polymorphism = resolvePolymorphismInfo(contract, namespaceId, baseModelName);
379
- const variant = variantName === void 0 ? void 0 : polymorphism?.variants.get(variantName);
386
+ const variant = variantValue === void 0 ? void 0 : polymorphism?.variants.get(variantValue);
387
+ let declaringNamespaceId = namespaceId;
380
388
  let declaringModelName = baseModelName;
381
- let localVariantName;
389
+ let localVariantValue;
382
390
  let relation;
383
391
  if (variant !== void 0) {
384
- const variantRelations = resolveModelRelations(contract, namespaceId, variant.modelName);
392
+ const variantRelations = resolveModelRelations(contract, variant.namespaceId, variant.modelName);
385
393
  const candidate = Object.hasOwn(variantRelations, relationName) ? variantRelations[relationName] : void 0;
386
394
  if (candidate !== void 0) {
387
395
  relation = candidate;
396
+ declaringNamespaceId = variant.namespaceId;
388
397
  declaringModelName = variant.modelName;
389
- localVariantName = variant.strategy === "mti" ? variant.modelName : void 0;
398
+ localVariantValue = variant.strategy === "mti" ? variant.value : void 0;
390
399
  }
391
400
  }
392
401
  const baseRelations = resolveModelRelations(contract, namespaceId, baseModelName);
@@ -397,7 +406,7 @@ function resolveIncludeRelation(contract, namespaceId, baseModelName, relationNa
397
406
  } });
398
407
  const { localFields, targetFields } = relation.on;
399
408
  if (localFields.length === 0 || localFields.length !== targetFields.length) throw new InternalError(`Relation '${relationName}' on model '${declaringModelName}' has incomplete join metadata: ${localFields.length} local field(s), ${targetFields.length} target field(s)`);
400
- const localColumns = localFields.map((field) => columnOfContractField(contract, namespaceId, declaringModelName, field));
409
+ const localColumns = localFields.map((field) => columnOfContractField(contract, declaringNamespaceId, declaringModelName, field));
401
410
  const targetColumns = resolveRelationTargetColumns(contract, relation);
402
411
  const relatedTableName = resolveModelTableName(contract, relation.toNamespace, relation.to);
403
412
  let through;
@@ -413,7 +422,7 @@ function resolveIncludeRelation(contract, namespaceId, baseModelName, relationNa
413
422
  relatedModelName: relation.to,
414
423
  relatedNamespaceId: relation.toNamespace,
415
424
  relatedTableName,
416
- ...ifDefined("localVariantName", localVariantName),
425
+ ...ifDefined("localVariantValue", localVariantValue),
417
426
  targetColumns,
418
427
  localColumns,
419
428
  cardinality: relation.cardinality,
@@ -519,7 +528,8 @@ function hasCompleteUniqueKey(contract, namespaceId, modelName, criterion) {
519
528
  for (const [fieldName, value] of Object.entries(criterion)) {
520
529
  if (value === void 0) continue;
521
530
  const column = columnOfCallerField(contract, namespaceId, fieldColumns, modelName, fieldName);
522
- if (value !== null && !isExpression(value) && fields[fieldName]?.table === tableName) columnsWithValue.add(column);
531
+ const field = fields[fieldName];
532
+ if (value !== null && !isExpression(value) && field?.namespaceId === namespaceId && field.table === tableName) columnsWithValue.add(column);
523
533
  }
524
534
  return resolveUniqueKeyColumnSets(contract, namespaceId, tableName).some((columns) => columns.every((column) => columnsWithValue.has(column)));
525
535
  }
@@ -673,11 +683,11 @@ function mapFieldsToColumns(contract, namespaceId, modelName, fieldNames) {
673
683
  return fieldNames.map((fieldName) => columnOfCallerField(contract, namespaceId, fieldColumns, modelName, fieldName));
674
684
  }
675
685
  /** The columns a `select` names: the narrowed variant's fields too, or, when the collection is not narrowed, every variant's fields, each name reading every column a variant maps it to. See `getModelAndVariantFieldColumns` for why `select` accepts more than other surfaces. */
676
- function mapSelectedFieldsToColumns(contract, namespaceId, modelName, variantName, fieldNames) {
677
- const addressed = addressedModelName(modelName, variantName);
678
- if (variantName !== void 0) {
679
- const fieldColumns = getModelAndVariantFieldColumns(contract, namespaceId, modelName, variantName);
680
- return fieldNames.map((fieldName) => columnOfCallerField(contract, namespaceId, fieldColumns, addressed, fieldName));
686
+ function mapSelectedFieldsToColumns(contract, namespaceId, modelName, variantValue, fieldNames) {
687
+ const [addressedNamespaceId, addressed] = addressedModel(contract, namespaceId, modelName, variantValue);
688
+ if (variantValue !== void 0) {
689
+ const fieldColumns = getModelAndVariantFieldColumns(contract, namespaceId, modelName, variantValue);
690
+ return fieldNames.map((fieldName) => columnOfCallerField(contract, addressedNamespaceId, fieldColumns, addressed, fieldName));
681
691
  }
682
692
  const fieldColumns = getModelAndEveryVariantFieldColumns(contract, namespaceId, modelName);
683
693
  return fieldNames.flatMap((fieldName) => {
@@ -746,8 +756,8 @@ function createModelTables(contract, scope, namespaceId, modelName, tableName) {
746
756
  });
747
757
  const variants = /* @__PURE__ */ new Map();
748
758
  const mtiVariants = resolvePolymorphismInfo(contract, namespaceId, modelName)?.mtiVariants ?? [];
749
- for (const variant of mtiVariants) variants.set(variant.modelName, scope.aliasTable({
750
- namespaceId,
759
+ for (const variant of mtiVariants) variants.set(variant.value, scope.aliasTable({
760
+ namespaceId: variant.namespaceId,
751
761
  tableName: variant.table
752
762
  }));
753
763
  return {
@@ -783,9 +793,9 @@ function withScopeCopy(tables) {
783
793
  scope: tables.scope.copy()
784
794
  };
785
795
  }
786
- function requireVariantTable(tables, variantModelName) {
787
- const variantTable = tables.variants.get(variantModelName);
788
- if (variantTable === void 0) throw new InternalError(`Collection state has no aliased table for variant "${variantModelName}"`);
796
+ function requireVariantTable(tables, variantValue) {
797
+ const variantTable = tables.variants.get(variantValue);
798
+ if (variantTable === void 0) throw new InternalError(`Collection state has no aliased table for variant "${variantValue}"`);
789
799
  return variantTable;
790
800
  }
791
801
  function tableAliases(tables) {
@@ -813,8 +823,8 @@ function createStorageRowMapper(contract, namespaceId, modelName) {
813
823
  return (row) => mapKnownColumnNames(row, columnToField);
814
824
  }
815
825
  const mergedColumnToFieldCache = /* @__PURE__ */ new WeakMap();
816
- function getMergedColumnToFieldMap(contract, namespaceId, baseModelName, variantModelName, variantTable) {
817
- const cacheKey = `${namespaceId}:${baseModelName}:${variantModelName}:${variantTable?.alias ?? ""}`;
826
+ function getMergedColumnToFieldMap(contract, namespaceId, baseModelName, variant, variantTable) {
827
+ const cacheKey = `${namespaceId}:${baseModelName}:${variant.value}:${variantTable?.alias ?? ""}`;
818
828
  let perContract = mergedColumnToFieldCache.get(contract);
819
829
  if (!perContract) {
820
830
  perContract = /* @__PURE__ */ new Map();
@@ -823,7 +833,7 @@ function getMergedColumnToFieldMap(contract, namespaceId, baseModelName, variant
823
833
  const cached = perContract.get(cacheKey);
824
834
  if (cached) return cached;
825
835
  const baseMap = getModelColumnFields(contract, namespaceId, baseModelName);
826
- const variantMap = getOwnColumnFields(contract, namespaceId, variantModelName);
836
+ const variantMap = getOwnColumnFields(contract, variant.namespaceId, variant.modelName);
827
837
  const merged = { ...baseMap };
828
838
  for (const [col, field] of Object.entries(variantMap)) if (variantTable) merged[variantColumnLabel(variantTable, col)] = field;
829
839
  else merged[col] = field;
@@ -831,28 +841,29 @@ function getMergedColumnToFieldMap(contract, namespaceId, baseModelName, variant
831
841
  return merged;
832
842
  }
833
843
  function variantTableOf(tables, variant) {
834
- return variant.strategy === "mti" ? requireVariantTable(tables, variant.modelName) : void 0;
844
+ return variant.strategy === "mti" ? requireVariantTable(tables, variant.value) : void 0;
835
845
  }
836
- function mapPolymorphicRow(contract, namespaceId, baseModelName, polyInfo, tables, row, variantName) {
846
+ function mapPolymorphicRow(contract, namespaceId, baseModelName, polyInfo, tables, row, variantValue) {
837
847
  const discriminatorValue = row[polyInfo.discriminatorColumn] ?? row["__prisma_polymorphic_discriminator"];
838
- const variant = variantName ? polyInfo.variants.get(variantName) : typeof discriminatorValue === "string" ? polyInfo.variantsByValue.get(discriminatorValue) : void 0;
848
+ const selectedValue = variantValue ?? discriminatorValue;
849
+ const variant = typeof selectedValue === "string" ? polyInfo.variants.get(selectedValue) : void 0;
839
850
  if (!variant) return mapKnownColumnNames(row, getModelColumnFields(contract, namespaceId, baseModelName));
840
- return mapKnownColumnNames(row, getMergedColumnToFieldMap(contract, namespaceId, baseModelName, variant.modelName, variantTableOf(tables, variant)));
851
+ return mapKnownColumnNames(row, getMergedColumnToFieldMap(contract, namespaceId, baseModelName, variant, variantTableOf(tables, variant)));
841
852
  }
842
- function createPolymorphicRowMapper(contract, namespaceId, baseModelName, polyInfo, tables, variantName) {
853
+ function createPolymorphicRowMapper(contract, namespaceId, baseModelName, polyInfo, tables, variantValue) {
843
854
  const baseMapper = captureColumnMapper(() => getModelColumnFields(contract, namespaceId, baseModelName));
844
855
  const mappersByValue = /* @__PURE__ */ new Map();
845
856
  let pinnedMapper = baseMapper;
846
- for (const [name, variant] of polyInfo.variants) {
847
- if (variantName && name !== variantName) continue;
848
- const mapper = captureColumnMapper(() => getMergedColumnToFieldMap(contract, namespaceId, baseModelName, variant.modelName, variantTableOf(tables, variant)));
849
- if (variantName) pinnedMapper = mapper;
850
- for (const [value, candidate] of polyInfo.variantsByValue) if (candidate === variant) mappersByValue.set(value, mapper);
857
+ for (const [value, variant] of polyInfo.variants) {
858
+ if (variantValue && value !== variantValue) continue;
859
+ const mapper = captureColumnMapper(() => getMergedColumnToFieldMap(contract, namespaceId, baseModelName, variant, variantTableOf(tables, variant)));
860
+ if (variantValue) pinnedMapper = mapper;
861
+ mappersByValue.set(value, mapper);
851
862
  }
852
863
  const discriminatorColumn = polyInfo.discriminatorColumn;
853
864
  return (row) => {
854
865
  const value = row[discriminatorColumn] ?? row["__prisma_polymorphic_discriminator"];
855
- return (variantName ? pinnedMapper : typeof value === "string" ? mappersByValue.get(value) ?? baseMapper : baseMapper)(row);
866
+ return (variantValue ? pinnedMapper : typeof value === "string" ? mappersByValue.get(value) ?? baseMapper : baseMapper)(row);
856
867
  };
857
868
  }
858
869
  function captureColumnMapper(resolve) {
@@ -1241,10 +1252,10 @@ function buildPrimaryKeyJoinOn(left, right, primaryKeyColumns) {
1241
1252
  if (primaryKeyColumns.length === 1 && firstColumn !== void 0) return EqColJoinOn.of(left.column(firstColumn), right.column(firstColumn));
1242
1253
  return AndExpr.of(primaryKeyColumns.map((column) => BinaryExpr.eq(left.column(column), right.column(column))));
1243
1254
  }
1244
- function buildMtiJoins(contract, tables, polyInfo, variantName, selectedColumnsByVariant) {
1255
+ function buildMtiJoins(contract, tables, polyInfo, variantValue, selectedColumnsByVariant) {
1245
1256
  const joins = [];
1246
1257
  const projection = [];
1247
- const variantsToJoin = variantName ? polyInfo.mtiVariants.filter((v) => v.modelName === variantName) : polyInfo.mtiVariants;
1258
+ const variantsToJoin = variantValue ? polyInfo.mtiVariants.filter((v) => v.value === variantValue) : polyInfo.mtiVariants;
1248
1259
  if (variantsToJoin.length === 0) return {
1249
1260
  joins,
1250
1261
  projection
@@ -1252,12 +1263,12 @@ function buildMtiJoins(contract, tables, polyInfo, variantName, selectedColumnsB
1252
1263
  const { root } = tables;
1253
1264
  const pkColumns = resolvePrimaryKeyColumns(contract, root.storage.namespaceId, root.storage.tableName);
1254
1265
  for (const variant of variantsToJoin) {
1255
- const variantTable = requireVariantTable(tables, variant.modelName);
1266
+ const variantTable = requireVariantTable(tables, variant.value);
1256
1267
  const joinOn = buildPrimaryKeyJoinOn(root, variantTable, pkColumns);
1257
- joins.push(variantName ? JoinAst.inner(variantTable.tableSource(contract), joinOn) : JoinAst.left(variantTable.tableSource(contract), joinOn));
1268
+ joins.push(variantValue ? JoinAst.inner(variantTable.tableSource(contract), joinOn) : JoinAst.left(variantTable.tableSource(contract), joinOn));
1258
1269
  const { namespaceId, tableName } = variantTable.storage;
1259
1270
  const variantColumns = getColumnsReadOnTable(contract, namespaceId, variant.modelName, tableName);
1260
- const selectedVariantColumns = selectedColumnsByVariant?.get(variant.modelName);
1271
+ const selectedVariantColumns = selectedColumnsByVariant?.get(variant.value);
1261
1272
  for (const col of variantColumns) {
1262
1273
  if (pkColumns.includes(col)) continue;
1263
1274
  if (selectedColumnsByVariant !== void 0 && selectedVariantColumns?.has(col) !== true) continue;
@@ -1280,7 +1291,7 @@ function hasEntries(value) {
1280
1291
  function buildAggregateInput(contract, state, modelName, projection) {
1281
1292
  const { root } = state.tables;
1282
1293
  const polyInfo = modelName ? resolvePolymorphismInfo(contract, root.storage.namespaceId, modelName) : void 0;
1283
- const variantJoins = polyInfo && polyInfo.mtiVariants.length > 0 ? buildMtiJoins(contract, state.tables, polyInfo, state.variantName, void 0).joins : [];
1294
+ const variantJoins = polyInfo && polyInfo.mtiVariants.length > 0 ? buildMtiJoins(contract, state.tables, polyInfo, state.variantValue, void 0).joins : [];
1284
1295
  const where = buildStateWhere(contract, state);
1285
1296
  const hiddenOrders = hasEntries(state.distinct) ? projectExpressionOrders(root, state.orderBy) : void 0;
1286
1297
  const { source, where: effectiveWhere } = buildDedupedTableSource(contract, state, where, [...projection, ...hiddenOrders?.projection ?? []], variantJoins);
@@ -1330,7 +1341,7 @@ function emptyState(tables) {
1330
1341
  selectedFields: void 0,
1331
1342
  limit: void 0,
1332
1343
  offset: void 0,
1333
- variantName: void 0,
1344
+ variantValue: void 0,
1334
1345
  locking: void 0,
1335
1346
  annotations: /* @__PURE__ */ new Map()
1336
1347
  };
@@ -1537,7 +1548,7 @@ function compileAggregate(contract, aggregates, state, aggregateSpec, modelName)
1537
1548
  return buildOrmQueryPlan(contract, ast, params);
1538
1549
  }
1539
1550
  const polyInfo = modelName ? resolvePolymorphismInfo(contract, namespaceId, modelName) : void 0;
1540
- const variantJoins = polyInfo && polyInfo.mtiVariants.length > 0 ? buildMtiJoins(contract, state.tables, polyInfo, state.variantName, void 0).joins : [];
1551
+ const variantJoins = polyInfo && polyInfo.mtiVariants.length > 0 ? buildMtiJoins(contract, state.tables, polyInfo, state.variantValue, void 0).joins : [];
1541
1552
  const where = buildStateWhere(contract, state);
1542
1553
  const projection = entries.map(([alias, selector]) => {
1543
1554
  const { expr, codec } = toAggregateProjection(contract, aggregates, root, selector);
@@ -1579,8 +1590,8 @@ function compileGroupedAggregate(contract, aggregates, preGroupState, groupByCol
1579
1590
  ast = SelectAst.from(source).withProjection(projection).withGroupBy(groupByColumns.map((column) => root.column(column)));
1580
1591
  } else {
1581
1592
  const polyInfo = modelName ? resolvePolymorphismInfo(contract, namespaceId, modelName) : void 0;
1582
- const { tables, variantName } = preGroupState;
1583
- const variantJoins = polyInfo && polyInfo.mtiVariants.length > 0 ? buildMtiJoins(contract, tables, polyInfo, variantName, void 0).joins : [];
1593
+ const { tables, variantValue } = preGroupState;
1594
+ const variantJoins = polyInfo && polyInfo.mtiVariants.length > 0 ? buildMtiJoins(contract, tables, polyInfo, variantValue, void 0).joins : [];
1584
1595
  ast = SelectAst.from(root.tableSource(contract)).withProjection(projection).withGroupBy(groupByColumns.map((column) => root.column(column)));
1585
1596
  if (variantJoins.length > 0) ast = ast.withJoins(variantJoins);
1586
1597
  const where = buildStateWhere(contract, preGroupState);
@@ -1676,8 +1687,8 @@ function stripUndefinedValues(row) {
1676
1687
  for (const [key, value] of Object.entries(row)) if (value !== void 0) result[key] = value;
1677
1688
  return result;
1678
1689
  }
1679
- function buildCountMutationWhere(contract, tables, filters, variantName) {
1680
- const variantTable = variantName === void 0 ? void 0 : tables.variants.get(variantName);
1690
+ function buildCountMutationWhere(contract, tables, filters, variantValue) {
1691
+ const variantTable = variantValue === void 0 ? void 0 : tables.variants.get(variantValue);
1681
1692
  if (variantTable === void 0) return combineWhereExprs(filters);
1682
1693
  const { root } = tables;
1683
1694
  const pkColumns = resolvePrimaryKeyColumns(contract, root.storage.namespaceId, root.storage.tableName);
@@ -1739,10 +1750,10 @@ function compileUpdateReturning(contract, modelName, tables, setValues, filters,
1739
1750
  const { params } = deriveParamsFromAst(ast);
1740
1751
  return buildOrmQueryPlan(contract, ast, params);
1741
1752
  }
1742
- function compileUpdateCount(contract, tables, setValues, filters, variantName) {
1753
+ function compileUpdateCount(contract, tables, setValues, filters, variantValue) {
1743
1754
  const { root } = tables;
1744
1755
  const { namespaceId, tableName } = root.storage;
1745
- const where = buildCountMutationWhere(contract, tables, filters, variantName);
1756
+ const where = buildCountMutationWhere(contract, tables, filters, variantValue);
1746
1757
  const { assignments } = toParamAssignments(contract, namespaceId, tableName, setValues);
1747
1758
  let ast = UpdateAst.table(root.tableSource(contract)).withSet(assignments);
1748
1759
  if (where) ast = ast.withWhere(where);
@@ -1757,8 +1768,8 @@ function compileDeleteReturning(contract, modelName, tables, filters, returningC
1757
1768
  const { params } = deriveParamsFromAst(ast);
1758
1769
  return buildOrmQueryPlan(contract, ast, params);
1759
1770
  }
1760
- function compileDeleteCount(contract, tables, filters, variantName) {
1761
- const where = buildCountMutationWhere(contract, tables, filters, variantName);
1771
+ function compileDeleteCount(contract, tables, filters, variantValue) {
1772
+ const where = buildCountMutationWhere(contract, tables, filters, variantValue);
1762
1773
  let ast = DeleteAst.from(tables.root.tableSource(contract));
1763
1774
  if (where) ast = ast.withWhere(where);
1764
1775
  const { params } = deriveParamsFromAst(ast);
@@ -1833,9 +1844,9 @@ function jsonEntryProjection(value, identity) {
1833
1844
  if (identity.document === true) return new JsonDocumentProjection(value);
1834
1845
  return new NativeJsonValueProjection(value);
1835
1846
  }
1836
- function buildProjection(contract, modelName, table, selectedFields, projectedThrough) {
1847
+ function buildProjection(contract, model, table, selectedFields, projectedThrough) {
1837
1848
  const { namespaceId, tableName } = table.storage;
1838
- return (selectedFields !== void 0 ? [...selectedFields] : getColumnsReadOnTable(contract, namespaceId, modelName, tableName)).map((column) => ProjectionItem.of(column, projectedThrough === void 0 ? table.column(column) : ColumnRef.of(projectedThrough, column), codecRefForStorageColumn(contract.storage, namespaceId, tableName, column)));
1849
+ return (selectedFields !== void 0 ? [...selectedFields] : getColumnsReadOnTable(contract, ...model, tableName, namespaceId)).map((column) => ProjectionItem.of(column, projectedThrough === void 0 ? table.column(column) : ColumnRef.of(projectedThrough, column), codecRefForStorageColumn(contract.storage, namespaceId, tableName, column)));
1839
1850
  }
1840
1851
  function appendUnique(values, value) {
1841
1852
  if (!values.includes(value)) values.push(value);
@@ -1849,7 +1860,7 @@ function resolvePolymorphicProjectionSelection(contract, namespaceId, modelName,
1849
1860
  const baseColumnToField = getModelColumnFields(contract, namespaceId, modelName);
1850
1861
  const variantColumnMaps = Array.from(polyInfo.variants.values(), (variant) => ({
1851
1862
  variant,
1852
- columnToField: getOwnColumnFields(contract, namespaceId, variant.modelName)
1863
+ columnToField: getOwnColumnFields(contract, variant.namespaceId, variant.modelName)
1853
1864
  }));
1854
1865
  const baseSelectedFields = [];
1855
1866
  const selectedMtiColumnsByVariant = /* @__PURE__ */ new Map();
@@ -1866,10 +1877,10 @@ function resolvePolymorphicProjectionSelection(contract, namespaceId, modelName,
1866
1877
  appendUnique(baseSelectedFields, column);
1867
1878
  continue;
1868
1879
  }
1869
- let selectedColumns = selectedMtiColumnsByVariant.get(variant.modelName);
1880
+ let selectedColumns = selectedMtiColumnsByVariant.get(variant.value);
1870
1881
  if (selectedColumns === void 0) {
1871
1882
  selectedColumns = /* @__PURE__ */ new Set();
1872
- selectedMtiColumnsByVariant.set(variant.modelName, selectedColumns);
1883
+ selectedMtiColumnsByVariant.set(variant.value, selectedColumns);
1873
1884
  }
1874
1885
  selectedColumns.add(column);
1875
1886
  }
@@ -1878,7 +1889,7 @@ function resolvePolymorphicProjectionSelection(contract, namespaceId, modelName,
1878
1889
  return {
1879
1890
  baseSelectedFields,
1880
1891
  selectedMtiColumnsByVariant,
1881
- needsHiddenDiscriminator: state.variantName === void 0 && hasVariantOwnedSelection && !baseSelectedFields.includes(polyInfo.discriminatorColumn)
1892
+ needsHiddenDiscriminator: state.variantValue === void 0 && hasVariantOwnedSelection && !baseSelectedFields.includes(polyInfo.discriminatorColumn)
1882
1893
  };
1883
1894
  }
1884
1895
  function buildHiddenDiscriminatorProjection(contract, table, polyInfo, needed) {
@@ -1917,7 +1928,7 @@ function buildIncludeJoinExpr(include, child, parentLocalRefs) {
1917
1928
  return joinExprs.length === 1 ? firstExpr : AndExpr.of(joinExprs);
1918
1929
  }
1919
1930
  function localTable(tables, include) {
1920
- return include.localVariantName === void 0 ? tables.root : requireVariantTable(tables, include.localVariantName);
1931
+ return include.localVariantValue === void 0 ? tables.root : requireVariantTable(tables, include.localVariantValue);
1921
1932
  }
1922
1933
  function resolveParentLocalRefs(parent, include, localColumns) {
1923
1934
  const local = localTable(parent.tables, include);
@@ -1960,7 +1971,7 @@ function buildChildPolymorphismJoinsAndProjection(contract, include) {
1960
1971
  baseSelectedFields: include.nested.selectedFields
1961
1972
  };
1962
1973
  const selection = resolvePolymorphicProjectionSelection(contract, include.relatedNamespaceId, include.relatedModelName, polyInfo, include.nested);
1963
- const { joins, projection } = buildMtiJoins(contract, include.nested.tables, polyInfo, include.nested.variantName, selection.selectedMtiColumnsByVariant);
1974
+ const { joins, projection } = buildMtiJoins(contract, include.nested.tables, polyInfo, include.nested.variantValue, selection.selectedMtiColumnsByVariant);
1964
1975
  return {
1965
1976
  joins,
1966
1977
  projection,
@@ -1972,8 +1983,8 @@ function buildRequiredMtiJoinKeyProjection(contract, include) {
1972
1983
  const aliases = /* @__PURE__ */ new Set();
1973
1984
  const projection = [];
1974
1985
  for (const nested of include.nested.includes) {
1975
- if (nested.localVariantName === void 0) continue;
1976
- const variantTable = requireVariantTable(include.nested.tables, nested.localVariantName);
1986
+ if (nested.localVariantValue === void 0) continue;
1987
+ const variantTable = requireVariantTable(include.nested.tables, nested.localVariantValue);
1977
1988
  for (const column of localColumnsForRowInclude(nested)) {
1978
1989
  const alias = variantColumnLabel(variantTable, column);
1979
1990
  if (aliases.has(alias)) continue;
@@ -2054,7 +2065,7 @@ function buildIncludeChildRowsSelect(contract, aggregates, scope, parent, includ
2054
2065
  junctionJoins
2055
2066
  });
2056
2067
  const polyJoinsAndProjection = buildChildPolymorphismJoinsAndProjection(contract, include);
2057
- const scalarProjection = buildProjection(contract, addressedModelName(include.relatedModelName, include.nested.variantName), child, polyJoinsAndProjection.baseSelectedFields);
2068
+ const scalarProjection = buildProjection(contract, addressedModel(contract, include.relatedNamespaceId, include.relatedModelName, include.nested.variantValue), child, polyJoinsAndProjection.baseSelectedFields);
2058
2069
  const nestedProjections = buildNestedIncludeProjections(contract, aggregates, scope, { tables: childState.tables }, childState.includes);
2059
2070
  const childProjection = [
2060
2071
  ...scalarProjection,
@@ -2092,7 +2103,7 @@ function buildDistinctNonLeafChildRowsSelect(options) {
2092
2103
  const { contract, aggregates, scope, include, rowsAlias, childOrderBy, hiddenOrderProjection, aggregateOrderBy, whereExpr, junctionJoins } = options;
2093
2104
  const childState = include.nested;
2094
2105
  const child = childState.tables.root;
2095
- const grandchildJoinColumns = Array.from(new Set(childState.includes.flatMap((nested) => nested.localVariantName === void 0 ? localColumnsForRowInclude(nested) : [])));
2106
+ const grandchildJoinColumns = Array.from(new Set(childState.includes.flatMap((nested) => nested.localVariantValue === void 0 ? localColumnsForRowInclude(nested) : [])));
2096
2107
  const { selectedForQuery } = augmentSelectionForJoinColumns(childState.selectedFields, grandchildJoinColumns);
2097
2108
  const visiblePolyProjection = buildChildPolymorphismJoinsAndProjection(contract, include);
2098
2109
  const queryPolyProjection = buildChildPolymorphismJoinsAndProjection(contract, {
@@ -2102,7 +2113,7 @@ function buildDistinctNonLeafChildRowsSelect(options) {
2102
2113
  selectedFields: selectedForQuery
2103
2114
  }
2104
2115
  });
2105
- const innerScalarProjection = buildProjection(contract, addressedModelName(include.relatedModelName, include.nested.variantName), child, queryPolyProjection.baseSelectedFields);
2116
+ const innerScalarProjection = buildProjection(contract, addressedModel(contract, include.relatedNamespaceId, include.relatedModelName, include.nested.variantValue), child, queryPolyProjection.baseSelectedFields);
2106
2117
  const innerMtiProjection = mergeProjectionByAlias(queryPolyProjection.projection, buildRequiredMtiJoinKeyProjection(contract, include));
2107
2118
  let baseInner = SelectAst.from(child.tableSource(contract)).withProjection([
2108
2119
  ...innerScalarProjection,
@@ -2125,7 +2136,7 @@ function buildDistinctNonLeafChildRowsSelect(options) {
2125
2136
  if (childState.limit !== void 0) innerSelect = innerSelect.withLimit(childState.limit);
2126
2137
  if (childState.offset !== void 0) innerSelect = innerSelect.withOffset(childState.offset);
2127
2138
  const distinctAlias = scope.alias(`${include.relationName}__distinct`);
2128
- const outerScalarProjection = buildProjection(contract, addressedModelName(include.relatedModelName, include.nested.variantName), child, visiblePolyProjection.baseSelectedFields, distinctAlias);
2139
+ const outerScalarProjection = buildProjection(contract, addressedModel(contract, include.relatedNamespaceId, include.relatedModelName, include.nested.variantValue), child, visiblePolyProjection.baseSelectedFields, distinctAlias);
2129
2140
  const outerNestedProjections = buildNestedIncludeProjections(contract, aggregates, scope, {
2130
2141
  tables: childState.tables,
2131
2142
  projectedThrough: distinctAlias
@@ -2321,9 +2332,9 @@ function buildSelectAst(contract, modelName, state, options) {
2321
2332
  assertDistinctOnCapability(contract, "distinctOn");
2322
2333
  assertDistinctOnCompatibleOrder(state.orderBy, state.distinctOn.length);
2323
2334
  }
2324
- const addressed = addressedModelName(modelName, state.variantName);
2335
+ const addressed = addressedModel(contract, namespaceId, modelName, state.variantValue);
2325
2336
  const projection = [...buildProjection(contract, addressed, root, state.selectedFields), ...options.includeProjection ?? []];
2326
- const { source: fromSource, where: effectiveWhere } = buildDedupedTableSource(contract, state, options.where ?? buildStateWhere(contract, state), getColumnsReadOnTable(contract, namespaceId, addressed, tableName).map((column) => ProjectionItem.of(column, root.column(column))));
2337
+ const { source: fromSource, where: effectiveWhere } = buildDedupedTableSource(contract, state, options.where ?? buildStateWhere(contract, state), getColumnsReadOnTable(contract, ...addressed, tableName, namespaceId).map((column) => ProjectionItem.of(column, root.column(column))));
2327
2338
  let ast = SelectAst.from(fromSource).withProjection(projection);
2328
2339
  if (effectiveWhere) ast = ast.withWhere(effectiveWhere);
2329
2340
  if (state.orderBy) ast = ast.withOrderBy(state.orderBy);
@@ -2345,7 +2356,7 @@ function buildRootPolymorphism(contract, state, modelName) {
2345
2356
  projection: []
2346
2357
  };
2347
2358
  const selection = resolvePolymorphicProjectionSelection(contract, namespaceId, modelName, polyInfo, state);
2348
- const mtiArtifacts = polyInfo.mtiVariants.length > 0 ? buildMtiJoins(contract, state.tables, polyInfo, state.variantName, selection.selectedMtiColumnsByVariant) : void 0;
2359
+ const mtiArtifacts = polyInfo.mtiVariants.length > 0 ? buildMtiJoins(contract, state.tables, polyInfo, state.variantValue, selection.selectedMtiColumnsByVariant) : void 0;
2349
2360
  return {
2350
2361
  projectionState: {
2351
2362
  ...state,
@@ -2406,7 +2417,7 @@ function describeExecutionRows(options) {
2406
2417
  const polyInfo = resolvePolymorphismInfo(contract, namespaceId, modelName);
2407
2418
  if (state.includes.length === 0) {
2408
2419
  const compiled = compileSelect(contract, modelName, state);
2409
- const mapper = polyInfo ? (rawRow) => blindCast(mapPolymorphicRow(contract, namespaceId, modelName, polyInfo, state.tables, rawRow, state.variantName)) : (rawRow) => blindCast(mapStorageRowToModelFields(contract, namespaceId, modelName, rawRow));
2420
+ const mapper = polyInfo ? (rawRow) => blindCast(mapPolymorphicRow(contract, namespaceId, modelName, polyInfo, state.tables, rawRow, state.variantValue)) : (rawRow) => blindCast(mapStorageRowToModelFields(contract, namespaceId, modelName, rawRow));
2410
2421
  return {
2411
2422
  plan: compiled,
2412
2423
  consume: (rows) => mapResultRows(rows, mapper)
@@ -2430,7 +2441,7 @@ function deferResolution(resolve) {
2430
2441
  function createPreparedMapper(contract, namespaceId, modelName, state) {
2431
2442
  const resolved = deferResolution(() => {
2432
2443
  const polyInfo = resolvePolymorphismInfo(contract, namespaceId, modelName);
2433
- return polyInfo ? createPolymorphicRowMapper(contract, namespaceId, modelName, polyInfo, state.tables, state.variantName) : createStorageRowMapper(contract, namespaceId, modelName);
2444
+ return polyInfo ? createPolymorphicRowMapper(contract, namespaceId, modelName, polyInfo, state.tables, state.variantValue) : createStorageRowMapper(contract, namespaceId, modelName);
2434
2445
  });
2435
2446
  return (row) => resolved()(row);
2436
2447
  }
@@ -2479,10 +2490,10 @@ function createPreparedIncludeConsumer(context, include) {
2479
2490
  const mapRow = createPreparedMapper(contract, include.relatedNamespaceId, include.relatedModelName, include.nested);
2480
2491
  const bindings = deferResolution(() => {
2481
2492
  const namespace = include.relatedNamespaceId;
2482
- const keys = new Set(getColumnsReadOnTable(contract, namespace, addressedModelName(include.relatedModelName, include.nested.variantName), include.relatedTableName));
2493
+ const keys = new Set(getColumnsReadOnTable(contract, ...addressedModel(contract, namespace, include.relatedModelName, include.nested.variantValue), include.relatedTableName, namespace));
2483
2494
  const polyInfo = resolvePolymorphismInfo(contract, namespace, include.relatedModelName);
2484
2495
  for (const variant of polyInfo?.mtiVariants ?? []) {
2485
- const variantTable = requireVariantTable(include.nested.tables, variant.modelName);
2496
+ const variantTable = requireVariantTable(include.nested.tables, variant.value);
2486
2497
  for (const column of getColumnsReadOnTable(contract, variantTable.storage.namespaceId, variant.modelName, variantTable.storage.tableName)) keys.add(variantColumnLabel(variantTable, column));
2487
2498
  }
2488
2499
  return new Map([...keys].map((key) => [key, deferResolution(() => resolveIncludedColumnBinding(contract, context, include, key))]));
@@ -2595,7 +2606,7 @@ function consumeIncludeRows(context, state, namespaceId, modelName, rows) {
2595
2606
  const parentRows = parentRowsRaw.map((row) => {
2596
2607
  return {
2597
2608
  raw: row,
2598
- mapped: polyInfo ? mapPolymorphicRow(contract, namespaceId, modelName, polyInfo, state.tables, row, state.variantName) : mapStorageRowToModelFields(contract, namespaceId, modelName, row)
2609
+ mapped: polyInfo ? mapPolymorphicRow(contract, namespaceId, modelName, polyInfo, state.tables, row, state.variantValue) : mapStorageRowToModelFields(contract, namespaceId, modelName, row)
2599
2610
  };
2600
2611
  });
2601
2612
  const bindings = /* @__PURE__ */ new WeakMap();
@@ -2688,7 +2699,7 @@ function decodeIncludePayload(contract, context, include, raw, bindings) {
2688
2699
  if (include.combine) return decodeCombineIncludePayload(contract, context, include, include.combine, raw, bindings);
2689
2700
  const rawChildren = parseIncludedRows(include, raw);
2690
2701
  const polyInfo = resolvePolymorphismInfo(contract, include.relatedNamespaceId, include.relatedModelName);
2691
- const mapChildRow = polyInfo ? (childRow) => mapPolymorphicRow(contract, include.relatedNamespaceId, include.relatedModelName, polyInfo, include.nested.tables, childRow, include.nested.variantName) : createStorageRowMapper(contract, include.relatedNamespaceId, include.relatedModelName);
2702
+ const mapChildRow = polyInfo ? (childRow) => mapPolymorphicRow(contract, include.relatedNamespaceId, include.relatedModelName, polyInfo, include.nested.tables, childRow, include.nested.variantValue) : createStorageRowMapper(contract, include.relatedNamespaceId, include.relatedModelName);
2692
2703
  let columns = bindings.get(include);
2693
2704
  if (!columns) {
2694
2705
  columns = /* @__PURE__ */ new Map();
@@ -2751,7 +2762,7 @@ function resolveIncludedColumnRef(contract, include, key) {
2751
2762
  const polyInfo = resolvePolymorphismInfo(contract, include.relatedNamespaceId, include.relatedModelName);
2752
2763
  if (!polyInfo) return;
2753
2764
  for (const variant of polyInfo.mtiVariants) {
2754
- const variantTable = requireVariantTable(include.nested.tables, variant.modelName);
2765
+ const variantTable = requireVariantTable(include.nested.tables, variant.value);
2755
2766
  const prefix = variantColumnLabelPrefix(variantTable);
2756
2767
  if (!key.startsWith(prefix)) continue;
2757
2768
  const column = key.slice(prefix.length);
@@ -2920,14 +2931,14 @@ function parseIncludePayload(value) {
2920
2931
  return [];
2921
2932
  }
2922
2933
  }
2923
- function createMutationRowMapper(contract, namespaceId, modelName, tables, variantName) {
2934
+ function createMutationRowMapper(contract, namespaceId, modelName, tables, variantValue) {
2924
2935
  const polyInfo = resolvePolymorphismInfo(contract, namespaceId, modelName);
2925
- return polyInfo ? (row) => mapPolymorphicRow(contract, namespaceId, modelName, polyInfo, tables, row, variantName) : (row) => mapStorageRowToModelFields(contract, namespaceId, modelName, row);
2936
+ return polyInfo ? (row) => mapPolymorphicRow(contract, namespaceId, modelName, polyInfo, tables, row, variantValue) : (row) => mapStorageRowToModelFields(contract, namespaceId, modelName, row);
2926
2937
  }
2927
2938
  function dispatchMutationRows(options) {
2928
- const { context, runtime, compiled, tables, modelName, namespaceId, variantName, includes, selectedFields, hiddenColumns, mapRow } = options;
2939
+ const { context, runtime, compiled, tables, modelName, namespaceId, variantValue, includes, selectedFields, hiddenColumns, mapRow } = options;
2929
2940
  const { contract } = context;
2930
- const mapStorageRow = createMutationRowMapper(contract, namespaceId, modelName, tables, variantName);
2941
+ const mapStorageRow = createMutationRowMapper(contract, namespaceId, modelName, tables, variantValue);
2931
2942
  if (includes.length === 0) return mapResultRows(queryPlanRows(runtime, compiled), (rawRow) => {
2932
2943
  const mapped = mapStorageRow(rawRow);
2933
2944
  if (hiddenColumns.length > 0) stripHiddenMappedFields(contract, namespaceId, modelName, mapped, hiddenColumns);
@@ -2949,9 +2960,9 @@ function dispatchMutationRows(options) {
2949
2960
  return new AsyncIterableResult(generator());
2950
2961
  }
2951
2962
  function dispatchSplitMutationRows(options) {
2952
- const { context, runtime, plans, tables, modelName, namespaceId, variantName, includes, selectedFields, hiddenColumns, mapRow } = options;
2963
+ const { context, runtime, plans, tables, modelName, namespaceId, variantValue, includes, selectedFields, hiddenColumns, mapRow } = options;
2953
2964
  const { contract } = context;
2954
- const mapStorageRow = createMutationRowMapper(contract, namespaceId, modelName, tables, variantName);
2965
+ const mapStorageRow = createMutationRowMapper(contract, namespaceId, modelName, tables, variantValue);
2955
2966
  const generator = async function* () {
2956
2967
  if (includes.length > 0) {
2957
2968
  const identityRows = [];
@@ -2977,9 +2988,9 @@ function dispatchSplitMutationRows(options) {
2977
2988
  return new AsyncIterableResult(generator());
2978
2989
  }
2979
2990
  async function executeMutationReturningSingleRow(options) {
2980
- const { context, runtime, compiled, tables, modelName, namespaceId, variantName, includes, selectedFields, hiddenColumns, mapRow, operation, onMissingRowMessage } = options;
2991
+ const { context, runtime, compiled, tables, modelName, namespaceId, variantValue, includes, selectedFields, hiddenColumns, mapRow, operation, onMissingRowMessage } = options;
2981
2992
  const { contract } = context;
2982
- const mapStorageRow = createMutationRowMapper(contract, namespaceId, modelName, tables, variantName);
2993
+ const mapStorageRow = createMutationRowMapper(contract, namespaceId, modelName, tables, variantValue);
2983
2994
  if (includes.length === 0) {
2984
2995
  const first = (await queryPlanRows(runtime, compiled).toArray())[0];
2985
2996
  if (!first) return null;
@@ -3157,7 +3168,7 @@ function assertModelFragmentReceiver(source, value) {
3157
3168
  }
3158
3169
  function firstQueryState(state) {
3159
3170
  return [
3160
- ["a variant", state.variantName !== void 0],
3171
+ ["a variant", state.variantValue !== void 0],
3161
3172
  ["a cursor", state.cursor !== void 0],
3162
3173
  ["distinctOn", state.distinctOn !== void 0],
3163
3174
  ["distinct", state.distinct !== void 0],
@@ -3242,7 +3253,7 @@ function assertDeclaredFieldsFragmentFields(collection, fields) {
3242
3253
  meta
3243
3254
  });
3244
3255
  const fieldMany = multiplicity(domainFieldOf(contract, namespaceId, modelName, name)?.many);
3245
- const column = resolveColumn(contract, namespaceId, fieldColumn.table, fieldColumn.column);
3256
+ const column = resolveColumn(contract, fieldColumn.namespaceId, fieldColumn.table, fieldColumn.column);
3246
3257
  const actual = column === void 0 ? `${label}.${name} has no column.` : fieldMany === false ? `${label}.${name} has codec ${column.codecId} and ${nullability(column.nullable)}.` : `${label}.${name} is a list ${describeField({
3247
3258
  codecId: column.codecId,
3248
3259
  nullable: column.nullable,
@@ -3329,7 +3340,7 @@ function fieldCodecId(collection, field) {
3329
3340
  const modelFields = getModelFields(contract, collection.namespaceId, collection.modelName);
3330
3341
  const fieldColumn = Object.hasOwn(modelFields, field) ? modelFields[field] : void 0;
3331
3342
  if (fieldColumn === void 0) return void 0;
3332
- return resolveColumn(contract, collection.namespaceId, fieldColumn.table, fieldColumn.column)?.codecId;
3343
+ return resolveColumn(contract, fieldColumn.namespaceId, fieldColumn.table, fieldColumn.column)?.codecId;
3333
3344
  }
3334
3345
  /** The domain declaration of a model's own or inherited field. */
3335
3346
  function domainFieldOf(contract, namespaceId, modelName, name) {
@@ -3509,8 +3520,8 @@ function createCallbackTools(context, indexes) {
3509
3520
  function hasThrough$1(relation) {
3510
3521
  return relation.through !== void 0;
3511
3522
  }
3512
- function createModelAccessor(context, namespaceId, modelName, tables, variantName) {
3513
- return createModelAccessorInScope(context, namespaceId, modelName, variantName, tables.scope, tables.root, variantName === void 0 ? void 0 : tables.variants.get(variantName));
3523
+ function createModelAccessor(context, namespaceId, modelName, tables, variantValue) {
3524
+ return createModelAccessorInScope(context, namespaceId, modelName, variantValue, tables.scope, tables.root, variantValue === void 0 ? void 0 : tables.variants.get(variantValue));
3514
3525
  }
3515
3526
  /**
3516
3527
  * The second argument of a `where` or `orderBy` callback on a collection of the model: the SQL query builder's functions, and the indexes of the model's table.
@@ -3545,14 +3556,16 @@ function indexReferencesOf(context, modelName, aliasedTable) {
3545
3556
  }
3546
3557
  });
3547
3558
  }
3548
- function createModelAccessorInScope(context, namespaceId, modelName, variantName, scope, table, variantTable) {
3559
+ function createModelAccessorInScope(context, namespaceId, modelName, variantValue, scope, table, variantTable) {
3549
3560
  const contract = context.contract;
3550
- const fieldColumns = getModelAndVariantFieldColumns(contract, namespaceId, modelName, variantName);
3561
+ const fieldColumns = getModelAndVariantFieldColumns(contract, namespaceId, modelName, variantValue);
3551
3562
  const modelRelations = resolveModelRelations(contract, namespaceId, modelName);
3552
- const variantFieldColumns = variantName ? resolveVariantFieldColumns(contract, namespaceId, modelName, variantName) : {};
3553
- const variantCoordinates = variantName ? {
3554
- name: variantName,
3555
- relations: resolveModelRelations(contract, namespaceId, variantName)
3563
+ const variantFieldColumns = variantValue ? resolveVariantFieldColumns(contract, namespaceId, modelName, variantValue) : {};
3564
+ const [addressedNamespaceId, addressed] = addressedModel(contract, namespaceId, modelName, variantValue);
3565
+ const variantCoordinates = variantValue ? {
3566
+ namespaceId: addressedNamespaceId,
3567
+ name: addressed,
3568
+ relations: resolveModelRelations(contract, addressedNamespaceId, addressed)
3556
3569
  } : void 0;
3557
3570
  const variantFieldTable = variantTable ?? table;
3558
3571
  const opsByCodecId = /* @__PURE__ */ new Map();
@@ -3578,7 +3591,7 @@ function createModelAccessorInScope(context, namespaceId, modelName, variantName
3578
3591
  if (typeof prop !== "string") return;
3579
3592
  if (variantCoordinates && Object.hasOwn(variantCoordinates.relations, prop)) {
3580
3593
  const variantRelation = variantCoordinates.relations[prop];
3581
- if (variantRelation) return createRelationFilterAccessor(context, namespaceId, variantCoordinates.name, scope, variantFieldTable, variantRelation);
3594
+ if (variantRelation) return createRelationFilterAccessor(context, variantCoordinates.namespaceId, variantCoordinates.name, scope, variantFieldTable, variantRelation);
3582
3595
  }
3583
3596
  const relation = Object.hasOwn(modelRelations, prop) ? modelRelations[prop] : void 0;
3584
3597
  if (relation) return createRelationFilterAccessor(context, namespaceId, modelName, scope, table, relation);
@@ -3588,7 +3601,7 @@ function createModelAccessorInScope(context, namespaceId, modelName, variantName
3588
3601
  }
3589
3602
  const fieldTable = variantField ? variantFieldTable : table;
3590
3603
  const fieldStorage = fieldTable.storage;
3591
- const columnName = variantField?.column ?? columnOfCallerField(contract, namespaceId, fieldColumns, addressedModelName(modelName, variantName), prop);
3604
+ const columnName = variantField?.column ?? columnOfCallerField(contract, addressedNamespaceId, fieldColumns, addressed, prop);
3592
3605
  const column = resolveColumn(contract, fieldStorage.namespaceId, fieldStorage.tableName, columnName);
3593
3606
  if (!column) throw new InternalError(`Field "${modelName}.${prop}" maps column "${columnName}", which table "${fieldStorage.tableName}" does not have`);
3594
3607
  const traits = codecTraits(context, column.codecId);
@@ -4798,7 +4811,7 @@ var CollectionBase = class CollectionBase {
4798
4811
  }
4799
4812
  where(input) {
4800
4813
  const tables = withScopeCopy(this.state.tables);
4801
- const filter = normalizeWhereArg(typeof input === "function" ? whereArgOf(input(createModelAccessor(this.ctx.context, this.namespaceId, this.modelName, tables, this.state.variantName), this.#callbackTools(tables))) : isWhereDirectInput(input) ? input : shorthandToWhereExpr(this.ctx.context, this.namespaceId, this.modelName, input, tables.root), {
4814
+ const filter = normalizeWhereArg(typeof input === "function" ? whereArgOf(input(createModelAccessor(this.ctx.context, this.namespaceId, this.modelName, tables, this.state.variantValue), this.#callbackTools(tables))) : isWhereDirectInput(input) ? input : shorthandToWhereExpr(this.ctx.context, this.namespaceId, this.modelName, input, tables.root), {
4802
4815
  contract: this.contract,
4803
4816
  tables: tableAliases(tables)
4804
4817
  });
@@ -4855,20 +4868,17 @@ var CollectionBase = class CollectionBase {
4855
4868
  }
4856
4869
  variant(value) {
4857
4870
  const polyInfo = resolvePolymorphismInfo(this.contract, this.namespaceId, this.modelName);
4858
- const selectedVariantName = this.state.variantName;
4859
- if (selectedVariantName !== void 0) {
4860
- const selectedValue = polyInfo?.variants.get(selectedVariantName)?.value;
4861
- throw ormError("ORM.OPERATION_UNSUPPORTED", `variant("${value}") cannot be called on model "${this.modelName}" because variant("${selectedValue}") is already selected; call variant() on the base collection instead`, { meta: {
4862
- method: "variant",
4863
- model: this.modelName,
4864
- variant: selectedVariantName,
4865
- selectedValue,
4866
- reason: "variant-already-selected"
4867
- } });
4868
- }
4869
- const variantInfo = polyInfo?.variantsByValue.get(value);
4871
+ const selectedVariantValue = this.state.variantValue;
4872
+ if (selectedVariantValue !== void 0) throw ormError("ORM.OPERATION_UNSUPPORTED", `variant("${value}") cannot be called on model "${this.modelName}" because variant("${selectedVariantValue}") is already selected; call variant() on the base collection instead`, { meta: {
4873
+ method: "variant",
4874
+ model: this.modelName,
4875
+ variant: polyInfo?.variants.get(selectedVariantValue)?.modelName,
4876
+ selectedValue: selectedVariantValue,
4877
+ reason: "variant-already-selected"
4878
+ } });
4879
+ const variantInfo = polyInfo?.variants.get(value);
4870
4880
  if (!polyInfo || !variantInfo) {
4871
- const declaredValues = [...polyInfo?.variantsByValue.keys() ?? []];
4881
+ const declaredValues = [...polyInfo?.variants.keys() ?? []];
4872
4882
  throw ormError("ORM.ARGUMENT_INVALID", declaredValues.length === 0 ? `variant("${value}") cannot narrow model "${this.modelName}": it declares no discriminator values` : `variant("${value}") cannot narrow model "${this.modelName}": the declared discriminator values are ${declaredValues.map((declared) => `"${declared}"`).join(", ")}`, { meta: {
4873
4883
  method: "variant",
4874
4884
  argument: "value",
@@ -4881,11 +4891,11 @@ var CollectionBase = class CollectionBase {
4881
4891
  const filter = BinaryExpr.eq(this.state.tables.root.column(columnName), paramRefForStorageColumn(this.contract, this.state.tables.root.storage, columnName, variantInfo.value));
4882
4892
  return this.#cloneWithRow({
4883
4893
  filters: [...this.state.filters, filter],
4884
- variantName: variantInfo.modelName
4894
+ variantValue: variantInfo.value
4885
4895
  });
4886
4896
  }
4887
4897
  include(relationName, refineFn) {
4888
- const relation = resolveIncludeRelation(this.contract, this.namespaceId, this.modelName, relationName, this.state.variantName);
4898
+ const relation = resolveIncludeRelation(this.contract, this.namespaceId, this.modelName, relationName, this.state.variantValue);
4889
4899
  const child = createIncludeTables(this.contract, this.state.tables, relation);
4890
4900
  let nestedState = emptyState(child.tables);
4891
4901
  let adoptedScope = child.tables.scope;
@@ -4922,7 +4932,7 @@ var CollectionBase = class CollectionBase {
4922
4932
  relatedModelName: relation.relatedModelName,
4923
4933
  relatedNamespaceId: relation.relatedNamespaceId,
4924
4934
  relatedTableName: relation.relatedTableName,
4925
- ...ifDefined("localVariantName", relation.localVariantName),
4935
+ ...ifDefined("localVariantValue", relation.localVariantValue),
4926
4936
  targetColumns: relation.targetColumns,
4927
4937
  localColumns: relation.localColumns,
4928
4938
  cardinality: relation.cardinality,
@@ -4941,12 +4951,12 @@ var CollectionBase = class CollectionBase {
4941
4951
  });
4942
4952
  }
4943
4953
  select(...fields) {
4944
- const selectedFields = mapSelectedFieldsToColumns(this.contract, this.namespaceId, this.modelName, this.state.variantName, fields);
4954
+ const selectedFields = mapSelectedFieldsToColumns(this.contract, this.namespaceId, this.modelName, this.state.variantValue, fields);
4945
4955
  return this.#cloneWithRow({ selectedFields });
4946
4956
  }
4947
4957
  orderBy(selection) {
4948
4958
  const tables = withScopeCopy(this.state.tables);
4949
- const accessor = createModelAccessor(this.ctx.context, this.namespaceId, this.modelName, tables, this.state.variantName);
4959
+ const accessor = createModelAccessor(this.ctx.context, this.namespaceId, this.modelName, tables, this.state.variantValue);
4950
4960
  const tools = this.#callbackTools(tables);
4951
4961
  const nextOrders = (Array.isArray(selection) ? selection : [selection]).map((selector) => selector(accessor, tools));
4952
4962
  const existing = this.state.orderBy ?? [];
@@ -5183,7 +5193,7 @@ var CollectionBase = class CollectionBase {
5183
5193
  tables: this.state.tables,
5184
5194
  modelName: this.modelName,
5185
5195
  namespaceId: this.namespaceId,
5186
- variantName: this.state.variantName,
5196
+ variantValue: this.state.variantValue,
5187
5197
  includes: this.state.includes,
5188
5198
  selectedFields: this.state.selectedFields,
5189
5199
  hiddenColumns,
@@ -5198,7 +5208,7 @@ var CollectionBase = class CollectionBase {
5198
5208
  tables: this.state.tables,
5199
5209
  modelName: this.modelName,
5200
5210
  namespaceId: this.namespaceId,
5201
- variantName: this.state.variantName,
5211
+ variantValue: this.state.variantValue,
5202
5212
  includes: this.state.includes,
5203
5213
  selectedFields: this.state.selectedFields,
5204
5214
  hiddenColumns,
@@ -5218,36 +5228,39 @@ var CollectionBase = class CollectionBase {
5218
5228
  return { columns: resolveInsertConflictColumns(this.contract, this.namespaceId, this.modelName, conflictOn) };
5219
5229
  }
5220
5230
  #assertNotMtiVariant(method) {
5221
- this.#refuseOnMtiVariant(method, `${method} is not supported for MTI variant "${this.state.variantName}" on model "${this.modelName}". Use createAll() instead.`);
5231
+ this.#refuseOnMtiVariant(method, `${method} is not supported for MTI variant "${this.#variantModelName()}" on model "${this.modelName}". Use createAll() instead.`);
5222
5232
  }
5223
5233
  #assertConflictSkipNotOnMtiVariant(method) {
5224
- this.#refuseOnMtiVariant(method, `The onConflict option is not supported on variant "${this.state.variantName}" of model "${this.modelName}" because the variant is stored in its own table. Call createAll(rows) without the option; a duplicate row then makes the call fail.`);
5234
+ this.#refuseOnMtiVariant(method, `The onConflict option is not supported on variant "${this.#variantModelName()}" of model "${this.modelName}" because the variant is stored in its own table. Call createAll(rows) without the option; a duplicate row then makes the call fail.`);
5225
5235
  }
5226
5236
  #refuseOnMtiVariant(method, message) {
5227
5237
  if (!this.#resolveMtiCreateContext()) return;
5228
5238
  throw ormError("ORM.OPERATION_UNSUPPORTED", message, { meta: {
5229
5239
  method,
5230
5240
  model: this.modelName,
5231
- variant: this.state.variantName,
5241
+ variant: this.#variantModelName(),
5232
5242
  reason: "mti-variant"
5233
5243
  } });
5234
5244
  }
5245
+ #variantModelName() {
5246
+ return addressedModel(this.contract, this.namespaceId, this.modelName, this.state.variantValue)[1];
5247
+ }
5235
5248
  #resolveMtiCreateContext() {
5236
- const variantName = this.state.variantName;
5237
- if (!variantName) return null;
5249
+ const variantValue = this.state.variantValue;
5250
+ if (!variantValue) return null;
5238
5251
  const polyInfo = resolvePolymorphismInfo(this.contract, this.namespaceId, this.modelName);
5239
5252
  if (!polyInfo) return null;
5240
- const variant = polyInfo.variants.get(variantName);
5253
+ const variant = polyInfo.variants.get(variantValue);
5241
5254
  if (!isMtiVariantInfo(variant)) return null;
5242
5255
  const baseFieldToColumn = getModelFieldColumns(this.contract, this.namespaceId, this.modelName);
5243
- const variantFieldToColumn = getOwnFieldColumns(this.contract, this.namespaceId, variant.modelName);
5256
+ const variantFieldToColumn = getOwnFieldColumns(this.contract, variant.namespaceId, variant.modelName);
5244
5257
  const pkColumns = resolvePrimaryKeyColumns(this.contract, this.namespaceId, this.tableName);
5245
5258
  return {
5246
5259
  polyInfo,
5247
5260
  variant,
5248
5261
  baseFieldToColumn,
5249
5262
  variantFieldToColumn,
5250
- mergedFieldToColumn: getModelAndVariantFieldColumns(this.contract, this.namespaceId, this.modelName, variant.modelName),
5263
+ mergedFieldToColumn: getModelAndVariantFieldColumns(this.contract, this.namespaceId, this.modelName, variant.value),
5251
5264
  pkColumns
5252
5265
  };
5253
5266
  }
@@ -5260,7 +5273,7 @@ var CollectionBase = class CollectionBase {
5260
5273
  const modelName = this.modelName;
5261
5274
  const namespaceId = this.namespaceId;
5262
5275
  const tables = this.state.tables;
5263
- const variantTable = requireVariantTable(tables, variant.modelName);
5276
+ const variantTable = requireVariantTable(tables, variant.value);
5264
5277
  const baseFieldColumns = new Set(Object.values(baseFieldToColumn));
5265
5278
  const variantFieldColumns = new Set(Object.values(variantFieldToColumn));
5266
5279
  const generator = async function* () {
@@ -5269,7 +5282,7 @@ var CollectionBase = class CollectionBase {
5269
5282
  const allMapped = {};
5270
5283
  for (const [fieldName, value] of Object.entries(row)) {
5271
5284
  if (value === void 0) continue;
5272
- allMapped[columnOfCallerField(contract, namespaceId, mergedFieldToColumn, variant.modelName, fieldName)] = value;
5285
+ allMapped[columnOfCallerField(contract, variant.namespaceId, mergedFieldToColumn, variant.modelName, fieldName)] = value;
5273
5286
  }
5274
5287
  allMapped[polyInfo.discriminatorColumn] = variant.value;
5275
5288
  const baseRow = {};
@@ -5304,25 +5317,25 @@ var CollectionBase = class CollectionBase {
5304
5317
  return mapPolymorphicRow(contract, namespaceId, modelName, polyInfo, tables, {
5305
5318
  ...baseCreated,
5306
5319
  ...prefixedVariant
5307
- }, variant.modelName);
5320
+ }, variant.value);
5308
5321
  }));
5309
5322
  }
5310
5323
  };
5311
5324
  return new AsyncIterableResult(generator());
5312
5325
  }
5313
5326
  #mapCreateRows(data) {
5314
- const variantName = this.state.variantName;
5315
- if (!variantName) return data.map((row) => mapModelDataToStorageRow(this.contract, this.namespaceId, this.modelName, row));
5327
+ const variantValue = this.state.variantValue;
5328
+ if (!variantValue) return data.map((row) => mapModelDataToStorageRow(this.contract, this.namespaceId, this.modelName, row));
5316
5329
  const polyInfo = resolvePolymorphismInfo(this.contract, this.namespaceId, this.modelName);
5317
5330
  if (!polyInfo) return data.map((row) => mapModelDataToStorageRow(this.contract, this.namespaceId, this.modelName, row));
5318
- const variant = polyInfo.variants.get(variantName);
5331
+ const variant = polyInfo.variants.get(variantValue);
5319
5332
  if (!variant) return data.map((row) => mapModelDataToStorageRow(this.contract, this.namespaceId, this.modelName, row));
5320
- const mergedFieldToColumn = getModelAndVariantFieldColumns(this.contract, this.namespaceId, this.modelName, variant.modelName);
5333
+ const mergedFieldToColumn = getModelAndVariantFieldColumns(this.contract, this.namespaceId, this.modelName, variant.value);
5321
5334
  return data.map((row) => {
5322
5335
  const mapped = {};
5323
5336
  for (const [fieldName, value] of Object.entries(row)) {
5324
5337
  if (value === void 0) continue;
5325
- mapped[columnOfCallerField(this.contract, this.namespaceId, mergedFieldToColumn, variant.modelName, fieldName)] = value;
5338
+ mapped[columnOfCallerField(this.contract, variant.namespaceId, mergedFieldToColumn, variant.modelName, fieldName)] = value;
5326
5339
  }
5327
5340
  mapped[polyInfo.discriminatorColumn] = variant.value;
5328
5341
  return mapped;
@@ -5399,7 +5412,7 @@ var CollectionBase = class CollectionBase {
5399
5412
  tables: this.state.tables,
5400
5413
  modelName: this.modelName,
5401
5414
  namespaceId: this.namespaceId,
5402
- variantName: this.state.variantName,
5415
+ variantValue: this.state.variantValue,
5403
5416
  includes: this.state.includes,
5404
5417
  selectedFields: this.state.selectedFields,
5405
5418
  hiddenColumns,
@@ -5467,7 +5480,7 @@ var CollectionBase = class CollectionBase {
5467
5480
  tables: this.state.tables,
5468
5481
  modelName: this.modelName,
5469
5482
  namespaceId: this.namespaceId,
5470
- variantName: this.state.variantName,
5483
+ variantValue: this.state.variantValue,
5471
5484
  includes: this.state.includes,
5472
5485
  selectedFields: this.state.selectedFields,
5473
5486
  hiddenColumns,
@@ -5481,7 +5494,7 @@ var CollectionBase = class CollectionBase {
5481
5494
  if (Object.keys(mappedData).length === 0) return 0;
5482
5495
  applyUpdateDefaults(this.ctx, this.namespaceId, this.tableName, mappedData);
5483
5496
  const annotationsMap = this.#collectAnnotationsFromMeta(configure, "write", "updateAndCount");
5484
- const compiled = mergeAnnotations(compileUpdateCount(this.contract, this.state.tables, mappedData, this.state.filters, this.state.variantName), annotationsMap);
5497
+ const compiled = mergeAnnotations(compileUpdateCount(this.contract, this.state.tables, mappedData, this.state.filters, this.state.variantValue), annotationsMap);
5485
5498
  return (await this.ctx.runtime.execute(compiled)).affectedRows;
5486
5499
  }
5487
5500
  async delete(configure) {
@@ -5519,7 +5532,7 @@ var CollectionBase = class CollectionBase {
5519
5532
  tables: this.state.tables,
5520
5533
  modelName: this.modelName,
5521
5534
  namespaceId: this.namespaceId,
5522
- variantName: this.state.variantName,
5535
+ variantValue: this.state.variantValue,
5523
5536
  includes: this.state.includes,
5524
5537
  selectedFields: this.state.selectedFields,
5525
5538
  hiddenColumns,
@@ -5550,7 +5563,7 @@ var CollectionBase = class CollectionBase {
5550
5563
  modelName: collection.modelName,
5551
5564
  namespaceId: collection.namespaceId
5552
5565
  }).toArray();
5553
- const deletePlan = mergeAnnotations(compileDeleteCount(collection.contract, collection.state.tables, collection.state.filters, collection.state.variantName), annotationsMap);
5566
+ const deletePlan = mergeAnnotations(compileDeleteCount(collection.contract, collection.state.tables, collection.state.filters, collection.state.variantValue), annotationsMap);
5554
5567
  await scope.execute(deletePlan);
5555
5568
  return rows;
5556
5569
  });
@@ -5562,7 +5575,7 @@ var CollectionBase = class CollectionBase {
5562
5575
  assertBulkWriteIgnoresNothing(this.state, this.modelName, "deleteAndCount");
5563
5576
  assertLockCompatible(this.state, "mutation");
5564
5577
  const annotationsMap = this.#collectAnnotationsFromMeta(configure, "write", "deleteAndCount");
5565
- const compiled = mergeAnnotations(compileDeleteCount(this.contract, this.state.tables, this.state.filters, this.state.variantName), annotationsMap);
5578
+ const compiled = mergeAnnotations(compileDeleteCount(this.contract, this.state.tables, this.state.filters, this.state.variantValue), annotationsMap);
5566
5579
  return (await this.ctx.runtime.execute(compiled)).affectedRows;
5567
5580
  }
5568
5581
  #buildUpsertConflictCriterion(createValues, conflictColumns) {