@pothos/plugin-prisma 3.54.0 → 3.56.0

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 (92) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +42 -1
  3. package/dts/connection-helpers.d.ts +3 -3
  4. package/dts/connection-helpers.d.ts.map +1 -1
  5. package/dts/global-types.d.ts +12 -4
  6. package/dts/global-types.d.ts.map +1 -1
  7. package/dts/index.d.ts +3 -1
  8. package/dts/index.d.ts.map +1 -1
  9. package/dts/interface-ref.d.ts +10 -0
  10. package/dts/interface-ref.d.ts.map +1 -0
  11. package/dts/model-loader.d.ts +7 -7
  12. package/dts/model-loader.d.ts.map +1 -1
  13. package/dts/prisma-field-builder.d.ts +4 -4
  14. package/dts/prisma-field-builder.d.ts.map +1 -1
  15. package/dts/types.d.ts +23 -7
  16. package/dts/types.d.ts.map +1 -1
  17. package/dts/util/cursors.d.ts.map +1 -1
  18. package/dts/util/datamodel.d.ts +3 -3
  19. package/dts/util/datamodel.d.ts.map +1 -1
  20. package/dts/util/map-query.d.ts.map +1 -1
  21. package/dts/util/usage.d.ts +1 -0
  22. package/dts/util/usage.d.ts.map +1 -1
  23. package/esm/connection-helpers.d.ts +3 -3
  24. package/esm/connection-helpers.d.ts.map +1 -1
  25. package/esm/connection-helpers.js.map +1 -1
  26. package/esm/global-types.d.ts +18 -10
  27. package/esm/global-types.d.ts.map +1 -1
  28. package/esm/global-types.js.map +1 -1
  29. package/esm/index.d.ts +3 -1
  30. package/esm/index.d.ts.map +1 -1
  31. package/esm/index.js +48 -3
  32. package/esm/index.js.map +1 -1
  33. package/esm/interface-ref.d.ts +10 -0
  34. package/esm/interface-ref.d.ts.map +1 -0
  35. package/esm/interface-ref.js +26 -0
  36. package/esm/interface-ref.js.map +1 -0
  37. package/esm/model-loader.d.ts +7 -7
  38. package/esm/model-loader.d.ts.map +1 -1
  39. package/esm/model-loader.js.map +1 -1
  40. package/esm/prisma-field-builder.d.ts +4 -4
  41. package/esm/prisma-field-builder.d.ts.map +1 -1
  42. package/esm/prisma-field-builder.js +3 -3
  43. package/esm/prisma-field-builder.js.map +1 -1
  44. package/esm/schema-builder.js +27 -0
  45. package/esm/schema-builder.js.map +1 -1
  46. package/esm/types.d.ts +25 -9
  47. package/esm/types.d.ts.map +1 -1
  48. package/esm/util/cursors.d.ts.map +1 -1
  49. package/esm/util/cursors.js +2 -4
  50. package/esm/util/cursors.js.map +1 -1
  51. package/esm/util/datamodel.d.ts +3 -3
  52. package/esm/util/datamodel.d.ts.map +1 -1
  53. package/esm/util/datamodel.js +3 -2
  54. package/esm/util/datamodel.js.map +1 -1
  55. package/esm/util/map-query.d.ts.map +1 -1
  56. package/esm/util/map-query.js +17 -12
  57. package/esm/util/map-query.js.map +1 -1
  58. package/esm/util/usage.d.ts +1 -0
  59. package/esm/util/usage.d.ts.map +1 -1
  60. package/esm/util/usage.js +30 -0
  61. package/esm/util/usage.js.map +1 -1
  62. package/lib/connection-helpers.js.map +1 -1
  63. package/lib/index.js +50 -2
  64. package/lib/index.js.map +1 -1
  65. package/lib/interface-ref.js +36 -0
  66. package/lib/interface-ref.js.map +1 -0
  67. package/lib/model-loader.js.map +1 -1
  68. package/lib/prisma-field-builder.js +3 -3
  69. package/lib/prisma-field-builder.js.map +1 -1
  70. package/lib/schema-builder.js +27 -0
  71. package/lib/schema-builder.js.map +1 -1
  72. package/lib/util/cursors.js +2 -4
  73. package/lib/util/cursors.js.map +1 -1
  74. package/lib/util/datamodel.js +3 -2
  75. package/lib/util/datamodel.js.map +1 -1
  76. package/lib/util/map-query.js +16 -11
  77. package/lib/util/map-query.js.map +1 -1
  78. package/lib/util/usage.js +33 -0
  79. package/lib/util/usage.js.map +1 -1
  80. package/package.json +1 -1
  81. package/src/connection-helpers.ts +6 -6
  82. package/src/global-types.ts +36 -11
  83. package/src/index.ts +56 -2
  84. package/src/interface-ref.ts +18 -0
  85. package/src/model-loader.ts +13 -7
  86. package/src/prisma-field-builder.ts +7 -10
  87. package/src/schema-builder.ts +44 -1
  88. package/src/types.ts +66 -9
  89. package/src/util/cursors.ts +2 -4
  90. package/src/util/datamodel.ts +8 -3
  91. package/src/util/map-query.ts +32 -13
  92. package/src/util/usage.ts +31 -0
@@ -42,7 +42,7 @@ function addTypeSelectionsForField(type, context, info, state, selection, indire
42
42
  addTypeSelectionsForField(info.schema.getType(pothosPrismaIndirectInclude.getType()), context, info, state, selection, indirectPath);
43
43
  return;
44
44
  }
45
- if (!(0, _graphql.isObjectType)(type)) {
45
+ if (!((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
46
46
  return;
47
47
  }
48
48
  if (pothosPrismaModel && !pothosPrismaSelect) {
@@ -86,7 +86,7 @@ function resolveIndirectInclude(type, info, selection, includePath, path, resolv
86
86
  for (const sel of selection.selectionSet.selections){
87
87
  switch(sel.kind){
88
88
  case _graphql.Kind.FIELD:
89
- if (sel.name.value === include.name && (0, _graphql.isObjectType)(type)) {
89
+ if (sel.name.value === include.name && ((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
90
90
  var _sel_alias;
91
91
  const returnType = (0, _graphql.getNamedType)(type.getFields()[sel.name.value].type);
92
92
  var _sel_alias_value;
@@ -112,22 +112,27 @@ function resolveIndirectInclude(type, info, selection, includePath, path, resolv
112
112
  }
113
113
  }
114
114
  function addNestedSelections(type, context, info, state, selections, indirectPath) {
115
+ let parentType = type;
115
116
  for (const selection of selections.selections){
116
117
  switch(selection.kind){
117
118
  case _graphql.Kind.FIELD:
118
119
  addFieldSelection(type, context, info, state, selection, indirectPath);
119
120
  continue;
120
121
  case _graphql.Kind.FRAGMENT_SPREAD:
121
- if (info.fragments[selection.name.value].typeCondition.name.value !== type.name) {
122
+ var _parentType_extensions;
123
+ parentType = info.schema.getType(info.fragments[selection.name.value].typeCondition.name.value);
124
+ if ((0, _graphql.isObjectType)(type) ? parentType.name !== type.name : ((_parentType_extensions = parentType.extensions) === null || _parentType_extensions === void 0 ? void 0 : _parentType_extensions.pothosPrismaModel) !== type.extensions.pothosPrismaModel) {
122
125
  continue;
123
126
  }
124
- addNestedSelections(type, context, info, state, info.fragments[selection.name.value].selectionSet, indirectPath);
127
+ addNestedSelections(parentType, context, info, state, info.fragments[selection.name.value].selectionSet, indirectPath);
125
128
  continue;
126
129
  case _graphql.Kind.INLINE_FRAGMENT:
127
- if (selection.typeCondition && selection.typeCondition.name.value !== type.name) {
130
+ var _parentType_extensions1;
131
+ parentType = selection.typeCondition ? info.schema.getType(selection.typeCondition.name.value) : type;
132
+ if ((0, _graphql.isObjectType)(type) ? parentType.name !== type.name : ((_parentType_extensions1 = parentType.extensions) === null || _parentType_extensions1 === void 0 ? void 0 : _parentType_extensions1.pothosPrismaModel) !== type.extensions.pothosPrismaModel) {
128
133
  continue;
129
134
  }
130
- addNestedSelections(type, context, info, state, selection.selectionSet, indirectPath);
135
+ addNestedSelections(parentType, context, info, state, selection.selectionSet, indirectPath);
131
136
  continue;
132
137
  default:
133
138
  throw new _core.PothosValidationError(`Unsupported selection kind ${selection.kind}`);
@@ -238,8 +243,8 @@ function queryFromInfo({ context, info, typeName, select, path = [], paths = [],
238
243
  function selectionStateFromInfo(context, info, typeName) {
239
244
  const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;
240
245
  const state = createStateForType(type, info);
241
- if (!(0, _graphql.isObjectType)(type)) {
242
- throw new _core.PothosValidationError('Prisma plugin can only resolve includes for object types');
246
+ if (!((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
247
+ throw new _core.PothosValidationError('Prisma plugin can only resolve includes for object and interface types');
243
248
  }
244
249
  addFieldSelection(type, context, info, state, info.fieldNodes[0], []);
245
250
  return state;
@@ -266,7 +271,7 @@ function getIndirectType(type, info) {
266
271
  function normalizeInclude(path, type) {
267
272
  let currentType = type;
268
273
  const normalized = [];
269
- if (!(0, _graphql.isObjectType)(currentType)) {
274
+ if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
270
275
  throw new _core.PothosValidationError(`Expected ${currentType} to be an Object type`);
271
276
  }
272
277
  for (const fieldName of path){
@@ -275,8 +280,8 @@ function normalizeInclude(path, type) {
275
280
  throw new _core.PothosValidationError(`Expected ${currentType} to have a field ${fieldName}`);
276
281
  }
277
282
  currentType = (0, _graphql.getNamedType)(field.type);
278
- if (!(0, _graphql.isObjectType)(currentType)) {
279
- throw new _core.PothosValidationError(`Expected ${currentType} to be an Object type`);
283
+ if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
284
+ throw new _core.PothosValidationError(`Expected ${currentType} to be an Object or Interface type`);
280
285
  }
281
286
  normalized.push({
282
287
  name: fieldName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/map-query.ts"],"names":["queryFromInfo","selectionStateFromInfo","getIndirectType","addTypeSelectionsForField","type","context","info","state","selection","indirectPath","pothosPrismaIndirectInclude","name","value","startsWith","pothosPrismaInclude","pothosPrismaSelect","pothosPrismaModel","extensions","path","length","paths","resolveIndirectIncludePaths","resolvedType","field","schema","getType","isObjectType","mode","mergeSelection","select","undefined","include","selectionSet","addNestedSelections","pathPrefix","includePaths","resolve","includePath","resolveIndirectInclude","rest","sel","selections","kind","Kind","FIELD","returnType","getNamedType","getFields","alias","FRAGMENT_SPREAD","fragments","typeCondition","INLINE_FRAGMENT","PothosValidationError","addFieldSelection","fieldSelect","fieldSelectionMap","mappings","args","getArgumentValues","variableValues","rawQuery","indirectInclude","normalizedIndirectInclude","query","Array","isArray","normalizeInclude","fieldState","createStateForType","Object","keys","resolvedField","selectionToQuery","node","map","_","selectionCompatible","typeName","withUsageCheck","getTypeMap","initialSelection","fieldNodes","indirectType","indirectField","subPath","p","n","nested","setLoaderMappings","wrapWithUsageCheck","parentType","parent","initialSelections","targetType","fieldMap","pothosPrismaFieldMap","createState","currentType","normalized","fieldName","push"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/util/map-query.ts"],"names":["queryFromInfo","selectionStateFromInfo","getIndirectType","addTypeSelectionsForField","type","context","info","state","selection","indirectPath","pothosPrismaIndirectInclude","name","value","startsWith","pothosPrismaInclude","pothosPrismaSelect","pothosPrismaModel","extensions","path","length","paths","resolveIndirectIncludePaths","resolvedType","field","schema","getType","isObjectType","isInterfaceType","mode","mergeSelection","select","undefined","include","selectionSet","addNestedSelections","pathPrefix","includePaths","resolve","includePath","resolveIndirectInclude","rest","sel","selections","kind","Kind","FIELD","returnType","getNamedType","getFields","alias","FRAGMENT_SPREAD","fragments","typeCondition","INLINE_FRAGMENT","PothosValidationError","parentType","addFieldSelection","fieldSelect","fieldSelectionMap","mappings","args","getArgumentValues","variableValues","rawQuery","indirectInclude","normalizedIndirectInclude","query","Array","isArray","normalizeInclude","fieldState","createStateForType","Object","keys","resolvedField","selectionToQuery","node","map","_","selectionCompatible","typeName","withUsageCheck","getTypeMap","initialSelection","fieldNodes","indirectType","indirectField","subPath","p","n","nested","setLoaderMappings","wrapWithUsageCheck","parent","initialSelections","targetType","fieldMap","pothosPrismaFieldMap","createState","currentType","normalized","fieldName","push"],"mappings":"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"}
package/lib/util/usage.js CHANGED
@@ -17,6 +17,9 @@ _export(exports, {
17
17
  },
18
18
  isUsed: function() {
19
19
  return isUsed;
20
+ },
21
+ extendWithUsage: function() {
22
+ return extendWithUsage;
20
23
  }
21
24
  });
22
25
  const usageSymbol = Symbol.for('Pothos.isUsed');
@@ -27,6 +30,9 @@ function wrapWithUsageCheck(obj) {
27
30
  get () {
28
31
  return used;
29
32
  },
33
+ set (value) {
34
+ used = value;
35
+ },
30
36
  enumerable: false
31
37
  });
32
38
  for (const key of Object.keys(obj)){
@@ -47,5 +53,32 @@ function wrapWithUsageCheck(obj) {
47
53
  function isUsed(obj) {
48
54
  return !(usageSymbol in obj) || obj[usageSymbol];
49
55
  }
56
+ function extendWithUsage(original, extension) {
57
+ if (!(usageSymbol in original)) {
58
+ return {
59
+ ...original,
60
+ ...extension
61
+ };
62
+ }
63
+ const result = {
64
+ ...extension
65
+ };
66
+ for (const key of [
67
+ usageSymbol,
68
+ ...Object.keys(original)
69
+ ]){
70
+ if (key in result) {
71
+ continue;
72
+ }
73
+ Object.defineProperty(result, key, {
74
+ enumerable: key !== usageSymbol,
75
+ configurable: key !== usageSymbol,
76
+ get () {
77
+ return original[key];
78
+ }
79
+ });
80
+ }
81
+ return result;
82
+ }
50
83
 
51
84
  //# sourceMappingURL=usage.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/usage.ts"],"names":["usageSymbol","wrapWithUsageCheck","isUsed","Symbol","for","obj","result","used","Object","defineProperty","get","enumerable","key","keys","configurable"],"mappings":";;;;;;;;;;;IAAaA,WAAW;eAAXA;;IAEGC,kBAAkB;eAAlBA;;IA4BAC,MAAM;eAANA;;;AA9BT,MAAMF,cAAcG,OAAOC,GAAG,CAAC;AAE/B,SAASH,mBAAqCI,GAAM;IACzD,MAAMC,SAAS,CAAC;IAChB,IAAIC,OAAO;IAEXC,OAAOC,cAAc,CAACH,QAAQN,aAAa;QACzCU;YACE,OAAOH;QACT;QACAI,YAAY;IACd;IAEA,KAAK,MAAMC,OAAOJ,OAAOK,IAAI,CAACR,KAAM;QAClC,2CAA2C;QAC3CE,OAAO;QACPC,OAAOC,cAAc,CAACH,QAAQM,KAAK;YACjCD,YAAY;YACZG,cAAc;YACd,2DAA2D;YAC3DJ;gBACEH,OAAO;gBACP,OAAOF,GAAG,CAACO,IAAe;YAC5B;QACF;IACF;IAEA,OAAON;AACT;AAEO,SAASJ,OAAOG,GAAW;IAChC,OAAO,CAAEL,CAAAA,eAAeK,GAAE,KAAM,AAACA,GAAkC,CAACL,YAAY;AAClF"}
1
+ {"version":3,"sources":["../../src/util/usage.ts"],"names":["usageSymbol","wrapWithUsageCheck","isUsed","extendWithUsage","Symbol","for","obj","result","used","Object","defineProperty","get","set","value","enumerable","key","keys","configurable","original","extension"],"mappings":";;;;;;;;;;;IAAaA,WAAW;eAAXA;;IAEGC,kBAAkB;eAAlBA;;IA+BAC,MAAM;eAANA;;IAIAC,eAAe;eAAfA;;;AArCT,MAAMH,cAAcI,OAAOC,GAAG,CAAC;AAE/B,SAASJ,mBAAqCK,GAAM;IACzD,MAAMC,SAAS,CAAC;IAChB,IAAIC,OAAO;IAEXC,OAAOC,cAAc,CAACH,QAAQP,aAAa;QACzCW;YACE,OAAOH;QACT;QACAI,KAAIC,KAAc;YAChBL,OAAOK;QACT;QACAC,YAAY;IACd;IAEA,KAAK,MAAMC,OAAON,OAAOO,IAAI,CAACV,KAAM;QAClC,2CAA2C;QAC3CE,OAAO;QACPC,OAAOC,cAAc,CAACH,QAAQQ,KAAK;YACjCD,YAAY;YACZG,cAAc;YACd,2DAA2D;YAC3DN;gBACEH,OAAO;gBACP,OAAOF,GAAG,CAACS,IAAe;YAC5B;QACF;IACF;IAEA,OAAOR;AACT;AAEO,SAASL,OAAOI,GAAW;IAChC,OAAO,CAAEN,CAAAA,eAAeM,GAAE,KAAM,AAACA,GAAkC,CAACN,YAAY;AAClF;AAEO,SAASG,gBACde,QAAW,EACXC,SAAY;IAEZ,IAAI,CAAEnB,CAAAA,eAAekB,QAAO,GAAI;QAC9B,OAAO;YAAE,GAAGA,QAAQ;YAAE,GAAGC,SAAS;QAAC;IACrC;IAEA,MAAMZ,SAAS;QAAE,GAAGY,SAAS;IAAC;IAE9B,KAAK,MAAMJ,OAAO;QAACf;WAAgBS,OAAOO,IAAI,CAACE;KAAU,CAAE;QACzD,IAAIH,OAAOR,QAAQ;YAEjB;QACF;QAEAE,OAAOC,cAAc,CAACH,QAAQQ,KAAK;YACjCD,YAAYC,QAAQf;YACpBiB,cAAcF,QAAQf;YACtBW;gBACE,OAAOO,QAAQ,CAACH,IAAe;YACjC;QACF;IACF;IAEA,OAAOR;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pothos/plugin-prisma",
3
- "version": "3.54.0",
3
+ "version": "3.56.0",
4
4
  "description": "A Pothos plugin for more efficient integration with prisma",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./dts/index.d.ts",
@@ -1,6 +1,6 @@
1
1
  import { ObjectRef, SchemaTypes } from '@pothos/core';
2
+ import { PrismaRef } from './interface-ref';
2
3
  import { ModelLoader } from './model-loader';
3
- import { PrismaObjectRef } from './object-ref';
4
4
  import type { PrismaModelTypes, ShapeFromSelection, UniqueFieldsFromWhereUnique } from './types';
5
5
  import {
6
6
  getCursorFormatter,
@@ -17,12 +17,12 @@ export const prismaModelKey = Symbol.for('Pothos.prismaModelKey');
17
17
 
18
18
  export function prismaConnectionHelpers<
19
19
  Types extends SchemaTypes,
20
- RefOrType extends PrismaObjectRef<PrismaModelTypes> | keyof Types['PrismaTypes'],
20
+ RefOrType extends PrismaRef<PrismaModelTypes> | keyof Types['PrismaTypes'],
21
21
  Select extends Model['Select'] & {},
22
- Model extends PrismaModelTypes = RefOrType extends PrismaObjectRef<infer T>
22
+ Model extends PrismaModelTypes = RefOrType extends PrismaRef<infer T>
23
23
  ? T & PrismaModelTypes
24
24
  : Types['PrismaTypes'][RefOrType & keyof Types['PrismaTypes']] & PrismaModelTypes,
25
- Shape = RefOrType extends PrismaObjectRef<PrismaModelTypes, infer T> ? T : Model['Shape'],
25
+ Shape = RefOrType extends PrismaRef<PrismaModelTypes, infer T> ? T : Model['Shape'],
26
26
  EdgeShape = Model['Include'] extends Select
27
27
  ? Shape
28
28
  : ShapeFromSelection<Types, Model, { select: Select }>,
@@ -41,7 +41,7 @@ export function prismaConnectionHelpers<
41
41
  },
42
42
  ) {
43
43
  const modelName =
44
- typeof refOrType === 'string' ? refOrType : (refOrType as PrismaObjectRef<Model>).modelName;
44
+ typeof refOrType === 'string' ? refOrType : (refOrType as PrismaRef<Model>).modelName;
45
45
  const ref =
46
46
  typeof refOrType === 'string'
47
47
  ? getRefFromModel(modelName, builder)
@@ -119,7 +119,7 @@ export function prismaConnectionHelpers<
119
119
  return {
120
120
  ref: (typeof refOrType === 'string'
121
121
  ? getRefFromModel(refOrType, builder)
122
- : refOrType) as PrismaObjectRef<Model>,
122
+ : refOrType) as PrismaRef<Model>,
123
123
  resolve,
124
124
  select: options.select ?? {},
125
125
  getQuery,
@@ -16,6 +16,7 @@ import {
16
16
  ShapeFromTypeParam,
17
17
  TypeParam,
18
18
  } from '@pothos/core';
19
+ import { PrismaInterfaceRef, PrismaRef } from './interface-ref';
19
20
  import { PrismaNodeRef } from './node-ref';
20
21
  import { prismaModelKey, PrismaObjectRef } from './object-ref';
21
22
  import { PrismaObjectFieldBuilder as InternalPrismaObjectFieldBuilder } from './prisma-field-builder';
@@ -25,6 +26,7 @@ import {
25
26
  PrismaConnectionShape,
26
27
  PrismaFieldOptions,
27
28
  PrismaFieldWithInputOptions,
29
+ PrismaInterfaceTypeOptions,
28
30
  prismaModelName,
29
31
  PrismaModelTypes,
30
32
  PrismaNodeOptions,
@@ -125,6 +127,29 @@ declare global {
125
127
  ShapeFromSelection<Types, Model, { select: Select; include: Include }>
126
128
  >;
127
129
 
130
+ prismaInterface: <
131
+ Name extends keyof Types['PrismaTypes'],
132
+ Interfaces extends InterfaceParam<Types>[],
133
+ FindUnique,
134
+ Model extends PrismaModelTypes & Types['PrismaTypes'][Name],
135
+ Include = unknown,
136
+ Select = unknown,
137
+ >(
138
+ name: Name,
139
+ options: PrismaInterfaceTypeOptions<
140
+ Types,
141
+ Model,
142
+ Interfaces,
143
+ FindUnique,
144
+ Include,
145
+ Select,
146
+ ShapeFromSelection<Types, Model, { select: Select; include: Include }>
147
+ >,
148
+ ) => PrismaInterfaceRef<
149
+ Model,
150
+ ShapeFromSelection<Types, Model, { select: Select; include: Include }>
151
+ >;
152
+
128
153
  prismaObjectField: <
129
154
  Type extends PrismaObjectRef<PrismaModelTypes, {}> | keyof Types['PrismaTypes'],
130
155
  Model extends PrismaModelTypes = Type extends PrismaObjectRef<infer M, {}>
@@ -197,10 +222,10 @@ declare global {
197
222
  prismaField: <
198
223
  Args extends InputFieldMap,
199
224
  TypeParam extends
200
- | PrismaObjectRef<PrismaModelTypes>
225
+ | PrismaRef<PrismaModelTypes>
201
226
  | keyof Types['PrismaTypes']
202
227
  | [keyof Types['PrismaTypes']]
203
- | [PrismaObjectRef<PrismaModelTypes>],
228
+ | [PrismaRef<PrismaModelTypes>],
204
229
  Nullable extends FieldNullability<Type>,
205
230
  ResolveShape,
206
231
  ResolveReturnShape,
@@ -210,9 +235,9 @@ declare global {
210
235
  Model extends PrismaModelTypes = PrismaModelTypes &
211
236
  (TypeParam extends [keyof Types['PrismaTypes']]
212
237
  ? Types['PrismaTypes'][TypeParam[0]]
213
- : TypeParam extends [PrismaObjectRef<PrismaModelTypes>]
238
+ : TypeParam extends [PrismaRef<PrismaModelTypes>]
214
239
  ? TypeParam[0][typeof prismaModelKey]
215
- : TypeParam extends PrismaObjectRef<PrismaModelTypes>
240
+ : TypeParam extends PrismaRef<PrismaModelTypes>
216
241
  ? TypeParam[typeof prismaModelKey]
217
242
  : TypeParam extends keyof Types['PrismaTypes']
218
243
  ? Types['PrismaTypes'][TypeParam]
@@ -234,14 +259,14 @@ declare global {
234
259
 
235
260
  prismaConnection: 'relay' extends PluginName
236
261
  ? <
237
- Type extends PrismaObjectRef<PrismaModelTypes> | keyof Types['PrismaTypes'],
262
+ Type extends PrismaRef<PrismaModelTypes> | keyof Types['PrismaTypes'],
238
263
  Nullable extends boolean,
239
264
  ResolveReturnShape,
240
265
  Args extends InputFieldMap = {},
241
- Model extends PrismaModelTypes = Type extends PrismaObjectRef<infer T>
266
+ Model extends PrismaModelTypes = Type extends PrismaRef<infer T>
242
267
  ? T
243
268
  : PrismaModelTypes & Types['PrismaTypes'][Type & keyof Types['PrismaTypes']],
244
- Shape = Type extends PrismaObjectRef<PrismaModelTypes, infer S> ? S : Model['Shape'],
269
+ Shape = Type extends PrismaRef<PrismaModelTypes, infer S> ? S : Model['Shape'],
245
270
  ConnectionInterfaces extends InterfaceParam<Types>[] = [],
246
271
  EdgeInterfaces extends InterfaceParam<Types>[] = [],
247
272
  >(
@@ -290,10 +315,10 @@ declare global {
290
315
  ? <
291
316
  Fields extends Record<string, InputFieldRef<unknown, 'InputObject'>>,
292
317
  TypeParam extends
293
- | PrismaObjectRef<PrismaModelTypes>
318
+ | PrismaRef<PrismaModelTypes>
294
319
  | keyof Types['PrismaTypes']
295
320
  | [keyof Types['PrismaTypes']]
296
- | [PrismaObjectRef<PrismaModelTypes>],
321
+ | [PrismaRef<PrismaModelTypes>],
297
322
  Type extends TypeParam extends [unknown]
298
323
  ? [ObjectRef<Model['Shape']>]
299
324
  : ObjectRef<Model['Shape']>,
@@ -306,9 +331,9 @@ declare global {
306
331
  Model extends PrismaModelTypes = PrismaModelTypes &
307
332
  (TypeParam extends [keyof Types['PrismaTypes']]
308
333
  ? Types['PrismaTypes'][TypeParam[0]]
309
- : TypeParam extends [PrismaObjectRef<PrismaModelTypes>]
334
+ : TypeParam extends [PrismaRef<PrismaModelTypes>]
310
335
  ? TypeParam[0][typeof prismaModelKey]
311
- : TypeParam extends PrismaObjectRef<PrismaModelTypes>
336
+ : TypeParam extends PrismaRef<PrismaModelTypes>
312
337
  ? TypeParam[typeof prismaModelKey]
313
338
  : TypeParam extends keyof Types['PrismaTypes']
314
339
  ? Types['PrismaTypes'][TypeParam]
package/src/index.ts CHANGED
@@ -6,6 +6,8 @@ import SchemaBuilder, {
6
6
  BasePlugin,
7
7
  BuildCache,
8
8
  PothosOutputFieldConfig,
9
+ PothosSchemaError,
10
+ PothosTypeConfig,
9
11
  SchemaTypes,
10
12
  } from '@pothos/core';
11
13
  import { ModelLoader } from './model-loader';
@@ -17,6 +19,7 @@ import { getLoaderMapping, setLoaderMappings } from './util/loader-map';
17
19
  import { queryFromInfo, selectionStateFromInfo } from './util/map-query';
18
20
 
19
21
  export { prismaConnectionHelpers } from './connection-helpers';
22
+ export { PrismaInterfaceRef } from './interface-ref';
20
23
  export { PrismaNodeRef } from './node-ref';
21
24
  export { PrismaObjectRef } from './object-ref';
22
25
  export * from './types';
@@ -47,6 +50,37 @@ export class PrismaPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {
47
50
  super(cache, pluginName);
48
51
  }
49
52
 
53
+ override onTypeConfig(typeConfig: PothosTypeConfig): PothosTypeConfig {
54
+ if (typeConfig.kind !== 'Object' && typeConfig.kind !== 'Interface') {
55
+ return typeConfig;
56
+ }
57
+
58
+ let model = typeConfig.extensions?.pothosPrismaModel as string | undefined;
59
+
60
+ typeConfig.interfaces.forEach((iface) => {
61
+ const interfaceModel = this.buildCache.getTypeConfig(iface, 'Interface').extensions
62
+ ?.pothosPrismaModel as string | undefined;
63
+
64
+ if (interfaceModel) {
65
+ if (model && model !== interfaceModel) {
66
+ throw new PothosSchemaError(
67
+ `PrismaObjects must be based on the same prisma model as any PrismaInterfaces they extend. ${typeConfig.name} uses ${model} and ${iface.name} uses ${interfaceModel}`,
68
+ );
69
+ }
70
+
71
+ model = interfaceModel;
72
+ }
73
+ });
74
+
75
+ return {
76
+ ...typeConfig,
77
+ extensions: {
78
+ ...typeConfig.extensions,
79
+ pothosPrismaModel: model,
80
+ },
81
+ };
82
+ }
83
+
50
84
  override onOutputFieldConfig(
51
85
  fieldConfig: PothosOutputFieldConfig<Types>,
52
86
  ): PothosOutputFieldConfig<Types> | null {
@@ -85,7 +119,7 @@ export class PrismaPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {
85
119
  return resolver;
86
120
  }
87
121
 
88
- const parentConfig = this.buildCache.getTypeConfig(fieldConfig.parentType, 'Object');
122
+ const parentConfig = this.buildCache.getTypeConfig(fieldConfig.parentType);
89
123
  const loadedCheck = fieldConfig.extensions?.pothosPrismaLoaded as
90
124
  | undefined
91
125
  | ((val: unknown) => boolean);
@@ -97,8 +131,28 @@ export class PrismaPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {
97
131
  | undefined
98
132
  | ((query: {}, parent: unknown, args: {}, context: {}, info: {}) => unknown);
99
133
 
134
+ const parentTypes = new Set([fieldConfig.parentType]);
135
+
136
+ if (parentConfig.kind === 'Interface' || parentConfig.kind === 'Object') {
137
+ parentConfig.interfaces.forEach((iface) => {
138
+ const interfaceConfig = this.buildCache.getTypeConfig(iface, 'Interface');
139
+ if (interfaceConfig.extensions?.pothosPrismaModel) {
140
+ parentTypes.add(interfaceConfig.name);
141
+ }
142
+ });
143
+ }
144
+
100
145
  return (parent, args, context, info) => {
101
- const mapping = getLoaderMapping(context, info.path, info.parentType.name);
146
+ let mapping = getLoaderMapping(context, info.path, info.parentType.name);
147
+
148
+ if (!mapping) {
149
+ for (const parentType of parentTypes) {
150
+ mapping = getLoaderMapping(context, info.path, parentType);
151
+ if (mapping) {
152
+ break;
153
+ }
154
+ }
155
+ }
102
156
 
103
157
  if ((!loadedCheck || loadedCheck(parent)) && mapping) {
104
158
  setLoaderMappings(context, info, mapping);
@@ -0,0 +1,18 @@
1
+ import { InterfaceRef } from '@pothos/core';
2
+ import { prismaModelKey, PrismaObjectRef } from './object-ref';
3
+ import type { PrismaModelTypes } from './types';
4
+
5
+ export type PrismaRef<Model extends PrismaModelTypes, T = {}> =
6
+ | PrismaObjectRef<Model, T>
7
+ | PrismaInterfaceRef<Model, T>;
8
+
9
+ export class PrismaInterfaceRef<Model extends PrismaModelTypes, T = {}> extends InterfaceRef<T> {
10
+ [prismaModelKey]!: Model;
11
+ modelName: string;
12
+
13
+ constructor(name: string, modelName: string) {
14
+ super(name);
15
+
16
+ this.modelName = modelName;
17
+ }
18
+ }
@@ -1,4 +1,10 @@
1
- import { createContextCache, ObjectRef, PothosSchemaError, SchemaTypes } from '@pothos/core';
1
+ import {
2
+ createContextCache,
3
+ InterfaceRef,
4
+ ObjectRef,
5
+ PothosSchemaError,
6
+ SchemaTypes,
7
+ } from '@pothos/core';
2
8
  import { getDelegateFromModel, getModel } from './util/datamodel';
3
9
  import { getClient } from './util/get-client';
4
10
  import {
@@ -32,7 +38,7 @@ export class ModelLoader {
32
38
  }
33
39
 
34
40
  static forRef<Types extends SchemaTypes>(
35
- ref: ObjectRef<unknown>,
41
+ ref: ObjectRef<unknown> | InterfaceRef<unknown>,
36
42
  modelName: string,
37
43
  findUnique: ((model: Record<string, unknown>, ctx: {}) => unknown) | undefined,
38
44
  builder: PothosSchemaTypes.SchemaBuilder<Types>,
@@ -78,7 +84,7 @@ export class ModelLoader {
78
84
  }
79
85
 
80
86
  static getDefaultFindBy<Types extends SchemaTypes>(
81
- ref: ObjectRef<unknown>,
87
+ ref: ObjectRef<unknown> | InterfaceRef<unknown>,
82
88
  modelName: string,
83
89
  builder: PothosSchemaTypes.SchemaBuilder<Types>,
84
90
  ) {
@@ -115,7 +121,7 @@ export class ModelLoader {
115
121
  }
116
122
 
117
123
  static getDefaultFindUnique<Types extends SchemaTypes>(
118
- ref: ObjectRef<unknown>,
124
+ ref: ObjectRef<unknown> | InterfaceRef<unknown>,
119
125
  modelName: string,
120
126
  builder: PothosSchemaTypes.SchemaBuilder<Types>,
121
127
  ): (model: Record<string, unknown>) => {} {
@@ -125,7 +131,7 @@ export class ModelLoader {
125
131
  }
126
132
 
127
133
  static getDefaultIDSelection<Types extends SchemaTypes>(
128
- ref: ObjectRef<unknown>,
134
+ ref: ObjectRef<unknown> | InterfaceRef<unknown>,
129
135
  modelName: string,
130
136
  builder: PothosSchemaTypes.SchemaBuilder<Types>,
131
137
  ): Record<string, boolean> {
@@ -145,7 +151,7 @@ export class ModelLoader {
145
151
  }
146
152
 
147
153
  static getCursorSelection<Types extends SchemaTypes>(
148
- ref: ObjectRef<unknown>,
154
+ ref: ObjectRef<unknown> | InterfaceRef<unknown>,
149
155
  modelName: string,
150
156
  cursor: string,
151
157
  builder: PothosSchemaTypes.SchemaBuilder<Types>,
@@ -174,7 +180,7 @@ export class ModelLoader {
174
180
  }
175
181
 
176
182
  static getFindUniqueForField<Types extends SchemaTypes>(
177
- ref: ObjectRef<unknown>,
183
+ ref: ObjectRef<unknown> | InterfaceRef<unknown>,
178
184
  modelName: string,
179
185
  fieldName: string,
180
186
  builder: PothosSchemaTypes.SchemaBuilder<Types>,
@@ -18,8 +18,8 @@ import {
18
18
  ShapeFromTypeParam,
19
19
  TypeParam,
20
20
  } from '@pothos/core';
21
+ import { PrismaRef } from './interface-ref';
21
22
  import { ModelLoader } from './model-loader';
22
- import { PrismaObjectRef } from './object-ref';
23
23
  import {
24
24
  PrismaConnectionShape,
25
25
  PrismaModelTypes,
@@ -367,8 +367,9 @@ export class PrismaObjectFieldBuilder<
367
367
  builder: PothosSchemaTypes.SchemaBuilder<Types>,
368
368
  model: string,
369
369
  fieldMap: FieldMap,
370
+ graphqlKind: PothosSchemaTypes.PothosKindToGraphQLType[FieldKind] = 'Object',
370
371
  ) {
371
- super(name, builder, 'PrismaObject', 'Object');
372
+ super(name, builder, 'PrismaObject', graphqlKind);
372
373
 
373
374
  this.model = model;
374
375
  this.prismaFieldMap = fieldMap;
@@ -473,18 +474,14 @@ export class PrismaObjectFieldBuilder<
473
474
  }) as FieldRef<number, 'Object'>;
474
475
  }
475
476
 
476
- variant<
477
- Variant extends Model['Name'] | PrismaObjectRef<Model>,
478
- Args extends InputFieldMap,
479
- Nullable,
480
- >(
477
+ variant<Variant extends Model['Name'] | PrismaRef<Model>, Args extends InputFieldMap, Nullable>(
481
478
  variant: Variant,
482
479
  ...allArgs: NormalizeArgs<
483
480
  [
484
481
  options: VariantFieldOptions<
485
482
  Types,
486
483
  Model,
487
- Variant extends PrismaObjectRef<Model> ? Variant : PrismaObjectRef<Model>,
484
+ Variant extends PrismaRef<Model> ? Variant : PrismaRef<Model>,
488
485
  Args,
489
486
  Nullable,
490
487
  Shape
@@ -493,7 +490,7 @@ export class PrismaObjectFieldBuilder<
493
490
  >
494
491
  ): FieldRef<Model['Shape'], 'Object'> {
495
492
  const [{ isNull, nullable, ...options } = {} as never] = allArgs;
496
- const ref: PrismaObjectRef<PrismaModelTypes> =
493
+ const ref: PrismaRef<PrismaModelTypes> =
497
494
  typeof variant === 'string' ? getRefFromModel(variant, this.builder) : variant;
498
495
 
499
496
  const selfSelect = (args: object, context: object, nestedQuery: (query: unknown) => unknown) =>
@@ -550,7 +547,7 @@ export class PrismaObjectFieldBuilder<
550
547
  ) {
551
548
  const [name, options = {} as never] = args;
552
549
 
553
- const typeConfig = this.builder.configStore.getTypeConfig(this.typename, 'Object');
550
+ const typeConfig = this.builder.configStore.getTypeConfig(this.typename);
554
551
  const usingSelect = !!typeConfig.extensions?.pothosPrismaSelect;
555
552
 
556
553
  return this.exposeField<Type, Nullable, never>(name as never, {