@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.
- package/CHANGELOG.md +12 -0
- package/README.md +42 -1
- package/dts/connection-helpers.d.ts +3 -3
- package/dts/connection-helpers.d.ts.map +1 -1
- package/dts/global-types.d.ts +12 -4
- package/dts/global-types.d.ts.map +1 -1
- package/dts/index.d.ts +3 -1
- package/dts/index.d.ts.map +1 -1
- package/dts/interface-ref.d.ts +10 -0
- package/dts/interface-ref.d.ts.map +1 -0
- package/dts/model-loader.d.ts +7 -7
- package/dts/model-loader.d.ts.map +1 -1
- package/dts/prisma-field-builder.d.ts +4 -4
- package/dts/prisma-field-builder.d.ts.map +1 -1
- package/dts/types.d.ts +23 -7
- package/dts/types.d.ts.map +1 -1
- package/dts/util/cursors.d.ts.map +1 -1
- package/dts/util/datamodel.d.ts +3 -3
- package/dts/util/datamodel.d.ts.map +1 -1
- package/dts/util/map-query.d.ts.map +1 -1
- package/dts/util/usage.d.ts +1 -0
- package/dts/util/usage.d.ts.map +1 -1
- package/esm/connection-helpers.d.ts +3 -3
- package/esm/connection-helpers.d.ts.map +1 -1
- package/esm/connection-helpers.js.map +1 -1
- package/esm/global-types.d.ts +18 -10
- package/esm/global-types.d.ts.map +1 -1
- package/esm/global-types.js.map +1 -1
- package/esm/index.d.ts +3 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +48 -3
- package/esm/index.js.map +1 -1
- package/esm/interface-ref.d.ts +10 -0
- package/esm/interface-ref.d.ts.map +1 -0
- package/esm/interface-ref.js +26 -0
- package/esm/interface-ref.js.map +1 -0
- package/esm/model-loader.d.ts +7 -7
- package/esm/model-loader.d.ts.map +1 -1
- package/esm/model-loader.js.map +1 -1
- package/esm/prisma-field-builder.d.ts +4 -4
- package/esm/prisma-field-builder.d.ts.map +1 -1
- package/esm/prisma-field-builder.js +3 -3
- package/esm/prisma-field-builder.js.map +1 -1
- package/esm/schema-builder.js +27 -0
- package/esm/schema-builder.js.map +1 -1
- package/esm/types.d.ts +25 -9
- package/esm/types.d.ts.map +1 -1
- package/esm/util/cursors.d.ts.map +1 -1
- package/esm/util/cursors.js +2 -4
- package/esm/util/cursors.js.map +1 -1
- package/esm/util/datamodel.d.ts +3 -3
- package/esm/util/datamodel.d.ts.map +1 -1
- package/esm/util/datamodel.js +3 -2
- package/esm/util/datamodel.js.map +1 -1
- package/esm/util/map-query.d.ts.map +1 -1
- package/esm/util/map-query.js +17 -12
- package/esm/util/map-query.js.map +1 -1
- package/esm/util/usage.d.ts +1 -0
- package/esm/util/usage.d.ts.map +1 -1
- package/esm/util/usage.js +30 -0
- package/esm/util/usage.js.map +1 -1
- package/lib/connection-helpers.js.map +1 -1
- package/lib/index.js +50 -2
- package/lib/index.js.map +1 -1
- package/lib/interface-ref.js +36 -0
- package/lib/interface-ref.js.map +1 -0
- package/lib/model-loader.js.map +1 -1
- package/lib/prisma-field-builder.js +3 -3
- package/lib/prisma-field-builder.js.map +1 -1
- package/lib/schema-builder.js +27 -0
- package/lib/schema-builder.js.map +1 -1
- package/lib/util/cursors.js +2 -4
- package/lib/util/cursors.js.map +1 -1
- package/lib/util/datamodel.js +3 -2
- package/lib/util/datamodel.js.map +1 -1
- package/lib/util/map-query.js +16 -11
- package/lib/util/map-query.js.map +1 -1
- package/lib/util/usage.js +33 -0
- package/lib/util/usage.js.map +1 -1
- package/package.json +1 -1
- package/src/connection-helpers.ts +6 -6
- package/src/global-types.ts +36 -11
- package/src/index.ts +56 -2
- package/src/interface-ref.ts +18 -0
- package/src/model-loader.ts +13 -7
- package/src/prisma-field-builder.ts +7 -10
- package/src/schema-builder.ts +44 -1
- package/src/types.ts +66 -9
- package/src/util/cursors.ts +2 -4
- package/src/util/datamodel.ts +8 -3
- package/src/util/map-query.ts +32 -13
- package/src/util/usage.ts +31 -0
package/lib/util/map-query.js
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
127
|
+
addNestedSelections(parentType, context, info, state, info.fragments[selection.name.value].selectionSet, indirectPath);
|
|
125
128
|
continue;
|
|
126
129
|
case _graphql.Kind.INLINE_FRAGMENT:
|
|
127
|
-
|
|
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(
|
|
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
|
package/lib/util/usage.js.map
CHANGED
|
@@ -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;;
|
|
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
|
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
|
|
20
|
+
RefOrType extends PrismaRef<PrismaModelTypes> | keyof Types['PrismaTypes'],
|
|
21
21
|
Select extends Model['Select'] & {},
|
|
22
|
-
Model extends PrismaModelTypes = RefOrType extends
|
|
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
|
|
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
|
|
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
|
|
122
|
+
: refOrType) as PrismaRef<Model>,
|
|
123
123
|
resolve,
|
|
124
124
|
select: options.select ?? {},
|
|
125
125
|
getQuery,
|
package/src/global-types.ts
CHANGED
|
@@ -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
|
-
|
|
|
225
|
+
| PrismaRef<PrismaModelTypes>
|
|
201
226
|
| keyof Types['PrismaTypes']
|
|
202
227
|
| [keyof Types['PrismaTypes']]
|
|
203
|
-
| [
|
|
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 [
|
|
238
|
+
: TypeParam extends [PrismaRef<PrismaModelTypes>]
|
|
214
239
|
? TypeParam[0][typeof prismaModelKey]
|
|
215
|
-
: TypeParam extends
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
|
318
|
+
| PrismaRef<PrismaModelTypes>
|
|
294
319
|
| keyof Types['PrismaTypes']
|
|
295
320
|
| [keyof Types['PrismaTypes']]
|
|
296
|
-
| [
|
|
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 [
|
|
334
|
+
: TypeParam extends [PrismaRef<PrismaModelTypes>]
|
|
310
335
|
? TypeParam[0][typeof prismaModelKey]
|
|
311
|
-
: TypeParam extends
|
|
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
|
|
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
|
-
|
|
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
|
+
}
|
package/src/model-loader.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
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',
|
|
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
|
|
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:
|
|
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
|
|
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, {
|