@pothos/plugin-prisma 0.0.0-preview-20220211212258

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 (155) hide show
  1. package/.turbo/turbo-build.log +17 -0
  2. package/.turbo/turbo-test.log +18 -0
  3. package/.turbo/turbo-type.log +5 -0
  4. package/CHANGELOG.md +355 -0
  5. package/LICENSE +6 -0
  6. package/README.md +808 -0
  7. package/babel.config.js +3 -0
  8. package/bin/generator.js +2 -0
  9. package/esm/cursors.d.ts +55 -0
  10. package/esm/cursors.d.ts.map +1 -0
  11. package/esm/cursors.js +106 -0
  12. package/esm/cursors.js.map +1 -0
  13. package/esm/field-builder.d.ts +2 -0
  14. package/esm/field-builder.d.ts.map +1 -0
  15. package/esm/field-builder.js +53 -0
  16. package/esm/field-builder.js.map +1 -0
  17. package/esm/generator.d.ts +2 -0
  18. package/esm/generator.d.ts.map +1 -0
  19. package/esm/generator.js +83 -0
  20. package/esm/generator.js.map +1 -0
  21. package/esm/global-types.d.ts +52 -0
  22. package/esm/global-types.d.ts.map +1 -0
  23. package/esm/global-types.js +2 -0
  24. package/esm/global-types.js.map +1 -0
  25. package/esm/index.d.ts +11 -0
  26. package/esm/index.d.ts.map +1 -0
  27. package/esm/index.js +14 -0
  28. package/esm/index.js.map +1 -0
  29. package/esm/loader-map.d.ts +6 -0
  30. package/esm/loader-map.d.ts.map +1 -0
  31. package/esm/loader-map.js +35 -0
  32. package/esm/loader-map.js.map +1 -0
  33. package/esm/model-loader.d.ts +18 -0
  34. package/esm/model-loader.d.ts.map +1 -0
  35. package/esm/model-loader.js +101 -0
  36. package/esm/model-loader.js.map +1 -0
  37. package/esm/node-ref.d.ts +12 -0
  38. package/esm/node-ref.d.ts.map +1 -0
  39. package/esm/node-ref.js +19 -0
  40. package/esm/node-ref.js.map +1 -0
  41. package/esm/object-ref.d.ts +7 -0
  42. package/esm/object-ref.d.ts.map +1 -0
  43. package/esm/object-ref.js +5 -0
  44. package/esm/object-ref.js.map +1 -0
  45. package/esm/package.json +3 -0
  46. package/esm/prisma-field-builder.d.ts +28 -0
  47. package/esm/prisma-field-builder.d.ts.map +1 -0
  48. package/esm/prisma-field-builder.js +204 -0
  49. package/esm/prisma-field-builder.js.map +1 -0
  50. package/esm/refs.d.ts +15 -0
  51. package/esm/refs.d.ts.map +1 -0
  52. package/esm/refs.js +64 -0
  53. package/esm/refs.js.map +1 -0
  54. package/esm/schema-builder.d.ts +2 -0
  55. package/esm/schema-builder.d.ts.map +1 -0
  56. package/esm/schema-builder.js +65 -0
  57. package/esm/schema-builder.js.map +1 -0
  58. package/esm/types.d.ts +177 -0
  59. package/esm/types.d.ts.map +1 -0
  60. package/esm/types.js +2 -0
  61. package/esm/types.js.map +1 -0
  62. package/esm/util/index.d.ts +5 -0
  63. package/esm/util/index.d.ts.map +1 -0
  64. package/esm/util/index.js +16 -0
  65. package/esm/util/index.js.map +1 -0
  66. package/esm/util/map-includes.d.ts +6 -0
  67. package/esm/util/map-includes.d.ts.map +1 -0
  68. package/esm/util/map-includes.js +184 -0
  69. package/esm/util/map-includes.js.map +1 -0
  70. package/esm/util/merge-includes.d.ts +3 -0
  71. package/esm/util/merge-includes.d.ts.map +1 -0
  72. package/esm/util/merge-includes.js +91 -0
  73. package/esm/util/merge-includes.js.map +1 -0
  74. package/lib/cursors.d.ts +55 -0
  75. package/lib/cursors.d.ts.map +1 -0
  76. package/lib/cursors.js +112 -0
  77. package/lib/cursors.js.map +1 -0
  78. package/lib/field-builder.d.ts +2 -0
  79. package/lib/field-builder.d.ts.map +1 -0
  80. package/lib/field-builder.js +65 -0
  81. package/lib/field-builder.js.map +1 -0
  82. package/lib/generator.d.ts +2 -0
  83. package/lib/generator.d.ts.map +1 -0
  84. package/lib/generator.js +104 -0
  85. package/lib/generator.js.map +1 -0
  86. package/lib/global-types.d.ts +52 -0
  87. package/lib/global-types.d.ts.map +1 -0
  88. package/lib/global-types.js +3 -0
  89. package/lib/global-types.js.map +1 -0
  90. package/lib/index.d.ts +11 -0
  91. package/lib/index.d.ts.map +1 -0
  92. package/lib/index.js +40 -0
  93. package/lib/index.js.map +1 -0
  94. package/lib/loader-map.d.ts +6 -0
  95. package/lib/loader-map.d.ts.map +1 -0
  96. package/lib/loader-map.js +41 -0
  97. package/lib/loader-map.js.map +1 -0
  98. package/lib/model-loader.d.ts +18 -0
  99. package/lib/model-loader.d.ts.map +1 -0
  100. package/lib/model-loader.js +105 -0
  101. package/lib/model-loader.js.map +1 -0
  102. package/lib/node-ref.d.ts +12 -0
  103. package/lib/node-ref.d.ts.map +1 -0
  104. package/lib/node-ref.js +22 -0
  105. package/lib/node-ref.js.map +1 -0
  106. package/lib/object-ref.d.ts +7 -0
  107. package/lib/object-ref.d.ts.map +1 -0
  108. package/lib/object-ref.js +9 -0
  109. package/lib/object-ref.js.map +1 -0
  110. package/lib/prisma-field-builder.d.ts +28 -0
  111. package/lib/prisma-field-builder.d.ts.map +1 -0
  112. package/lib/prisma-field-builder.js +208 -0
  113. package/lib/prisma-field-builder.js.map +1 -0
  114. package/lib/refs.d.ts +15 -0
  115. package/lib/refs.d.ts.map +1 -0
  116. package/lib/refs.js +73 -0
  117. package/lib/refs.js.map +1 -0
  118. package/lib/schema-builder.d.ts +2 -0
  119. package/lib/schema-builder.d.ts.map +1 -0
  120. package/lib/schema-builder.js +89 -0
  121. package/lib/schema-builder.js.map +1 -0
  122. package/lib/types.d.ts +177 -0
  123. package/lib/types.d.ts.map +1 -0
  124. package/lib/types.js +4 -0
  125. package/lib/types.js.map +1 -0
  126. package/lib/util/index.d.ts +5 -0
  127. package/lib/util/index.d.ts.map +1 -0
  128. package/lib/util/index.js +30 -0
  129. package/lib/util/index.js.map +1 -0
  130. package/lib/util/map-includes.d.ts +6 -0
  131. package/lib/util/map-includes.d.ts.map +1 -0
  132. package/lib/util/map-includes.js +189 -0
  133. package/lib/util/map-includes.js.map +1 -0
  134. package/lib/util/merge-includes.d.ts +3 -0
  135. package/lib/util/merge-includes.d.ts.map +1 -0
  136. package/lib/util/merge-includes.js +96 -0
  137. package/lib/util/merge-includes.js.map +1 -0
  138. package/package.json +71 -0
  139. package/src/cursors.ts +159 -0
  140. package/src/field-builder.ts +117 -0
  141. package/src/generator.ts +191 -0
  142. package/src/global-types.ts +196 -0
  143. package/src/index.ts +18 -0
  144. package/src/loader-map.ts +48 -0
  145. package/src/model-loader.ts +152 -0
  146. package/src/node-ref.ts +34 -0
  147. package/src/object-ref.ts +8 -0
  148. package/src/prisma-field-builder.ts +375 -0
  149. package/src/refs.ts +112 -0
  150. package/src/schema-builder.ts +121 -0
  151. package/src/types.ts +502 -0
  152. package/src/util/index.ts +26 -0
  153. package/src/util/map-includes.ts +329 -0
  154. package/src/util/merge-includes.ts +121 -0
  155. package/tsconfig.json +21 -0
@@ -0,0 +1,101 @@
1
+ /* eslint-disable prefer-destructuring */
2
+ /* eslint-disable no-underscore-dangle */
3
+ import { createContextCache } from '@pothos/core';
4
+ import { getDelegateFromModel, getFindUniqueForRef, getRefFromModel } from './refs.js';
5
+ import { mergeIncludes } from './util/index.js';
6
+ const loaderCache = new WeakMap();
7
+ export class ModelLoader {
8
+ constructor(model, delegate, findUnique) {
9
+ this.staged = new Set();
10
+ this.model = model;
11
+ this.delegate = delegate;
12
+ this.findUnique = findUnique;
13
+ }
14
+ static forModel(modelName, builder) {
15
+ const delegate = getDelegateFromModel(builder.options.prisma.client, modelName);
16
+ if (!loaderCache.has(delegate)) {
17
+ const ref = getRefFromModel(modelName, builder);
18
+ const findUnique = getFindUniqueForRef(ref, builder);
19
+ loaderCache.set(delegate, createContextCache((model) => new ModelLoader(model, delegate, findUnique)));
20
+ }
21
+ return loaderCache.get(delegate);
22
+ }
23
+ async loadCount(relation, context) {
24
+ let promise;
25
+ const entry = [...this.staged][0];
26
+ if (entry) {
27
+ if (!entry.include._count) {
28
+ entry.include._count = { select: {} };
29
+ }
30
+ entry.include._count.select[relation] = true;
31
+ promise = entry.promise;
32
+ }
33
+ else {
34
+ promise = this.initLoad(relation, null, context, true);
35
+ }
36
+ const result = await promise;
37
+ return result._count[relation];
38
+ }
39
+ async loadSelf(include, context) {
40
+ for (const entry of this.staged) {
41
+ const merged = mergeIncludes(entry.include, include);
42
+ if (merged) {
43
+ entry.include = merged;
44
+ return entry.promise;
45
+ }
46
+ }
47
+ return this.initLoad(null, include, context);
48
+ }
49
+ async loadRelation(relation, include, context) {
50
+ let promise;
51
+ for (const entry of this.staged) {
52
+ if (entry.include[relation] === undefined) {
53
+ promise = entry.promise;
54
+ entry.include[relation] = include;
55
+ break;
56
+ }
57
+ const merged = mergeIncludes(entry.include[relation], include);
58
+ if (merged) {
59
+ entry.include[relation] = merged;
60
+ break;
61
+ }
62
+ }
63
+ if (!promise) {
64
+ promise = this.initLoad(relation, include, context);
65
+ }
66
+ const result = await promise;
67
+ return result[relation];
68
+ }
69
+ async initLoad(relation, includeArg, context, count = false) {
70
+ const include = (relation &&
71
+ (count
72
+ ? {
73
+ _count: {
74
+ select: {
75
+ [relation]: true,
76
+ },
77
+ },
78
+ }
79
+ : {
80
+ [relation]: includeArg,
81
+ })) ||
82
+ {};
83
+ const promise = new Promise((resolve, reject) => {
84
+ setTimeout(() => {
85
+ this.staged.delete(entry);
86
+ resolve(this.delegate.findUnique({
87
+ rejectOnNotFound: true,
88
+ where: { ...this.findUnique(this.model, context) },
89
+ include: Object.keys(include).length > 0 ? include : undefined,
90
+ }));
91
+ }, 0);
92
+ });
93
+ const entry = {
94
+ promise,
95
+ include,
96
+ };
97
+ this.staged.add(entry);
98
+ return promise;
99
+ }
100
+ }
101
+ //# sourceMappingURL=model-loader.js.map
@@ -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,12 @@
1
+ import { abstractReturnShapeKey } from '@pothos/core';
2
+ import { PrismaObjectRef } from './object-ref';
3
+ import { WithBrand } from './types';
4
+ import { PrismaModelTypes } from '.';
5
+ export default class PrismaNodeRef<Model extends PrismaModelTypes, T> extends PrismaObjectRef<Model, T> {
6
+ [abstractReturnShapeKey]: WithBrand<T>;
7
+ addBrand<V extends T | T[]>(value: V): V extends T[] ? {
8
+ [K in keyof V]: WithBrand<V[K]>;
9
+ } : WithBrand<V>;
10
+ hasBrand(value: unknown): boolean;
11
+ }
12
+ //# 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,EAA+B,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,KAAK,SAAS,gBAAgB,EAAE,CAAC,CAAE,SAAQ,eAAe,CAC3F,KAAK,EACL,CAAC,CACF;IACC,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"}
@@ -0,0 +1,19 @@
1
+ import { abstractReturnShapeKey, brandWithType, typeBrandKey } from '@pothos/core';
2
+ import { PrismaObjectRef } from './object-ref.js';
3
+ export default class PrismaNodeRef extends PrismaObjectRef {
4
+ addBrand(value) {
5
+ if (Array.isArray(value)) {
6
+ value.forEach((val) => void brandWithType(val, this.name));
7
+ return value;
8
+ }
9
+ brandWithType(value, this.name);
10
+ return value;
11
+ }
12
+ hasBrand(value) {
13
+ return (typeof value === "object" &&
14
+ value !== null &&
15
+ typeBrandKey in value &&
16
+ value[typeBrandKey] === this.name);
17
+ }
18
+ }
19
+ //# 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,YAAY,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAI/C,MAAM,CAAC,OAAO,OAAO,aAAiD,SAAQ,eAG7E;IAGC,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"}
@@ -0,0 +1,7 @@
1
+ import { ObjectRef } from '@pothos/core';
2
+ import { PrismaModelTypes } from '.';
3
+ export declare const prismaModelKey: unique symbol;
4
+ export declare class PrismaObjectRef<Model extends PrismaModelTypes, T = {}> extends ObjectRef<T> {
5
+ [prismaModelKey]: Model;
6
+ }
7
+ //# sourceMappingURL=object-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-ref.d.ts","sourceRoot":"","sources":["../src/object-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAErC,eAAO,MAAM,cAAc,eAAsC,CAAC;AAElE,qBAAa,eAAe,CAAC,KAAK,SAAS,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACvF,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC;CACzB"}
@@ -0,0 +1,5 @@
1
+ import { ObjectRef } from '@pothos/core';
2
+ export const prismaModelKey = Symbol.for("Pothos.prismaModelKey");
3
+ export class PrismaObjectRef extends ObjectRef {
4
+ }
5
+ //# sourceMappingURL=object-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-ref.js","sourceRoot":"","sources":["../src/object-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAElE,MAAM,OAAO,eAAwD,SAAQ,SAAY;CAExF"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,28 @@
1
+ import { FieldRef, InputFieldMap, NormalizeArgs, ObjectFieldBuilder, ObjectRef, PluginName, SchemaTypes } from '@pothos/core';
2
+ import { PrismaObjectRef } from './object-ref';
3
+ import { PrismaDelegate, PrismaModelTypes, RelatedConnectionOptions, RelatedFieldOptions, RelationCountOptions, ShapeFromConnection } from './types';
4
+ import { VariantFieldOptions } from '.';
5
+ export declare class PrismaObjectFieldBuilder<Types extends SchemaTypes, Model extends PrismaModelTypes, NeedsResolve extends boolean, Shape extends object = Model['Shape']> extends ObjectFieldBuilder<Types, Shape> {
6
+ delegate: PrismaDelegate;
7
+ model: string;
8
+ relatedConnection: 'relay' extends PluginName ? <Field extends Model['ListRelations'], Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape>(...args: NormalizeArgs<[
9
+ field: Field,
10
+ options: RelatedConnectionOptions<Types, Model, Field, Nullable, Args, NeedsResolve>,
11
+ connectionOptions?: PothosSchemaTypes.ConnectionObjectOptions<Types, ObjectRef<Shape>, false, false, ResolveReturnShape>,
12
+ edgeOptions?: PothosSchemaTypes.ConnectionEdgeObjectOptions<Types, ObjectRef<Shape>, false, ResolveReturnShape>
13
+ ]>) => FieldRef<ShapeFromConnection<PothosSchemaTypes.ConnectionShapeHelper<Types, Shape, Nullable>>> : '@pothos/plugin-relay is required to use this method';
14
+ constructor(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, model: string);
15
+ relation<Field extends Model['Fields'], Nullable extends boolean, Args extends InputFieldMap, ResolveReturnShape>(...allArgs: NormalizeArgs<[
16
+ name: Field,
17
+ options?: RelatedFieldOptions<Types, Model, Field, Nullable, Args, ResolveReturnShape, NeedsResolve, Shape>
18
+ ]>): FieldRef<Model['Relations'][Field]['Shape'], 'Object'>;
19
+ relationCount<Field extends Model['Fields']>(...allArgs: NormalizeArgs<[
20
+ name: Field,
21
+ options?: RelationCountOptions<Types, Shape, NeedsResolve>
22
+ ]>): FieldRef<number, 'Object'>;
23
+ variant<Variant extends Model['Name'] | PrismaObjectRef<Model>>(...allArgs: NormalizeArgs<[
24
+ variant: Variant,
25
+ options?: VariantFieldOptions<Types, Model, Variant extends PrismaObjectRef<Model> ? Variant : PrismaObjectRef<Model>>
26
+ ]>): FieldRef<Model['Shape'], 'Object'>;
27
+ }
28
+ //# 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":"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"}
@@ -0,0 +1,204 @@
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, SELF_RELATION } 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, _b;
12
+ const relationField = getRelation(this.model, this.builder, name);
13
+ const parentRef = getRefFromModel(this.model, this.builder);
14
+ const ref = (_a = options.type) !== null && _a !== void 0 ? _a : getRefFromModel(relationField.type, this.builder);
15
+ const findUnique = getFindUniqueForRef(parentRef, this.builder);
16
+ const loaderCache = ModelLoader.forModel(this.model, this.builder);
17
+ let typeName;
18
+ const getQuery = (args, ctx) => ({
19
+ ...(typeof query === "function" ? query(args, ctx) : query),
20
+ ...prismaCursorConnectionQuery({
21
+ column: cursor,
22
+ maxSize,
23
+ defaultSize,
24
+ args,
25
+ }),
26
+ });
27
+ const fieldRef = this.connection({
28
+ ...options,
29
+ extensions: {
30
+ ...extensions,
31
+ pothosPrismaQuery: getQuery,
32
+ pothosPrismaRelation: name,
33
+ },
34
+ type: ref,
35
+ resolve: async (parent, args, context, info) => {
36
+ var _a;
37
+ const connectionQuery = getQuery(args, context);
38
+ const getResult = () => {
39
+ const mapping = getLoaderMapping(context, info.path);
40
+ const loadedValue = parent[name];
41
+ if (
42
+ // if we attempted to load the relation, and its missing it will be null
43
+ // undefined means that the query was not constructed in a way that requested the relation
44
+ loadedValue !== undefined &&
45
+ mapping) {
46
+ if (loadedValue !== null && loadedValue !== undefined) {
47
+ setLoaderMappings(context, info.path, mapping);
48
+ }
49
+ return loadedValue;
50
+ }
51
+ if (!resolve && !findUnique) {
52
+ throw new Error(`Missing findUnique for Prisma type ${this.model}`);
53
+ }
54
+ const mergedQuery = { ...queryFromInfo(context, info), ...connectionQuery };
55
+ if (resolve) {
56
+ return resolve(mergedQuery, parent, args, context, info);
57
+ }
58
+ return loaderCache(parent).loadRelation(name, mergedQuery, context);
59
+ };
60
+ return wrapConnectionResult(await getResult(), args, connectionQuery.take, cursor, (_a = parent._count) === null || _a === void 0 ? void 0 : _a[name]);
61
+ },
62
+ }, {
63
+ ...connectionOptions,
64
+ fields: totalCount
65
+ ? (t) => {
66
+ var _a, _b;
67
+ return ({
68
+ totalCount: t.int({
69
+ extensions: {
70
+ pothosPrismaRelationCountForParent: name,
71
+ },
72
+ resolve: (parent, args, context) => {
73
+ const loadedValue = parent.totalCount;
74
+ if (loadedValue !== undefined) {
75
+ return loadedValue;
76
+ }
77
+ return loaderCache(parent).loadCount(name, context);
78
+ },
79
+ }),
80
+ ...(_b = (_a = connectionOptions).fields) === null || _b === void 0 ? void 0 : _b.call(_a, t),
81
+ });
82
+ }
83
+ : connectionOptions.fields,
84
+ extensions: {
85
+ ...(_b = connectionOptions) === null || _b === void 0 ? void 0 : _b.extensions,
86
+ pothosPrismaIndirectInclude: {
87
+ getType: () => {
88
+ if (!typeName) {
89
+ typeName = this.builder.configStore.getTypeConfig(ref).name;
90
+ }
91
+ return typeName;
92
+ },
93
+ path: [{ name: "edges" }, { name: "node" }],
94
+ },
95
+ },
96
+ }, edgeOptions);
97
+ return fieldRef;
98
+ };
99
+ this.model = model;
100
+ this.delegate = getDelegateFromModel(builder.options.prisma.client, model);
101
+ }
102
+ relation(...allArgs) {
103
+ var _a;
104
+ const [name, options = {}] = allArgs;
105
+ const relationField = getRelation(this.model, this.builder, name);
106
+ const parentRef = getRefFromModel(this.model, this.builder);
107
+ const ref = (_a = options.type) !== null && _a !== void 0 ? _a : getRefFromModel(relationField.type, this.builder);
108
+ const findUnique = getFindUniqueForRef(parentRef, this.builder);
109
+ const loaderCache = ModelLoader.forModel(this.model, this.builder);
110
+ const { query = {}, resolve, ...rest } = options;
111
+ return this.field({
112
+ ...rest,
113
+ type: relationField.isList ? [ref] : ref,
114
+ extensions: {
115
+ ...options.extensions,
116
+ pothosPrismaQuery: query,
117
+ pothosPrismaRelation: name,
118
+ },
119
+ resolve: (parent, args, context, info) => {
120
+ const mapping = getLoaderMapping(context, info.path);
121
+ const loadedValue = parent[name];
122
+ if (
123
+ // if we attempted to load the relation, and its missing it will be null
124
+ // undefined means that the query was not constructed in a way that requested the relation
125
+ loadedValue !== undefined &&
126
+ mapping) {
127
+ if (loadedValue !== null && loadedValue !== undefined) {
128
+ setLoaderMappings(context, info.path, mapping);
129
+ }
130
+ return loadedValue;
131
+ }
132
+ const queryOptions = {
133
+ ...(typeof query === "function" ? query(args, context) : query),
134
+ ...queryFromInfo(context, info),
135
+ };
136
+ if (resolve) {
137
+ return resolve(queryOptions, parent, args, context, info);
138
+ }
139
+ if (!findUnique) {
140
+ throw new Error(`Missing findUnique for Prisma type ${this.model}`);
141
+ }
142
+ return loaderCache(parent).loadRelation(name, queryOptions, context);
143
+ },
144
+ });
145
+ }
146
+ relationCount(...allArgs) {
147
+ const [name, options = {}] = allArgs;
148
+ const parentRef = getRefFromModel(this.model, this.builder);
149
+ const findUnique = getFindUniqueForRef(parentRef, this.builder);
150
+ const loaderCache = ModelLoader.forModel(this.model, this.builder);
151
+ const { resolve, ...rest } = options;
152
+ return this.field({
153
+ ...rest,
154
+ type: "Int",
155
+ nullable: false,
156
+ extensions: {
157
+ ...options.extensions,
158
+ pothosPrismaRelationCount: name,
159
+ },
160
+ resolve: (parent, args, context, info) => {
161
+ var _a;
162
+ const loadedValue = (_a = parent._count) === null || _a === void 0 ? void 0 : _a[name];
163
+ if (loadedValue !== undefined) {
164
+ return loadedValue;
165
+ }
166
+ if (resolve) {
167
+ return resolve(parent, args, context, info);
168
+ }
169
+ if (!findUnique) {
170
+ throw new Error(`Missing findUnique for Prisma type ${this.model}`);
171
+ }
172
+ return loaderCache(parent).loadCount(name, context);
173
+ },
174
+ });
175
+ }
176
+ variant(...allArgs) {
177
+ const [variant, options = {}] = allArgs;
178
+ const ref = typeof variant === "string" ? getRefFromModel(variant, this.builder) : variant;
179
+ const parentRef = getRefFromModel(this.model, this.builder);
180
+ const findUnique = getFindUniqueForRef(parentRef, this.builder);
181
+ const loaderCache = ModelLoader.forModel(this.model, this.builder);
182
+ return this.field({
183
+ ...options,
184
+ type: ref,
185
+ extensions: {
186
+ ...options.extensions,
187
+ pothosPrismaRelation: SELF_RELATION,
188
+ },
189
+ resolve: (parent, args, context, info) => {
190
+ const mapping = getLoaderMapping(context, info.path);
191
+ if (mapping) {
192
+ setLoaderMappings(context, info.path, mapping);
193
+ return parent;
194
+ }
195
+ const queryOptions = queryFromInfo(context, info);
196
+ if (!findUnique) {
197
+ throw new Error(`Missing findUnique for Prisma type ${this.model}`);
198
+ }
199
+ return loaderCache(parent).loadSelf(queryOptions, context);
200
+ },
201
+ });
202
+ }
203
+ }
204
+ //# 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":"AAEA,OAAO,EAKL,kBAAkB,GAInB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AASjG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGtD,MAAM,OAAO,wBAKX,SAAQ,kBAAgC;IA8KxC,YAAY,IAAY,EAAE,OAA+C,EAAE,KAAa;QACtF,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QA3KvB,sBAAiB,GA6B2C,SAAS,iBAAiB,CAEpF,IAAY,EACZ,EACE,OAAO,EACP,WAAW,EACX,MAAM,EACN,KAAK,EACL,OAAO,EACP,UAAU,EACV,UAAU,EACV,GAAG,OAAO,EAUX,EACD,iBAAiB,GAAG,EAAE,EACtB,WAAW,GAAG,EAAE;;YAEhB,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9E,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnE,IAAI,QAA4B,CAAC;YAEjC,MAAM,QAAQ,GAAG,CAAC,IAAkD,EAAE,GAAO,EAAE,EAAE,CAAC,CAAC;gBACjF,GAAI,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAQ;gBACnE,GAAG,2BAA2B,CAAC;oBAC7B,MAAM,EAAE,MAAM;oBACd,OAAO;oBACP,WAAW;oBACX,IAAI;iBACL,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,QAAQ,GACZ,IAGD,CAAC,UAAU,CACV;gBACE,GAAG,OAAO;gBACV,UAAU,EAAE;oBACV,GAAG,UAAU;oBACb,iBAAiB,EAAE,QAAQ;oBAC3B,oBAAoB,EAAE,IAAI;iBAC3B;gBACD,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,KAAK,EACZ,MAAc,EACd,IAAkD,EAClD,OAAW,EACX,IAAwB,EACxB,EAAE;;oBACF,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAChD,MAAM,SAAS,GAAG,GAAG,EAAE;wBACrB,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;wBACrD,MAAM,WAAW,GAAI,MAAkC,CAAC,IAAI,CAAC,CAAC;wBAE9D;wBACE,wEAAwE;wBACxE,0FAA0F;wBAC1F,WAAW,KAAK,SAAS;4BACzB,OAAO,EACP;4BACA,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE;gCACrD,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;6BAChD;4BAED,OAAO,WAAmB,CAAC;yBAC5B;wBAED,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE;4BAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;yBACrE;wBAED,MAAM,WAAW,GAAG,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC;wBAE5E,IAAI,OAAO,EAAE;4BACX,OAAO,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;yBAC1D;wBAED,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAkB,CAAC;oBACvF,CAAC,CAAC;oBAEF,OAAO,oBAAoB,CACzB,MAAM,SAAS,EAAE,EACjB,IAAI,EACJ,eAAe,CAAC,IAAI,EACpB,MAAM,EACN,MAAC,MAA8C,CAAC,MAAM,0CAAG,IAAI,CAAC,CAC/D,CAAC;gBACJ,CAAC;aACF,EACD;gBACE,GAAG,iBAAiB;gBACpB,MAAM,EAAE,UAAU;oBAChB,CAAC,CAAC,CAAC,CAA6E,EAAE,EAAE;;wBAAC,OAAA,CAAC;4BAClF,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC;gCAChB,UAAU,EAAE;oCACV,kCAAkC,EAAE,IAAI;iCACzC;gCACD,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oCACjC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;oCAEtC,IAAI,WAAW,KAAK,SAAS,EAAE;wCAC7B,OAAO,WAAW,CAAC;qCACpB;oCAED,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gCACtD,CAAC;6BACF,CAAC;4BACF,GAAG,MAAA,MAAC,iBAAqD,EAAC,MAAM,mDAAG,CAAC,CAAC;yBACtE,CAAC,CAAA;qBAAA;oBACJ,CAAC,CAAE,iBAA2C,CAAC,MAAM;gBACvD,UAAU,EAAE;oBACV,GAAG,MAAC,iBAAoD,0CAAE,UAAU;oBACpE,2BAA2B,EAAE;wBAC3B,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,CAAC,QAAQ,EAAE;gCACb,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;6BAC7D;4BACD,OAAO,QAAQ,CAAC;wBAClB,CAAC;wBACD,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qBAC5C;iBACF;aACF,EACD,WAAW,CACZ,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAU,CAAC;QAKT,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED,QAAQ,CAMN,GAAG,OAcF;;QAED,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,EAAW,CAAC,GAAG,OAAO,CAAC;QAC9C,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAEjD,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,GAAG,IAAI;YACP,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;YACxC,UAAU,EAAE;gBACV,GAAG,OAAO,CAAC,UAAU;gBACrB,iBAAiB,EAAE,KAAK;gBACxB,oBAAoB,EAAE,IAAI;aAC3B;YACD,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAErD,MAAM,WAAW,GAAI,MAAkC,CAAC,IAAI,CAAC,CAAC;gBAE9D;gBACE,wEAAwE;gBACxE,0FAA0F;gBAC1F,WAAW,KAAK,SAAS;oBACzB,OAAO,EACP;oBACA,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE;wBACrD,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;qBAChD;oBAED,OAAO,WAAoB,CAAC;iBAC7B;gBAED,MAAM,YAAY,GAAG;oBACnB,GAAI,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAQ;oBACvE,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;iBAChC,CAAC;gBAEF,IAAI,OAAO,EAAE;oBACX,OAAO,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,IAAa,EAAE,OAAO,EAAE,IAAI,CAAU,CAAC;iBAC7E;gBAED,IAAI,CAAC,UAAU,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;iBACrE;gBAED,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAU,CAAC;YAChF,CAAC;SACF,CAA2D,CAAC;IAC/D,CAAC;IAED,aAAa,CACX,GAAG,OAEF;QAED,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,EAAW,CAAC,GAAG,OAAO,CAAC;QAC9C,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAErC,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,GAAG,IAAI;YACP,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE;gBACV,GAAG,OAAO,CAAC,UAAU;gBACrB,yBAAyB,EAAE,IAAI;aAChC;YACD,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;;gBACvC,MAAM,WAAW,GAAG,MAAC,MAA8C,CAAC,MAAM,0CAAG,IAAI,CAAC,CAAC;gBAEnF,IAAI,WAAW,KAAK,SAAS,EAAE;oBAC7B,OAAO,WAAoB,CAAC;iBAC7B;gBAED,IAAI,OAAO,EAAE;oBACX,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAU,CAAC;iBACtD;gBAED,IAAI,CAAC,UAAU,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;iBACrE;gBAED,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;YAC/D,CAAC;SACF,CAA+B,CAAC;IACnC,CAAC;IAED,OAAO,CACL,GAAG,OASF;QAED,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,EAAW,CAAC,GAAG,OAAO,CAAC;QACjD,MAAM,GAAG,GACP,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACjF,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnE,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,GAAG,OAAO;YACV,IAAI,EAAE,GAAG;YACT,UAAU,EAAE;gBACV,GAAG,OAAO,CAAC,UAAU;gBACrB,oBAAoB,EAAE,aAAa;aACpC;YACD,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAErD,IAAI,OAAO,EAAE;oBACX,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAE/C,OAAO,MAAe,CAAC;iBACxB;gBAED,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAElD,IAAI,CAAC,UAAU,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;iBACrE;gBAED,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAU,CAAC;YACtE,CAAC;SACF,CAAuC,CAAC;IAC3C,CAAC;CACF"}
package/esm/refs.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import { ObjectRef, SchemaTypes } from '@pothos/core';
2
+ import { Prisma } from '../tests/client';
3
+ import { PrismaObjectRef } from './object-ref';
4
+ import { PrismaDelegate } from './types';
5
+ import { PrismaModelTypes } from '.';
6
+ export declare const refMap: WeakMap<object, Map<string, PrismaObjectRef<PrismaModelTypes, {}>>>;
7
+ export declare const findUniqueMap: WeakMap<object, Map<ObjectRef<unknown, unknown>, ((args: unknown, ctx: {}) => unknown) | null>>;
8
+ export declare const includeForRefMap: WeakMap<object, Map<ObjectRef<unknown, unknown>, Record<string, unknown> | null>>;
9
+ export declare function getRefFromModel<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): PrismaObjectRef<PrismaModelTypes>;
10
+ export declare function getFindUniqueForRef<Types extends SchemaTypes>(ref: ObjectRef<unknown>, builder: PothosSchemaTypes.SchemaBuilder<Types>): ((args: unknown, context: Types['Context']) => unknown) | null;
11
+ export declare function setFindUniqueForRef<Types extends SchemaTypes>(ref: ObjectRef<unknown>, builder: PothosSchemaTypes.SchemaBuilder<Types>, findUnique: ((args: any, context: Types['Context']) => unknown) | null): void;
12
+ export declare function getRelation<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, relation: string): Prisma.DMMF.Field;
13
+ export declare function getRelatedDelegate<Types extends SchemaTypes>(name: string, builder: PothosSchemaTypes.SchemaBuilder<Types>, relation: string): string;
14
+ export declare function getDelegateFromModel(client: Record<string, unknown>, model: string): PrismaDelegate;
15
+ //# 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,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAErC,eAAO,MAAM,MAAM,qEAAwE,CAAC;AAC5F,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,eAAe,CAAC,gBAAgB,CAAC,CAWnC;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,UAKjB;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,64 @@
1
+ import { PrismaObjectRef } from './object-ref.js';
2
+ export const refMap = new WeakMap();
3
+ export const findUniqueMap = new WeakMap();
4
+ export const includeForRefMap = new WeakMap();
5
+ export function getRefFromModel(name, builder) {
6
+ if (!refMap.has(builder)) {
7
+ refMap.set(builder, new Map());
8
+ }
9
+ const cache = refMap.get(builder);
10
+ if (!cache.has(name)) {
11
+ cache.set(name, new PrismaObjectRef(name));
12
+ }
13
+ return cache.get(name);
14
+ }
15
+ export function getFindUniqueForRef(ref, builder) {
16
+ if (!findUniqueMap.has(builder)) {
17
+ findUniqueMap.set(builder, new Map());
18
+ }
19
+ const cache = findUniqueMap.get(builder);
20
+ if (!cache.has(ref)) {
21
+ return null;
22
+ }
23
+ return cache.get(ref);
24
+ }
25
+ export function setFindUniqueForRef(ref, builder,
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ findUnique) {
28
+ if (!findUniqueMap.has(builder)) {
29
+ findUniqueMap.set(builder, new Map());
30
+ }
31
+ const cache = findUniqueMap.get(builder);
32
+ cache.set(ref, findUnique);
33
+ }
34
+ export function getRelation(name, builder, relation) {
35
+ const { client } = builder.options.prisma;
36
+ // eslint-disable-next-line no-underscore-dangle
37
+ const dmmf = client
38
+ ._dmmf;
39
+ const modelData = dmmf.modelMap[name];
40
+ if (!modelData) {
41
+ throw new Error(`Model '${name}' not found in DMMF`);
42
+ }
43
+ const fieldData = modelData.fields.find((field) => field.name === relation);
44
+ if (!fieldData) {
45
+ throw new Error(`Field '${relation}' not found in model '${name}'`);
46
+ }
47
+ if (fieldData.kind !== "object") {
48
+ throw new Error(`Field ${relation} of model '${name}' is not a relation (${fieldData.kind})`);
49
+ }
50
+ return fieldData;
51
+ }
52
+ export function getRelatedDelegate(name, builder, relation) {
53
+ const fieldData = getRelation(name, builder, relation);
54
+ return fieldData.type;
55
+ }
56
+ export function getDelegateFromModel(client, model) {
57
+ const lowerCase = `${model.slice(0, 1).toLowerCase()}${model.slice(1)}`;
58
+ const delegate = lowerCase in client ? client[lowerCase] : null;
59
+ if (!delegate) {
60
+ throw new Error(`Unable to find delegate for model ${model}`);
61
+ }
62
+ return delegate;
63
+ }
64
+ //# sourceMappingURL=refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import './global-types';
2
+ //# sourceMappingURL=schema-builder.d.ts.map
@@ -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,65 @@
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, _b;
10
+ const ref = options.variant ? this.objectRef(options.variant) : getRefFromModel(type, this);
11
+ const name = (_b = (_a = options.variant) !== null && _a !== void 0 ? _a : options.name) !== null && _b !== void 0 ? _b : 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, variant, ...options }) {
26
+ var _a, _b, _c;
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 = (_b = variant !== null && variant !== void 0 ? variant : name) !== null && _b !== void 0 ? _b : type;
32
+ const delegate = getDelegateFromModel(this.options.prisma.client, type);
33
+ const nodeRef = new PrismaNodeRef(typeName);
34
+ const extendedOptions = {
35
+ ...options,
36
+ variant,
37
+ interfaces: [interfaceRef, ...((_c = options.interfaces) !== null && _c !== void 0 ? _c : [])],
38
+ findUnique: (parent, context) => findUnique(options.id.resolve(parent, context), context),
39
+ loadWithoutCache: async (id, context, info) => {
40
+ const query = queryFromInfo(context, info, typeName);
41
+ const record = await delegate.findUnique({
42
+ ...query,
43
+ rejectOnNotFound: true,
44
+ where: findUnique(id, context),
45
+ });
46
+ brandWithType(record, typeName);
47
+ return record;
48
+ },
49
+ };
50
+ const ref = this.prismaObject(type, extendedOptions);
51
+ this.configStore.onTypeConfig(ref, (nodeConfig) => {
52
+ this.objectField(ref, "id", (t) => t.globalID({
53
+ ...options.id,
54
+ nullable: false,
55
+ args: {},
56
+ resolve: async (parent, args, context, info) => ({
57
+ type: nodeConfig.name,
58
+ id: await options.id.resolve(parent, context),
59
+ }),
60
+ }));
61
+ });
62
+ this.configStore.associateRefWithName(nodeRef, typeName);
63
+ return nodeRef;
64
+ };
65
+ //# 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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"}