@pothos/plugin-prisma 0.15.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/.turbo/turbo-build.log +17 -0
- package/.turbo/turbo-test.log +17 -0
- package/CHANGELOG.md +312 -0
- package/LICENSE +6 -0
- package/README.md +808 -0
- package/babel.config.js +3 -0
- package/bin/generator.js +2 -0
- package/esm/cursors.d.ts +55 -0
- package/esm/cursors.d.ts.map +1 -0
- package/esm/cursors.js +106 -0
- package/esm/cursors.js.map +1 -0
- package/esm/field-builder.d.ts +2 -0
- package/esm/field-builder.d.ts.map +1 -0
- package/esm/field-builder.js +51 -0
- package/esm/field-builder.js.map +1 -0
- package/esm/generator.d.ts +2 -0
- package/esm/generator.d.ts.map +1 -0
- package/esm/generator.js +82 -0
- package/esm/generator.js.map +1 -0
- package/esm/global-types.d.ts +52 -0
- package/esm/global-types.d.ts.map +1 -0
- package/esm/global-types.js +2 -0
- package/esm/global-types.js.map +1 -0
- package/esm/index.d.ts +11 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +14 -0
- package/esm/index.js.map +1 -0
- package/esm/loader-map.d.ts +6 -0
- package/esm/loader-map.d.ts.map +1 -0
- package/esm/loader-map.js +35 -0
- package/esm/loader-map.js.map +1 -0
- package/esm/model-loader.d.ts +17 -0
- package/esm/model-loader.d.ts.map +1 -0
- package/esm/model-loader.js +89 -0
- package/esm/model-loader.js.map +1 -0
- package/esm/node-ref.d.ts +10 -0
- package/esm/node-ref.d.ts.map +1 -0
- package/esm/node-ref.js +18 -0
- package/esm/node-ref.js.map +1 -0
- package/esm/package.json +3 -0
- package/esm/prisma-field-builder.d.ts +22 -0
- package/esm/prisma-field-builder.d.ts.map +1 -0
- package/esm/prisma-field-builder.js +178 -0
- package/esm/prisma-field-builder.js.map +1 -0
- package/esm/refs.d.ts +13 -0
- package/esm/refs.d.ts.map +1 -0
- package/esm/refs.js +63 -0
- package/esm/refs.js.map +1 -0
- package/esm/schema-builder.d.ts +2 -0
- package/esm/schema-builder.d.ts.map +1 -0
- package/esm/schema-builder.js +69 -0
- package/esm/schema-builder.js.map +1 -0
- package/esm/types.d.ts +164 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/types.js +2 -0
- package/esm/types.js.map +1 -0
- package/esm/util/index.d.ts +5 -0
- package/esm/util/index.d.ts.map +1 -0
- package/esm/util/index.js +16 -0
- package/esm/util/index.js.map +1 -0
- package/esm/util/map-includes.d.ts +5 -0
- package/esm/util/map-includes.d.ts.map +1 -0
- package/esm/util/map-includes.js +168 -0
- package/esm/util/map-includes.js.map +1 -0
- package/esm/util/merge-includes.d.ts +3 -0
- package/esm/util/merge-includes.d.ts.map +1 -0
- package/esm/util/merge-includes.js +91 -0
- package/esm/util/merge-includes.js.map +1 -0
- package/generated.ts +54 -0
- package/lib/cursors.d.ts +55 -0
- package/lib/cursors.d.ts.map +1 -0
- package/lib/cursors.js +112 -0
- package/lib/cursors.js.map +1 -0
- package/lib/field-builder.d.ts +2 -0
- package/lib/field-builder.d.ts.map +1 -0
- package/lib/field-builder.js +63 -0
- package/lib/field-builder.js.map +1 -0
- package/lib/generator.d.ts +2 -0
- package/lib/generator.d.ts.map +1 -0
- package/lib/generator.js +103 -0
- package/lib/generator.js.map +1 -0
- package/lib/global-types.d.ts +52 -0
- package/lib/global-types.d.ts.map +1 -0
- package/lib/global-types.js +3 -0
- package/lib/global-types.js.map +1 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +40 -0
- package/lib/index.js.map +1 -0
- package/lib/loader-map.d.ts +6 -0
- package/lib/loader-map.d.ts.map +1 -0
- package/lib/loader-map.js +41 -0
- package/lib/loader-map.js.map +1 -0
- package/lib/model-loader.d.ts +17 -0
- package/lib/model-loader.d.ts.map +1 -0
- package/lib/model-loader.js +93 -0
- package/lib/model-loader.js.map +1 -0
- package/lib/node-ref.d.ts +10 -0
- package/lib/node-ref.d.ts.map +1 -0
- package/lib/node-ref.js +21 -0
- package/lib/node-ref.js.map +1 -0
- package/lib/prisma-field-builder.d.ts +22 -0
- package/lib/prisma-field-builder.d.ts.map +1 -0
- package/lib/prisma-field-builder.js +182 -0
- package/lib/prisma-field-builder.js.map +1 -0
- package/lib/refs.d.ts +13 -0
- package/lib/refs.d.ts.map +1 -0
- package/lib/refs.js +72 -0
- package/lib/refs.js.map +1 -0
- package/lib/schema-builder.d.ts +2 -0
- package/lib/schema-builder.d.ts.map +1 -0
- package/lib/schema-builder.js +93 -0
- package/lib/schema-builder.js.map +1 -0
- package/lib/types.d.ts +164 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +4 -0
- package/lib/types.js.map +1 -0
- package/lib/util/index.d.ts +5 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/index.js +30 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/map-includes.d.ts +5 -0
- package/lib/util/map-includes.d.ts.map +1 -0
- package/lib/util/map-includes.js +173 -0
- package/lib/util/map-includes.js.map +1 -0
- package/lib/util/merge-includes.d.ts +3 -0
- package/lib/util/merge-includes.d.ts.map +1 -0
- package/lib/util/merge-includes.js +96 -0
- package/lib/util/merge-includes.js.map +1 -0
- package/package.json +70 -0
- package/src/cursors.ts +159 -0
- package/src/field-builder.ts +115 -0
- package/src/generator.ts +184 -0
- package/src/global-types.ts +180 -0
- package/src/index.ts +18 -0
- package/src/loader-map.ts +48 -0
- package/src/model-loader.ts +135 -0
- package/src/node-ref.ts +29 -0
- package/src/prisma-field-builder.ts +324 -0
- package/src/refs.ts +110 -0
- package/src/schema-builder.ts +124 -0
- package/src/types.ts +470 -0
- package/src/util/index.ts +26 -0
- package/src/util/map-includes.ts +298 -0
- package/src/util/merge-includes.ts +121 -0
- package/tsconfig.json +21 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-loader.js","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { abstractReturnShapeKey, ObjectRef } from '@pothos/core';
|
|
2
|
+
import { WithBrand } from './types';
|
|
3
|
+
export default class PrismaNodeRef<T> extends ObjectRef<T, T> {
|
|
4
|
+
[abstractReturnShapeKey]: WithBrand<T>;
|
|
5
|
+
addBrand<V extends T | T[]>(value: V): V extends T[] ? {
|
|
6
|
+
[K in keyof V]: WithBrand<V[K]>;
|
|
7
|
+
} : WithBrand<V>;
|
|
8
|
+
hasBrand(value: unknown): boolean;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=node-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-ref.d.ts","sourceRoot":"","sources":["../src/node-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAiB,SAAS,EAAgB,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,sBAAsB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAEvC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EACxB,KAAK,EAAE,CAAC,GACP,CAAC,SAAS,CAAC,EAAE,GAAG;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IAYrE,QAAQ,CAAC,KAAK,EAAE,OAAO;CAQxB"}
|
package/esm/node-ref.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { abstractReturnShapeKey, brandWithType, ObjectRef, typeBrandKey } from '@pothos/core';
|
|
2
|
+
export default class PrismaNodeRef extends ObjectRef {
|
|
3
|
+
addBrand(value) {
|
|
4
|
+
if (Array.isArray(value)) {
|
|
5
|
+
value.forEach((val) => void brandWithType(val, this.name));
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
brandWithType(value, this.name);
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
hasBrand(value) {
|
|
12
|
+
return (typeof value === "object" &&
|
|
13
|
+
value !== null &&
|
|
14
|
+
typeBrandKey in value &&
|
|
15
|
+
value[typeBrandKey] === this.name);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=node-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-ref.js","sourceRoot":"","sources":["../src/node-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG9F,MAAM,CAAC,OAAO,OAAO,aAAiB,SAAQ,SAAe;IAG3D,QAAQ,CACN,KAAQ;QAER,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,IAAa,CAAC,CAAC,CAAC;YAEpE,OAAO,KAAc,CAAC;SACvB;QAED,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAa,CAAC,CAAC;QAEzC,OAAO,KAAc,CAAC;IACxB,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,YAAY,IAAI,KAAK;YACpB,KAAsC,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,IAAI,CACpE,CAAC;IACJ,CAAC;CACF"}
|
package/esm/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FieldRef, InputFieldMap, NormalizeArgs, ObjectFieldBuilder, ObjectRef, PluginName, SchemaTypes } from '@pothos/core';
|
|
2
|
+
import { PrismaDelegate, PrismaModelTypes, RelatedConnectionOptions, RelatedFieldOptions, RelationCountOptions } from './types';
|
|
3
|
+
export declare class PrismaObjectFieldBuilder<Types extends SchemaTypes, Model extends PrismaModelTypes, NeedsResolve extends boolean, Shape extends object = Model['Shape']> extends ObjectFieldBuilder<Types, Shape> {
|
|
4
|
+
delegate: PrismaDelegate;
|
|
5
|
+
model: string;
|
|
6
|
+
relatedConnection: 'relay' extends PluginName ? <Field extends Model['ListRelations'], Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape>(...args: NormalizeArgs<[
|
|
7
|
+
field: Field,
|
|
8
|
+
options: RelatedConnectionOptions<Types, Model, Field, Nullable, Args, NeedsResolve>,
|
|
9
|
+
connectionOptions?: PothosSchemaTypes.ConnectionObjectOptions<Types, ObjectRef<Shape>, ResolveReturnShape>,
|
|
10
|
+
edgeOptions?: PothosSchemaTypes.ConnectionEdgeObjectOptions<Types, ObjectRef<Shape>, ResolveReturnShape>
|
|
11
|
+
]>) => FieldRef<PothosSchemaTypes.ConnectionShapeHelper<Types, Shape, Nullable>['shape']> : '@pothos/plugin-relay is required to use this method';
|
|
12
|
+
constructor(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, model: string);
|
|
13
|
+
relation<Field extends Model['Fields'], Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape>(...allArgs: NormalizeArgs<[
|
|
14
|
+
name: Field,
|
|
15
|
+
options?: RelatedFieldOptions<Types, Model, Field, Nullable, Args, ResolveReturnShape, NeedsResolve, Shape>
|
|
16
|
+
]>): FieldRef<Model['Relations'][Field]['Shape'], 'Object'>;
|
|
17
|
+
relationCount<Field extends Model['Fields']>(...allArgs: NormalizeArgs<[
|
|
18
|
+
name: Field,
|
|
19
|
+
options?: RelationCountOptions<Types, Shape, NeedsResolve>
|
|
20
|
+
]>): FieldRef<number, 'Object'>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=prisma-field-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-field-builder.d.ts","sourceRoot":"","sources":["../src/prisma-field-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,aAAa,EAEb,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,cAAc,CAAC;AAKtB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAGjB,qBAAa,wBAAwB,CACnC,KAAK,SAAS,WAAW,EACzB,KAAK,SAAS,gBAAgB,EAC9B,YAAY,SAAS,OAAO,EAC5B,KAAK,SAAS,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CACrC,SAAQ,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd,iBAAiB,EAAE,OAAO,SAAS,UAAU,GACzC,CACE,KAAK,SAAS,KAAK,CAAC,eAAe,CAAC,EACpC,QAAQ,SAAS,OAAO,EACxB,IAAI,SAAS,aAAa,EAC1B,kBAAkB,EAElB,GAAG,IAAI,EAAE,aAAa,CACpB;QACE,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC;QACpF,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,uBAAuB,CAC3D,KAAK,EACL,SAAS,CAAC,KAAK,CAAC,EAChB,kBAAkB,CACnB;QACD,WAAW,CAAC,EAAE,iBAAiB,CAAC,2BAA2B,CACzD,KAAK,EACL,SAAS,CAAC,KAAK,CAAC,EAChB,kBAAkB,CACnB;KACF,CACF,KACE,QAAQ,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GACvF,qDAAqD,CA4I9C;gBAEC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM;IAOxF,QAAQ,CACN,KAAK,SAAS,KAAK,CAAC,QAAQ,CAAC,EAC7B,QAAQ,SAAS,OAAO,EACxB,IAAI,SAAS,aAAa,EAC1B,kBAAkB,EAElB,GAAG,OAAO,EAAE,aAAa,CACvB;QACE,IAAI,EAAE,KAAK;QACX,OAAO,CAAC,EAAE,mBAAmB,CAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,kBAAkB,EAClB,YAAY,EACZ,KAAK,CACN;KACF,CACF,GACA,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAwDzD,aAAa,CAAC,KAAK,SAAS,KAAK,CAAC,QAAQ,CAAC,EACzC,GAAG,OAAO,EAAE,aAAa,CACvB;QAAC,IAAI,EAAE,KAAK;QAAE,OAAO,CAAC,EAAE,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC;KAAC,CAC1E,GACA,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;CAmC9B"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { ObjectFieldBuilder, } from '@pothos/core';
|
|
2
|
+
import { prismaCursorConnectionQuery, wrapConnectionResult } from './cursors.js';
|
|
3
|
+
import { getLoaderMapping, setLoaderMappings } from './loader-map.js';
|
|
4
|
+
import { ModelLoader } from './model-loader.js';
|
|
5
|
+
import { getDelegateFromModel, getFindUniqueForRef, getRefFromModel, getRelation } from './refs.js';
|
|
6
|
+
import { queryFromInfo } from './util/index.js';
|
|
7
|
+
export class PrismaObjectFieldBuilder extends ObjectFieldBuilder {
|
|
8
|
+
constructor(name, builder, model) {
|
|
9
|
+
super(name, builder);
|
|
10
|
+
this.relatedConnection = function relatedConnection(name, { maxSize, defaultSize, cursor, query, resolve, extensions, totalCount, ...options }, connectionOptions = {}, edgeOptions = {}) {
|
|
11
|
+
var _a;
|
|
12
|
+
const relationField = getRelation(this.model, this.builder, name);
|
|
13
|
+
const parentRef = getRefFromModel(this.model, this.builder);
|
|
14
|
+
const relationTypeName = typeof relationField.type === "string" ? relationField.type : relationField.type.name;
|
|
15
|
+
const ref = getRefFromModel(relationTypeName, this.builder);
|
|
16
|
+
const findUnique = getFindUniqueForRef(parentRef, this.builder);
|
|
17
|
+
const loaderCache = ModelLoader.forModel(this.model, this.builder);
|
|
18
|
+
let typeName;
|
|
19
|
+
const getQuery = (args, ctx) => ({
|
|
20
|
+
...(typeof query === "function" ? query(args, ctx) : query),
|
|
21
|
+
...prismaCursorConnectionQuery({
|
|
22
|
+
column: cursor,
|
|
23
|
+
maxSize,
|
|
24
|
+
defaultSize,
|
|
25
|
+
args,
|
|
26
|
+
}),
|
|
27
|
+
});
|
|
28
|
+
const fieldRef = this.connection({
|
|
29
|
+
...options,
|
|
30
|
+
extensions: {
|
|
31
|
+
...extensions,
|
|
32
|
+
pothosPrismaQuery: getQuery,
|
|
33
|
+
pothosPrismaRelation: name,
|
|
34
|
+
},
|
|
35
|
+
type: ref,
|
|
36
|
+
resolve: async (parent, args, context, info) => {
|
|
37
|
+
var _a;
|
|
38
|
+
const connectionQuery = getQuery(args, context);
|
|
39
|
+
const getResult = () => {
|
|
40
|
+
const mapping = getLoaderMapping(context, info.path);
|
|
41
|
+
const loadedValue = parent[name];
|
|
42
|
+
if (
|
|
43
|
+
// if we attempted to load the relation, and its missing it will be null
|
|
44
|
+
// undefined means that the query was not constructed in a way that requested the relation
|
|
45
|
+
loadedValue !== undefined &&
|
|
46
|
+
mapping) {
|
|
47
|
+
if (loadedValue !== null && loadedValue !== undefined) {
|
|
48
|
+
setLoaderMappings(context, info.path, mapping);
|
|
49
|
+
}
|
|
50
|
+
return loadedValue;
|
|
51
|
+
}
|
|
52
|
+
if (!resolve && !findUnique) {
|
|
53
|
+
throw new Error(`Missing findUnique for Prisma type ${this.model}`);
|
|
54
|
+
}
|
|
55
|
+
const mergedQuery = { ...queryFromInfo(context, info), ...connectionQuery };
|
|
56
|
+
if (resolve) {
|
|
57
|
+
return resolve(mergedQuery, parent, args, context, info);
|
|
58
|
+
}
|
|
59
|
+
return loaderCache(parent).loadRelation(name, mergedQuery, context);
|
|
60
|
+
};
|
|
61
|
+
return wrapConnectionResult(await getResult(), args, connectionQuery.take, cursor, (_a = parent._count) === null || _a === void 0 ? void 0 : _a[name]);
|
|
62
|
+
},
|
|
63
|
+
}, {
|
|
64
|
+
...connectionOptions,
|
|
65
|
+
fields: totalCount
|
|
66
|
+
? (t) => {
|
|
67
|
+
var _a, _b;
|
|
68
|
+
return ({
|
|
69
|
+
totalCount: t.int({
|
|
70
|
+
extensions: {
|
|
71
|
+
pothosPrismaRelationCountForParent: name,
|
|
72
|
+
},
|
|
73
|
+
resolve: (parent, args, context) => {
|
|
74
|
+
const loadedValue = parent.totalCount;
|
|
75
|
+
if (loadedValue !== undefined) {
|
|
76
|
+
return loadedValue;
|
|
77
|
+
}
|
|
78
|
+
return loaderCache(parent).loadCount(name, context);
|
|
79
|
+
},
|
|
80
|
+
}),
|
|
81
|
+
...(_b = (_a = connectionOptions).fields) === null || _b === void 0 ? void 0 : _b.call(_a, t),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
: connectionOptions.fields,
|
|
85
|
+
extensions: {
|
|
86
|
+
...(_a = connectionOptions) === null || _a === void 0 ? void 0 : _a.extensions,
|
|
87
|
+
pothosPrismaIndirectInclude: {
|
|
88
|
+
getType: () => {
|
|
89
|
+
if (!typeName) {
|
|
90
|
+
typeName = this.builder.configStore.getTypeConfig(ref).name;
|
|
91
|
+
}
|
|
92
|
+
return typeName;
|
|
93
|
+
},
|
|
94
|
+
path: [{ name: "edges" }, { name: "node" }],
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
}, edgeOptions);
|
|
98
|
+
return fieldRef;
|
|
99
|
+
};
|
|
100
|
+
this.model = model;
|
|
101
|
+
this.delegate = getDelegateFromModel(builder.options.prisma.client, model);
|
|
102
|
+
}
|
|
103
|
+
relation(...allArgs) {
|
|
104
|
+
const [name, options = {}] = allArgs;
|
|
105
|
+
const relationField = getRelation(this.model, this.builder, name);
|
|
106
|
+
const parentRef = getRefFromModel(this.model, this.builder);
|
|
107
|
+
const relationTypeName = typeof relationField.type === "string" ? relationField.type : relationField.type.name;
|
|
108
|
+
const ref = getRefFromModel(relationTypeName, this.builder);
|
|
109
|
+
const findUnique = getFindUniqueForRef(parentRef, this.builder);
|
|
110
|
+
const loaderCache = ModelLoader.forModel(this.model, this.builder);
|
|
111
|
+
const { query = {}, resolve, ...rest } = options;
|
|
112
|
+
return this.field({
|
|
113
|
+
...rest,
|
|
114
|
+
type: relationField.isList ? [ref] : ref,
|
|
115
|
+
extensions: {
|
|
116
|
+
...options.extensions,
|
|
117
|
+
pothosPrismaQuery: query,
|
|
118
|
+
pothosPrismaRelation: name,
|
|
119
|
+
},
|
|
120
|
+
resolve: (parent, args, context, info) => {
|
|
121
|
+
const mapping = getLoaderMapping(context, info.path);
|
|
122
|
+
const loadedValue = parent[name];
|
|
123
|
+
if (
|
|
124
|
+
// if we attempted to load the relation, and its missing it will be null
|
|
125
|
+
// undefined means that the query was not constructed in a way that requested the relation
|
|
126
|
+
loadedValue !== undefined &&
|
|
127
|
+
mapping) {
|
|
128
|
+
if (loadedValue !== null && loadedValue !== undefined) {
|
|
129
|
+
setLoaderMappings(context, info.path, mapping);
|
|
130
|
+
}
|
|
131
|
+
return loadedValue;
|
|
132
|
+
}
|
|
133
|
+
const queryOptions = {
|
|
134
|
+
...(typeof query === "function" ? query(args, context) : query),
|
|
135
|
+
...queryFromInfo(context, info),
|
|
136
|
+
};
|
|
137
|
+
if (resolve) {
|
|
138
|
+
return resolve(queryOptions, parent, args, context, info);
|
|
139
|
+
}
|
|
140
|
+
if (!findUnique) {
|
|
141
|
+
throw new Error(`Missing findUnique for Prisma type ${this.model}`);
|
|
142
|
+
}
|
|
143
|
+
return loaderCache(parent).loadRelation(name, queryOptions, context);
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
relationCount(...allArgs) {
|
|
148
|
+
const [name, options = {}] = allArgs;
|
|
149
|
+
const parentRef = getRefFromModel(this.model, this.builder);
|
|
150
|
+
const findUnique = getFindUniqueForRef(parentRef, this.builder);
|
|
151
|
+
const loaderCache = ModelLoader.forModel(this.model, this.builder);
|
|
152
|
+
const { resolve, ...rest } = options;
|
|
153
|
+
return this.field({
|
|
154
|
+
...rest,
|
|
155
|
+
type: "Int",
|
|
156
|
+
nullable: false,
|
|
157
|
+
extensions: {
|
|
158
|
+
...options.extensions,
|
|
159
|
+
pothosPrismaRelationCount: name,
|
|
160
|
+
},
|
|
161
|
+
resolve: (parent, args, context, info) => {
|
|
162
|
+
var _a;
|
|
163
|
+
const loadedValue = (_a = parent._count) === null || _a === void 0 ? void 0 : _a[name];
|
|
164
|
+
if (loadedValue !== undefined) {
|
|
165
|
+
return loadedValue;
|
|
166
|
+
}
|
|
167
|
+
if (resolve) {
|
|
168
|
+
return resolve(parent, args, context, info);
|
|
169
|
+
}
|
|
170
|
+
if (!findUnique) {
|
|
171
|
+
throw new Error(`Missing findUnique for Prisma type ${this.model}`);
|
|
172
|
+
}
|
|
173
|
+
return loaderCache(parent).loadCount(name, context);
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=prisma-field-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma-field-builder.js","sourceRoot":"","sources":["../src/prisma-field-builder.ts"],"names":[],"mappings":"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"}
|
package/esm/refs.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ObjectRef, SchemaTypes } from '@pothos/core';
|
|
2
|
+
import { Prisma } from '../tests/client';
|
|
3
|
+
import { PrismaDelegate } from './types';
|
|
4
|
+
export declare const refMap: WeakMap<object, Map<string, ObjectRef<unknown, unknown>>>;
|
|
5
|
+
export declare const findUniqueMap: WeakMap<object, Map<ObjectRef<unknown, unknown>, ((args: unknown, ctx: {}) => unknown) | null>>;
|
|
6
|
+
export declare const includeForRefMap: WeakMap<object, Map<ObjectRef<unknown, unknown>, Record<string, unknown> | null>>;
|
|
7
|
+
export declare function getRefFromModel<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): ObjectRef<unknown>;
|
|
8
|
+
export declare function getFindUniqueForRef<Types extends SchemaTypes>(ref: ObjectRef<unknown>, builder: PothosSchemaTypes.SchemaBuilder<Types>): ((args: unknown, context: Types['Context']) => unknown) | null;
|
|
9
|
+
export declare function setFindUniqueForRef<Types extends SchemaTypes>(ref: ObjectRef<unknown>, builder: PothosSchemaTypes.SchemaBuilder<Types>, findUnique: ((args: any, context: Types['Context']) => unknown) | null): void;
|
|
10
|
+
export declare function getRelation<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, relation: string): Prisma.DMMF.Field;
|
|
11
|
+
export declare function getRelatedDelegate<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, relation: string): string | Prisma.DMMF.SchemaEnum | Prisma.DMMF.OutputType | Prisma.DMMF.SchemaArg;
|
|
12
|
+
export declare function getDelegateFromModel(client: Record<string, unknown>, model: string): PrismaDelegate;
|
|
13
|
+
//# sourceMappingURL=refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,MAAM,2DAAyD,CAAC;AAC7E,eAAO,MAAM,aAAa,2DAEQ,OAAO,OAAO,EAAE,KAAK,OAAO,UAC3D,CAAC;AAEJ,eAAO,MAAM,gBAAgB,mFAG1B,CAAC;AAEJ,wBAAgB,eAAe,CAAC,KAAK,SAAS,WAAW,EACvD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,GAC9C,SAAS,CAAC,OAAO,CAAC,CAWpB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,WAAW,EAC3D,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,EACvB,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,WAWd,OAAO,WAAW,KAAK,CAAC,SAAS,CAAC,KAAK,OAAO,SAChF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,SAAS,WAAW,EAC3D,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,EACvB,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAE/C,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,GAAG,IAAI,QAQvE;AAED,wBAAgB,WAAW,CAAC,KAAK,SAAS,WAAW,EACnD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAC/C,QAAQ,EAAE,MAAM,qBAuBjB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,SAAS,WAAW,EAC1D,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAC/C,QAAQ,EAAE,MAAM,oFAKjB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,kBAUlF"}
|
package/esm/refs.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export const refMap = new WeakMap();
|
|
2
|
+
export const findUniqueMap = new WeakMap();
|
|
3
|
+
export const includeForRefMap = new WeakMap();
|
|
4
|
+
export function getRefFromModel(name, builder) {
|
|
5
|
+
if (!refMap.has(builder)) {
|
|
6
|
+
refMap.set(builder, new Map());
|
|
7
|
+
}
|
|
8
|
+
const cache = refMap.get(builder);
|
|
9
|
+
if (!cache.has(name)) {
|
|
10
|
+
cache.set(name, builder.objectRef(name));
|
|
11
|
+
}
|
|
12
|
+
return cache.get(name);
|
|
13
|
+
}
|
|
14
|
+
export function getFindUniqueForRef(ref, builder) {
|
|
15
|
+
if (!findUniqueMap.has(builder)) {
|
|
16
|
+
findUniqueMap.set(builder, new Map());
|
|
17
|
+
}
|
|
18
|
+
const cache = findUniqueMap.get(builder);
|
|
19
|
+
if (!cache.has(ref)) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return cache.get(ref);
|
|
23
|
+
}
|
|
24
|
+
export function setFindUniqueForRef(ref, builder,
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
|
+
findUnique) {
|
|
27
|
+
if (!findUniqueMap.has(builder)) {
|
|
28
|
+
findUniqueMap.set(builder, new Map());
|
|
29
|
+
}
|
|
30
|
+
const cache = findUniqueMap.get(builder);
|
|
31
|
+
cache.set(ref, findUnique);
|
|
32
|
+
}
|
|
33
|
+
export function getRelation(name, builder, relation) {
|
|
34
|
+
const { client } = builder.options.prisma;
|
|
35
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
36
|
+
const dmmf = client
|
|
37
|
+
._dmmf;
|
|
38
|
+
const modelData = dmmf.modelMap[name];
|
|
39
|
+
if (!modelData) {
|
|
40
|
+
throw new Error(`Model '${name}' not found in DMMF`);
|
|
41
|
+
}
|
|
42
|
+
const fieldData = modelData.fields.find((field) => field.name === relation);
|
|
43
|
+
if (!fieldData) {
|
|
44
|
+
throw new Error(`Field '${relation}' not found in model '${name}'`);
|
|
45
|
+
}
|
|
46
|
+
if (fieldData.kind !== "object") {
|
|
47
|
+
throw new Error(`Field ${relation} of model '${name}' is not a relation (${fieldData.kind})`);
|
|
48
|
+
}
|
|
49
|
+
return fieldData;
|
|
50
|
+
}
|
|
51
|
+
export function getRelatedDelegate(name, builder, relation) {
|
|
52
|
+
const fieldData = getRelation(name, builder, relation);
|
|
53
|
+
return fieldData.type;
|
|
54
|
+
}
|
|
55
|
+
export function getDelegateFromModel(client, model) {
|
|
56
|
+
const lowerCase = `${model.slice(0, 1).toLowerCase()}${model.slice(1)}`;
|
|
57
|
+
const delegate = lowerCase in client ? client[lowerCase] : null;
|
|
58
|
+
if (!delegate) {
|
|
59
|
+
throw new Error(`Unable to find delegate for model ${model}`);
|
|
60
|
+
}
|
|
61
|
+
return delegate;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=refs.js.map
|
package/esm/refs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../src/schema-builder.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import './global-types.js';
|
|
2
|
+
import SchemaBuilder, { brandWithType, } from '@pothos/core';
|
|
3
|
+
import { PrismaObjectFieldBuilder } from './field-builder.js';
|
|
4
|
+
import PrismaNodeRef from './node-ref.js';
|
|
5
|
+
import { getDelegateFromModel, getRefFromModel, setFindUniqueForRef } from './refs.js';
|
|
6
|
+
import { queryFromInfo } from './util/index.js';
|
|
7
|
+
const schemaBuilderProto = SchemaBuilder.prototype;
|
|
8
|
+
schemaBuilderProto.prismaObject = function prismaObject(type, { fields, findUnique, ...options }) {
|
|
9
|
+
var _a;
|
|
10
|
+
const ref = getRefFromModel(type, this);
|
|
11
|
+
const name = (_a = options.name) !== null && _a !== void 0 ? _a : type;
|
|
12
|
+
ref.name = name;
|
|
13
|
+
setFindUniqueForRef(ref, this, findUnique);
|
|
14
|
+
this.objectType(ref, {
|
|
15
|
+
...options,
|
|
16
|
+
extensions: {
|
|
17
|
+
...options.extensions,
|
|
18
|
+
pothosPrismaInclude: options.include,
|
|
19
|
+
},
|
|
20
|
+
name,
|
|
21
|
+
fields: fields ? () => fields(new PrismaObjectFieldBuilder(name, this, type)) : undefined,
|
|
22
|
+
});
|
|
23
|
+
return ref;
|
|
24
|
+
};
|
|
25
|
+
schemaBuilderProto.prismaNode = function prismaNode(type, { findUnique, name, ...options }) {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
const interfaceRef = (_a = this.nodeInterfaceRef) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
28
|
+
if (!interfaceRef) {
|
|
29
|
+
throw new TypeError("builder.prismaNode requires @pothos/plugin-relay to be installed");
|
|
30
|
+
}
|
|
31
|
+
const typeName = name !== null && name !== void 0 ? name : type;
|
|
32
|
+
const delegate = getDelegateFromModel(this.options.prisma.client, type);
|
|
33
|
+
const nodeRef = new PrismaNodeRef(typeName);
|
|
34
|
+
const extendedOptions = {
|
|
35
|
+
...options,
|
|
36
|
+
interfaces: [interfaceRef, ...((_b = options.interfaces) !== null && _b !== void 0 ? _b : [])],
|
|
37
|
+
extensions: {
|
|
38
|
+
...options.extensions,
|
|
39
|
+
pothosPrismaInclude: options.include,
|
|
40
|
+
},
|
|
41
|
+
isTypeOf: (val) => nodeRef.hasBrand(val),
|
|
42
|
+
findUnique: (parent, context) => findUnique(options.id.resolve(parent, context), context),
|
|
43
|
+
loadWithoutCache: async (id, context, info) => {
|
|
44
|
+
const query = queryFromInfo(context, info, typeName);
|
|
45
|
+
const record = await delegate.findUnique({
|
|
46
|
+
...query,
|
|
47
|
+
rejectOnNotFound: true,
|
|
48
|
+
where: findUnique(id, context),
|
|
49
|
+
});
|
|
50
|
+
brandWithType(record, typeName);
|
|
51
|
+
return record;
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
const ref = this.prismaObject(type, extendedOptions);
|
|
55
|
+
this.configStore.onTypeConfig(ref, (nodeConfig) => {
|
|
56
|
+
this.objectField(ref, "id", (t) => t.globalID({
|
|
57
|
+
...options.id,
|
|
58
|
+
nullable: false,
|
|
59
|
+
args: {},
|
|
60
|
+
resolve: async (parent, args, context, info) => ({
|
|
61
|
+
type: nodeConfig.name,
|
|
62
|
+
id: await options.id.resolve(parent, context),
|
|
63
|
+
}),
|
|
64
|
+
}));
|
|
65
|
+
});
|
|
66
|
+
this.configStore.associateRefWithName(nodeRef, typeName);
|
|
67
|
+
return nodeRef;
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=schema-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../src/schema-builder.ts"],"names":[],"mappings":"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"}
|
package/esm/types.d.ts
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { GraphQLResolveInfo } from 'graphql';
|
|
2
|
+
import { FieldKind, FieldMap, FieldNullability, FieldOptionsFromKind, InputFieldMap, InputFieldsFromShape, InputShapeFromFields, InterfaceParam, ListResolveValue, MaybePromise, ObjectRef, OutputShape, OutputType, SchemaTypes, ShapeFromTypeParam, ShapeWithNullability, typeBrandKey, TypeParam } from '@pothos/core';
|
|
3
|
+
import { PrismaObjectFieldBuilder } from './field-builder';
|
|
4
|
+
export interface PrismaDelegate {
|
|
5
|
+
findUnique: (...args: any[]) => Promise<unknown>;
|
|
6
|
+
}
|
|
7
|
+
declare type RelationKeys<T> = {
|
|
8
|
+
[K in keyof T]: T[K] extends (args: {}) => {
|
|
9
|
+
then: (cb: (result: unknown) => unknown) => unknown;
|
|
10
|
+
} ? K : never;
|
|
11
|
+
}[keyof T];
|
|
12
|
+
export declare type ModelTypes<Model extends {}> = Model extends {
|
|
13
|
+
findUnique: (options: infer UniqueOptions & {
|
|
14
|
+
where?: infer Where | null | undefined;
|
|
15
|
+
select?: infer Select | null | undefined;
|
|
16
|
+
} & ({
|
|
17
|
+
include?: infer Include | null | undefined;
|
|
18
|
+
} | {})) => infer Chain & {
|
|
19
|
+
then: (cb: (result: infer Shape | null) => unknown) => unknown;
|
|
20
|
+
};
|
|
21
|
+
} ? PrismaModelTypes & {
|
|
22
|
+
Shape: Shape;
|
|
23
|
+
Include: unknown extends Include ? never : Include;
|
|
24
|
+
Where: Where;
|
|
25
|
+
Fields: keyof Select;
|
|
26
|
+
ListRelation: ListRelationFields<Include> & string;
|
|
27
|
+
Relations: {
|
|
28
|
+
[RelationName in RelationKeys<Chain>]: Chain[RelationName] extends (args: {}) => {
|
|
29
|
+
then: (cb: (result: infer Relation) => unknown) => unknown;
|
|
30
|
+
} ? {
|
|
31
|
+
Shape: Relation;
|
|
32
|
+
Types: PrismaModelTypes;
|
|
33
|
+
} : never;
|
|
34
|
+
};
|
|
35
|
+
} : never;
|
|
36
|
+
export interface PrismaModelTypes {
|
|
37
|
+
Shape: {};
|
|
38
|
+
Include: unknown;
|
|
39
|
+
Where: {};
|
|
40
|
+
Fields: string;
|
|
41
|
+
ListRelations: string;
|
|
42
|
+
Relations: Record<string, {
|
|
43
|
+
Shape: unknown;
|
|
44
|
+
Types: PrismaModelTypes;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
export declare type ListRelationFields<T> = {
|
|
48
|
+
[K in keyof T]: T[K] extends infer Option ? Option extends {
|
|
49
|
+
orderBy?: unknown;
|
|
50
|
+
} ? K : never : never;
|
|
51
|
+
}[keyof T];
|
|
52
|
+
export declare type PrismaObjectFieldsShape<Types extends SchemaTypes, Model extends PrismaModelTypes, NeedsResolve extends boolean, Shape extends object> = (t: PrismaObjectFieldBuilder<Types, Model, NeedsResolve, Shape>) => FieldMap;
|
|
53
|
+
export declare type ShapeFromInclude<Model extends PrismaModelTypes, Include> = {} extends Include ? Model['Shape'] : {
|
|
54
|
+
[K in keyof Include & keyof Model['Relations']]: Model['Relations'][K]['Shape'] extends infer RelationShape ? RelationShape extends (infer ItemShape)[] ? (ItemShape & (Include[K] extends {
|
|
55
|
+
include?: infer NestedInclude & object;
|
|
56
|
+
} ? ShapeFromInclude<Model['Relations'][K]['Types'], NestedInclude> : {}))[] : RelationShape & ((Include[K] extends {
|
|
57
|
+
include?: infer NestedInclude & object;
|
|
58
|
+
} ? ShapeFromInclude<Model['Relations'][K]['Types'], NestedInclude> : {}) | null) : never;
|
|
59
|
+
};
|
|
60
|
+
export declare type ShapeWithInclude<Model extends PrismaModelTypes, Include extends Model['Include']> = Model['Shape'] & ([Include] extends [never] ? {} : ShapeFromInclude<Model, Include>);
|
|
61
|
+
export declare type PrismaObjectTypeOptions<Types extends SchemaTypes, Model extends PrismaModelTypes, Interfaces extends InterfaceParam<Types>[], FindUnique, Include extends Model['Include'], Shape extends object> = Omit<PothosSchemaTypes.ObjectTypeOptions<Types, ObjectRef<Shape>> | PothosSchemaTypes.ObjectTypeWithInterfaceOptions<Types, ObjectRef<Shape>, Interfaces>, 'fields'> & {
|
|
62
|
+
name?: string;
|
|
63
|
+
include?: Include;
|
|
64
|
+
fields?: PrismaObjectFieldsShape<Types, Model, FindUnique extends null ? true : false, Shape>;
|
|
65
|
+
findUnique: FindUnique & (((parent: Shape, context: Types['Context']) => Model['Where']) | null);
|
|
66
|
+
};
|
|
67
|
+
export declare type PrismaNodeOptions<Types extends SchemaTypes, Model extends PrismaModelTypes, Interfaces extends InterfaceParam<Types>[], Include extends Model['Include'], Shape extends object> = Omit<PothosSchemaTypes.ObjectTypeOptions<Types, Shape> | PothosSchemaTypes.ObjectTypeWithInterfaceOptions<Types, ObjectRef<Shape>, Interfaces>, 'fields' | 'isTypeOf'> & {
|
|
68
|
+
name?: string;
|
|
69
|
+
include?: Include;
|
|
70
|
+
id: Omit<FieldOptionsFromKind<Types, Shape, 'ID', false, {}, 'Object', OutputShape<Types, 'ID'>, MaybePromise<OutputShape<Types, 'ID'>>>, 'args' | 'nullable' | 'resolve' | 'type'> & {
|
|
71
|
+
resolve: (parent: Shape, context: Types['Context']) => MaybePromise<OutputShape<Types, 'ID'>>;
|
|
72
|
+
};
|
|
73
|
+
fields?: PrismaObjectFieldsShape<Types, Model, false, Shape>;
|
|
74
|
+
findUnique: (id: string, context: Types['Context']) => Model['Where'];
|
|
75
|
+
};
|
|
76
|
+
export declare type QueryForField<Types extends SchemaTypes, Args extends InputFieldMap, Include> = Include extends {
|
|
77
|
+
where?: unknown;
|
|
78
|
+
} ? Omit<Include, 'include' | 'select'> | ((args: InputShapeFromFields<Args>, ctx: Types['Context']) => Omit<Include, 'include' | 'select'>) : never;
|
|
79
|
+
export declare type IncludeFromRelation<Model extends PrismaModelTypes, Field extends keyof Model['Include']> = Model['Include'][Field] extends infer Include ? Include extends {
|
|
80
|
+
include?: infer T;
|
|
81
|
+
} ? NonNullable<T> : never : never;
|
|
82
|
+
export declare type CursorFromRelation<Model extends PrismaModelTypes, Field extends Model['ListRelations']> = Field extends keyof Model['Include'] ? Model['Include'][Field] extends infer Include ? Include extends {
|
|
83
|
+
cursor?: infer T;
|
|
84
|
+
} ? keyof T : never : never : never;
|
|
85
|
+
export declare type RefForRelation<Model extends PrismaModelTypes, Field extends keyof Model['Relations']> = Model['Relations'][Field] extends unknown[] ? [ObjectRef<Model['Relations'][Field]>] : ObjectRef<Model['Relations'][Field]>;
|
|
86
|
+
export declare type RelatedFieldOptions<Types extends SchemaTypes, Model extends PrismaModelTypes, Field extends keyof Model['Relations'], Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape, NeedsResolve extends boolean, Shape> = Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, RefForRelation<Model, Field>, Nullable, Args, ResolveReturnShape>, 'resolve' | 'type'> & (NeedsResolve extends false ? {
|
|
87
|
+
resolve?: (query: {
|
|
88
|
+
include?: IncludeFromRelation<Model, Field & keyof Model['Include']>;
|
|
89
|
+
}, parent: Shape, args: InputShapeFromFields<Args>, context: Types['Context'], info: GraphQLResolveInfo) => MaybePromise<ShapeWithNullability<Types, Model['Relations'][Field]['Shape'], Nullable>>;
|
|
90
|
+
} : {
|
|
91
|
+
resolve: (query: {
|
|
92
|
+
include?: IncludeFromRelation<Model, Field & keyof Model['Include']>;
|
|
93
|
+
}, parent: Shape, args: InputShapeFromFields<Args>, context: Types['Context'], info: GraphQLResolveInfo) => MaybePromise<ShapeWithNullability<Types, Model['Relations'][Field]['Shape'], Nullable>>;
|
|
94
|
+
}) & {
|
|
95
|
+
query?: QueryForField<Types, Args, Model['Include'][Field & keyof Model['Include']]>;
|
|
96
|
+
};
|
|
97
|
+
export declare type RelationCountOptions<Types extends SchemaTypes, Shape, NeedsResolve extends boolean> = Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Shape, 'Int', false, {}, number>, 'resolve' | 'type'> & (NeedsResolve extends false ? {
|
|
98
|
+
resolve?: (parent: Shape, args: {}, context: Types['Context'], info: GraphQLResolveInfo) => MaybePromise<number>;
|
|
99
|
+
} : {
|
|
100
|
+
resolve: (parent: Shape, args: {}, context: Types['Context'], info: GraphQLResolveInfo) => MaybePromise<number>;
|
|
101
|
+
});
|
|
102
|
+
export declare type PrismaFieldOptions<Types extends SchemaTypes, ParentShape, Type extends keyof Types['PrismaTypes'] | [keyof Types['PrismaTypes']], Model extends PrismaModelTypes, Param extends TypeParam<Types>, Args extends InputFieldMap, Nullable extends FieldNullability<Param>, ResolveReturnShape, Kind extends FieldKind = FieldKind> = Omit<FieldOptionsFromKind<Types, ParentShape, Param, Nullable, Args, Kind, ParentShape, ResolveReturnShape>, 'resolve' | 'type'> & {
|
|
103
|
+
type: Type;
|
|
104
|
+
resolve: (query: {
|
|
105
|
+
include?: Model['Include'];
|
|
106
|
+
}, parent: ParentShape, args: InputShapeFromFields<Args>, context: Types['Context'], info: GraphQLResolveInfo) => ShapeFromTypeParam<Types, Param, Nullable> extends infer Shape ? [Shape] extends [[readonly (infer Item)[] | null | undefined]] ? ListResolveValue<Shape, Item, ResolveReturnShape> : MaybePromise<Shape> : never;
|
|
107
|
+
};
|
|
108
|
+
export declare type PrismaConnectionFieldOptions<Types extends SchemaTypes, ParentShape, Type extends keyof Types['PrismaTypes'], Model extends PrismaModelTypes, Param extends OutputType<Types>, Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape, Kind extends FieldKind> = Omit<PothosSchemaTypes.ConnectionFieldOptions<Types, ParentShape, Param, Nullable, Args, ResolveReturnShape>, 'resolve' | 'type'> & Omit<FieldOptionsFromKind<Types, ParentShape, Param, Nullable, Args & InputFieldsFromShape<PothosSchemaTypes.DefaultConnectionArguments>, Kind, ParentShape, ResolveReturnShape>, 'args' | 'resolve' | 'type'> & {
|
|
109
|
+
type: Type;
|
|
110
|
+
cursor: string & keyof Model['Where'];
|
|
111
|
+
defaultSize?: number;
|
|
112
|
+
maxSize?: number;
|
|
113
|
+
resolve: (query: {
|
|
114
|
+
include?: Model['Include'];
|
|
115
|
+
cursor?: {};
|
|
116
|
+
take: number;
|
|
117
|
+
skip: number;
|
|
118
|
+
}, parent: ParentShape, args: InputShapeFromFields<Args> & PothosSchemaTypes.DefaultConnectionArguments, context: Types['Context'], info: GraphQLResolveInfo) => MaybePromise<Model['Shape'][]>;
|
|
119
|
+
};
|
|
120
|
+
export declare type RelatedConnectionOptions<Types extends SchemaTypes, Model extends PrismaModelTypes, Field extends Model['ListRelations'], Nullable extends boolean, Args extends InputFieldMap, NeedsResolve extends boolean> = Omit<PothosSchemaTypes.ObjectFieldOptions<Types, Model['Shape'], ObjectRef<unknown>, Nullable, Args, unknown>, 'resolve' | 'type'> & Omit<PothosSchemaTypes.ConnectionFieldOptions<Types, Model['Shape'], ObjectRef<unknown>, Nullable, Args, unknown>, 'resolve' | 'type'> & {
|
|
121
|
+
query?: QueryForField<Types, Args, Model['Include'][Field & keyof Model['Include']]>;
|
|
122
|
+
cursor: CursorFromRelation<Model, Field>;
|
|
123
|
+
defaultSize?: number;
|
|
124
|
+
maxSize?: number;
|
|
125
|
+
totalCount?: NeedsResolve extends false ? boolean : false;
|
|
126
|
+
} & (NeedsResolve extends false ? {
|
|
127
|
+
resolve?: (query: {
|
|
128
|
+
include?: Model['Include'];
|
|
129
|
+
cursor?: {};
|
|
130
|
+
take: number;
|
|
131
|
+
skip: number;
|
|
132
|
+
}, parent: Model['Shape'], args: InputShapeFromFields<Args>, context: Types['Context'], info: GraphQLResolveInfo) => MaybePromise<Model['Relations'][Field & keyof Model['Relations']]>;
|
|
133
|
+
} : {
|
|
134
|
+
resolve: (query: {
|
|
135
|
+
include?: Model['Include'];
|
|
136
|
+
cursor?: {};
|
|
137
|
+
take: number;
|
|
138
|
+
skip: number;
|
|
139
|
+
}, parent: Model['Shape'], args: InputShapeFromFields<Args>, context: Types['Context'], info: GraphQLResolveInfo) => MaybePromise<Model['Relations'][Field & keyof Model['Relations']]>;
|
|
140
|
+
});
|
|
141
|
+
export declare type WithBrand<T> = T & {
|
|
142
|
+
[typeBrandKey]: string;
|
|
143
|
+
};
|
|
144
|
+
export declare type IncludeMap = Record<string, Record<string, unknown> | boolean>;
|
|
145
|
+
export interface IncludeCounts {
|
|
146
|
+
current: Record<string, boolean>;
|
|
147
|
+
parent: Record<string, boolean>;
|
|
148
|
+
}
|
|
149
|
+
export declare type LoaderMappings = Record<string, {
|
|
150
|
+
field: string;
|
|
151
|
+
alias?: string;
|
|
152
|
+
mappings: LoaderMappings;
|
|
153
|
+
indirectPath: string[];
|
|
154
|
+
}[]>;
|
|
155
|
+
export interface SubFieldInclude {
|
|
156
|
+
type?: string;
|
|
157
|
+
name: string;
|
|
158
|
+
}
|
|
159
|
+
export interface IndirectLoadMap {
|
|
160
|
+
subFields: SubFieldInclude[];
|
|
161
|
+
path: string[];
|
|
162
|
+
}
|
|
163
|
+
export {};
|
|
164
|
+
//# sourceMappingURL=types.d.ts.map
|