@pothos/plugin-prisma 3.58.0 → 3.59.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 +7 -0
- package/dts/index.d.ts.map +1 -1
- package/dts/model-loader.d.ts +24 -5
- package/dts/model-loader.d.ts.map +1 -1
- package/dts/util/loader-map.d.ts +1 -1
- package/dts/util/loader-map.d.ts.map +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -9
- package/esm/index.js.map +1 -1
- package/esm/model-loader.d.ts +24 -5
- package/esm/model-loader.d.ts.map +1 -1
- package/esm/model-loader.js +82 -27
- package/esm/model-loader.js.map +1 -1
- package/esm/util/loader-map.d.ts +1 -1
- package/esm/util/loader-map.d.ts.map +1 -1
- package/esm/util/loader-map.js +1 -1
- package/esm/util/loader-map.js.map +1 -1
- package/lib/index.js +1 -8
- package/lib/index.js.map +1 -1
- package/lib/model-loader.js +81 -27
- package/lib/model-loader.js.map +1 -1
- package/lib/util/loader-map.js +1 -1
- package/lib/util/loader-map.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +4 -14
- package/src/model-loader.ts +102 -32
- package/src/util/loader-map.ts +1 -1
package/CHANGELOG.md
CHANGED
package/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,aAAa,EAAE,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EAEvB,gBAAgB,EAChB,WAAW,EACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,aAAa,EAAE,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EAEvB,gBAAgB,EAChB,WAAW,EACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,SAAS,CAAC;AAExB,QAAA,MAAM,UAAU,UAAoB,CAAC;AAErC,eAAe,UAAU,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAE3F,MAAM,MAAM,wBAAwB,CAClC,KAAK,SAAS,WAAW,EACzB,WAAW,IACT,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,6IAMvB,MAAM,mIAEoE,CAAC;AAEnF,qBAAa,YAAY,CAAC,KAAK,SAAS,WAAW,CAAE,SAAQ,UAAU,CAAC,KAAK,CAAC;gBAChE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;IAI3B,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,gBAAgB;IA+B5D,mBAAmB,CAC1B,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,uBAAuB,CAAC,KAAK,CAAC,GAAG,IAAI;IA4B/B,WAAW,CAClB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAC1E,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAuD3D"}
|
package/dts/model-loader.d.ts
CHANGED
|
@@ -1,15 +1,28 @@
|
|
|
1
|
+
import { GraphQLResolveInfo } from 'graphql';
|
|
1
2
|
import { InterfaceRef, ObjectRef, SchemaTypes } from '@pothos/core';
|
|
3
|
+
import { PrismaDelegate, SelectionMap } from './types';
|
|
2
4
|
import { SelectionState } from './util/selections';
|
|
5
|
+
interface ResolvablePromise<T> {
|
|
6
|
+
promise: Promise<T>;
|
|
7
|
+
resolve: (value: T) => void;
|
|
8
|
+
reject: (err: unknown) => void;
|
|
9
|
+
}
|
|
3
10
|
export declare class ModelLoader {
|
|
4
|
-
|
|
11
|
+
context: object;
|
|
5
12
|
builder: PothosSchemaTypes.SchemaBuilder<never>;
|
|
6
13
|
findUnique: (model: Record<string, unknown>, ctx: {}) => unknown;
|
|
7
14
|
modelName: string;
|
|
15
|
+
queryCache: Map<string, {
|
|
16
|
+
selection: SelectionState;
|
|
17
|
+
query: SelectionMap;
|
|
18
|
+
}>;
|
|
8
19
|
staged: Set<{
|
|
9
|
-
promise: Promise<Record<string, unknown>>;
|
|
10
20
|
state: SelectionState;
|
|
21
|
+
models: Map<object, ResolvablePromise<Record<string, unknown> | null>>;
|
|
11
22
|
}>;
|
|
12
|
-
|
|
23
|
+
delegate: PrismaDelegate;
|
|
24
|
+
tick: Promise<void>;
|
|
25
|
+
constructor(context: object, builder: PothosSchemaTypes.SchemaBuilder<never>, modelName: string, findUnique: (model: Record<string, unknown>, ctx: {}) => unknown);
|
|
13
26
|
static forRef<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, findUnique: ((model: Record<string, unknown>, ctx: {}) => unknown) | undefined, builder: PothosSchemaTypes.SchemaBuilder<Types>): import("@pothos/core").ContextCache<ModelLoader, object, []>;
|
|
14
27
|
static getFindUnique(findBy: {
|
|
15
28
|
name: string | null;
|
|
@@ -23,7 +36,13 @@ export declare class ModelLoader {
|
|
|
23
36
|
static getDefaultIDSelection<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): Record<string, boolean>;
|
|
24
37
|
static getCursorSelection<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, cursor: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): Record<string, boolean>;
|
|
25
38
|
static getFindUniqueForField<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, fieldName: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): (model: Record<string, unknown>) => {};
|
|
26
|
-
|
|
27
|
-
|
|
39
|
+
getSelection(info: GraphQLResolveInfo): {
|
|
40
|
+
selection: SelectionState;
|
|
41
|
+
query: SelectionMap;
|
|
42
|
+
};
|
|
43
|
+
loadSelection(info: GraphQLResolveInfo, model: object): Promise<Record<string, unknown> | null>;
|
|
44
|
+
stageQuery(selection: SelectionState, query: SelectionMap, model: object): Promise<Record<string, unknown> | null>;
|
|
45
|
+
initLoad(state: SelectionState, initialModel: {}): Promise<Record<string, unknown> | null>;
|
|
28
46
|
}
|
|
47
|
+
export {};
|
|
29
48
|
//# sourceMappingURL=model-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-loader.d.ts","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,SAAS,EAET,WAAW,EACZ,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"model-loader.d.ts","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"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"}
|
package/dts/util/loader-map.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GraphQLResolveInfo } from 'graphql';
|
|
2
2
|
import { LoaderMappings } from '../types';
|
|
3
|
-
export declare function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath
|
|
3
|
+
export declare function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath?: string[]): string;
|
|
4
4
|
export declare function setLoaderMappings(ctx: object, info: GraphQLResolveInfo, value: LoaderMappings): void;
|
|
5
5
|
export declare function getLoaderMapping(ctx: object, path: GraphQLResolveInfo['path'], type: string): LoaderMappings | null;
|
|
6
6
|
//# sourceMappingURL=loader-map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAE,MAAM,EAAO,UAgB9F;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,QAU7F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,yBAK3F"}
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,aAAa,EAAE,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EAEvB,gBAAgB,EAChB,WAAW,EACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC;AACxB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,aAAa,EAAE,EACpB,UAAU,EACV,UAAU,EACV,uBAAuB,EAEvB,gBAAgB,EAChB,WAAW,EACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,SAAS,CAAC;AAExB,QAAA,MAAM,UAAU,UAAoB,CAAC;AAErC,eAAe,UAAU,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAE3F,MAAM,MAAM,wBAAwB,CAClC,KAAK,SAAS,WAAW,EACzB,WAAW,IACT,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,6IAMvB,MAAM,mIAEoE,CAAC;AAEnF,qBAAa,YAAY,CAAC,KAAK,SAAS,WAAW,CAAE,SAAQ,UAAU,CAAC,KAAK,CAAC;gBAChE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;IAI3B,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,gBAAgB;IA+B5D,mBAAmB,CAC1B,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,uBAAuB,CAAC,KAAK,CAAC,GAAG,IAAI;IA4B/B,WAAW,CAClB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAC1E,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAC1C,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAuD3D"}
|
package/esm/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { PrismaObjectFieldBuilder as InternalPrismaObjectFieldBuilder } from './
|
|
|
6
6
|
import { formatPrismaCursor, parsePrismaCursor } from './util/cursors.js';
|
|
7
7
|
import { getModel, getRefFromModel } from './util/datamodel.js';
|
|
8
8
|
import { getLoaderMapping, setLoaderMappings } from './util/loader-map.js';
|
|
9
|
-
import { queryFromInfo
|
|
9
|
+
import { queryFromInfo } from './util/map-query.js';
|
|
10
10
|
export { prismaConnectionHelpers } from './connection-helpers.js';
|
|
11
11
|
export { PrismaInterfaceRef } from './interface-ref.js';
|
|
12
12
|
export { PrismaNodeRef } from './node-ref.js';
|
|
@@ -97,14 +97,7 @@ export class PrismaPlugin extends BasePlugin {
|
|
|
97
97
|
info
|
|
98
98
|
}), parent, args, context, info);
|
|
99
99
|
}
|
|
100
|
-
|
|
101
|
-
return loaderCache(parent).loadSelection(selectionState, context).then((result) => {
|
|
102
|
-
const mappings = selectionState.mappings[info.path.key];
|
|
103
|
-
if (mappings) {
|
|
104
|
-
setLoaderMappings(context, info, mappings.mappings);
|
|
105
|
-
}
|
|
106
|
-
return resolver(result, args, context, info);
|
|
107
|
-
});
|
|
100
|
+
return loaderCache(context).loadSelection(info, parent).then((result) => resolver(result, args, context, info));
|
|
108
101
|
};
|
|
109
102
|
}
|
|
110
103
|
constructor(cache) {
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["SchemaBuilder","BasePlugin","PothosSchemaError","PrismaObjectFieldBuilder","InternalPrismaObjectFieldBuilder","formatPrismaCursor","parsePrismaCursor","getModel","getRefFromModel","getLoaderMapping","setLoaderMappings","queryFromInfo","
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["SchemaBuilder","BasePlugin","PothosSchemaError","PrismaObjectFieldBuilder","InternalPrismaObjectFieldBuilder","formatPrismaCursor","parsePrismaCursor","getModel","getRefFromModel","getLoaderMapping","setLoaderMappings","queryFromInfo","prismaConnectionHelpers","PrismaInterfaceRef","PrismaNodeRef","PrismaObjectRef","pluginName","ObjectFieldBuilder","PrismaPlugin","onTypeConfig","typeConfig","kind","model","extensions","pothosPrismaModel","interfaces","forEach","iface","interfaceModel","buildCache","getTypeConfig","name","onOutputFieldConfig","fieldConfig","pothosOptions","select","pothosPrismaSelect","args","ctx","nestedQuery","wrapResolve","resolver","parentConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parentTypes","Set","interfaceConfig","add","parent","context","info","mapping","path","loadSelection","then","result","constructor","cache","registerPlugin"],"mappings":"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"}
|
package/esm/model-loader.d.ts
CHANGED
|
@@ -1,15 +1,28 @@
|
|
|
1
|
+
import { GraphQLResolveInfo } from 'graphql';
|
|
1
2
|
import { InterfaceRef, ObjectRef, SchemaTypes } from '@pothos/core';
|
|
3
|
+
import { PrismaDelegate, SelectionMap } from './types.js';
|
|
2
4
|
import { SelectionState } from './util/selections.js';
|
|
5
|
+
interface ResolvablePromise<T> {
|
|
6
|
+
promise: Promise<T>;
|
|
7
|
+
resolve: (value: T) => void;
|
|
8
|
+
reject: (err: unknown) => void;
|
|
9
|
+
}
|
|
3
10
|
export declare class ModelLoader {
|
|
4
|
-
|
|
11
|
+
context: object;
|
|
5
12
|
builder: PothosSchemaTypes.SchemaBuilder<never>;
|
|
6
13
|
findUnique: (model: Record<string, unknown>, ctx: {}) => unknown;
|
|
7
14
|
modelName: string;
|
|
15
|
+
queryCache: Map<string, {
|
|
16
|
+
selection: SelectionState;
|
|
17
|
+
query: SelectionMap;
|
|
18
|
+
}>;
|
|
8
19
|
staged: Set<{
|
|
9
|
-
promise: Promise<Record<string, unknown>>;
|
|
10
20
|
state: SelectionState;
|
|
21
|
+
models: Map<object, ResolvablePromise<Record<string, unknown> | null>>;
|
|
11
22
|
}>;
|
|
12
|
-
|
|
23
|
+
delegate: PrismaDelegate;
|
|
24
|
+
tick: Promise<void>;
|
|
25
|
+
constructor(context: object, builder: PothosSchemaTypes.SchemaBuilder<never>, modelName: string, findUnique: (model: Record<string, unknown>, ctx: {}) => unknown);
|
|
13
26
|
static forRef<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, findUnique: ((model: Record<string, unknown>, ctx: {}) => unknown) | undefined, builder: PothosSchemaTypes.SchemaBuilder<Types>): import("@pothos/core").ContextCache<ModelLoader, object, [
|
|
14
27
|
]>;
|
|
15
28
|
static getFindUnique(findBy: {
|
|
@@ -24,7 +37,13 @@ export declare class ModelLoader {
|
|
|
24
37
|
static getDefaultIDSelection<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): Record<string, boolean>;
|
|
25
38
|
static getCursorSelection<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, cursor: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): Record<string, boolean>;
|
|
26
39
|
static getFindUniqueForField<Types extends SchemaTypes>(ref: ObjectRef<unknown> | InterfaceRef<unknown>, modelName: string, fieldName: string, builder: PothosSchemaTypes.SchemaBuilder<Types>): (model: Record<string, unknown>) => {};
|
|
27
|
-
|
|
28
|
-
|
|
40
|
+
getSelection(info: GraphQLResolveInfo): {
|
|
41
|
+
selection: SelectionState;
|
|
42
|
+
query: SelectionMap;
|
|
43
|
+
};
|
|
44
|
+
loadSelection(info: GraphQLResolveInfo, model: object): Promise<Record<string, unknown> | null>;
|
|
45
|
+
stageQuery(selection: SelectionState, query: SelectionMap, model: object): Promise<Record<string, unknown> | null>;
|
|
46
|
+
initLoad(state: SelectionState, initialModel: {}): Promise<Record<string, unknown> | null>;
|
|
29
47
|
}
|
|
48
|
+
export {};
|
|
30
49
|
//# sourceMappingURL=model-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-loader.d.ts","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,SAAS,EAET,WAAW,EACZ,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"model-loader.d.ts","sourceRoot":"","sources":["../src/model-loader.ts"],"names":[],"mappings":"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"}
|
package/esm/model-loader.js
CHANGED
|
@@ -15,6 +15,8 @@ function _define_property(obj, key, value) {
|
|
|
15
15
|
import { createContextCache, PothosSchemaError } from '@pothos/core';
|
|
16
16
|
import { getDelegateFromModel, getModel } from './util/datamodel.js';
|
|
17
17
|
import { getClient } from './util/get-client.js';
|
|
18
|
+
import { cacheKey, setLoaderMappings } from './util/loader-map.js';
|
|
19
|
+
import { selectionStateFromInfo } from './util/map-query.js';
|
|
18
20
|
import { mergeSelection, selectionCompatible, selectionToQuery } from './util/selections.js';
|
|
19
21
|
export class ModelLoader {
|
|
20
22
|
static forRef(ref, modelName, findUnique, builder) {
|
|
@@ -125,52 +127,105 @@ export class ModelLoader {
|
|
|
125
127
|
}
|
|
126
128
|
return this.getFindUnique(findBy);
|
|
127
129
|
}
|
|
128
|
-
|
|
129
|
-
const
|
|
130
|
+
getSelection(info) {
|
|
131
|
+
const key = cacheKey(info.parentType.name, info.path);
|
|
132
|
+
if (!this.queryCache.has(key)) {
|
|
133
|
+
const selection = selectionStateFromInfo(this.context, info);
|
|
134
|
+
this.queryCache.set(key, {
|
|
135
|
+
selection,
|
|
136
|
+
query: selectionToQuery(selection)
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return this.queryCache.get(key);
|
|
140
|
+
}
|
|
141
|
+
async loadSelection(info, model) {
|
|
142
|
+
const { selection, query } = this.getSelection(info);
|
|
143
|
+
const result = await this.stageQuery(selection, query, model);
|
|
144
|
+
if (result) {
|
|
145
|
+
const mappings = selection.mappings[info.path.key];
|
|
146
|
+
if (mappings) {
|
|
147
|
+
setLoaderMappings(this.context, info, mappings.mappings);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
async stageQuery(selection, query, model) {
|
|
130
153
|
for (const entry of this.staged) {
|
|
131
154
|
if (selectionCompatible(entry.state, query)) {
|
|
132
155
|
mergeSelection(entry.state, query);
|
|
133
|
-
|
|
156
|
+
if (!entry.models.has(model)) {
|
|
157
|
+
entry.models.set(model, createResolvablePromise());
|
|
158
|
+
}
|
|
159
|
+
return entry.models.get(model).promise;
|
|
134
160
|
}
|
|
135
161
|
}
|
|
136
|
-
return this.initLoad(selection,
|
|
162
|
+
return this.initLoad(selection, model);
|
|
137
163
|
}
|
|
138
|
-
async initLoad(state,
|
|
164
|
+
async initLoad(state, initialModel) {
|
|
165
|
+
const models = new Map();
|
|
166
|
+
const promise = createResolvablePromise();
|
|
167
|
+
models.set(initialModel, promise);
|
|
139
168
|
const entry = {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
169
|
+
models,
|
|
170
|
+
state
|
|
171
|
+
};
|
|
172
|
+
this.staged.add(entry);
|
|
173
|
+
const nextTick = createResolvablePromise();
|
|
174
|
+
void this.tick.then(() => {
|
|
175
|
+
this.staged.delete(entry);
|
|
176
|
+
for (const [model, { resolve, reject }] of entry.models) {
|
|
177
|
+
if (this.delegate.findUniqueOrThrow) {
|
|
178
|
+
void this.delegate.findUniqueOrThrow({
|
|
145
179
|
...selectionToQuery(state),
|
|
146
180
|
where: {
|
|
147
|
-
...this.findUnique(
|
|
181
|
+
...this.findUnique(model, this.context)
|
|
148
182
|
}
|
|
149
|
-
})
|
|
183
|
+
}) // eslint-disable-next-line promise/no-nesting
|
|
184
|
+
.then(resolve, reject);
|
|
150
185
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
186
|
+
else {
|
|
187
|
+
void this.delegate.findUnique({
|
|
188
|
+
rejectOnNotFound: true,
|
|
189
|
+
...selectionToQuery(state),
|
|
190
|
+
where: {
|
|
191
|
+
...this.findUnique(model, this.context)
|
|
192
|
+
}
|
|
193
|
+
}) // eslint-disable-next-line promise/no-nesting
|
|
194
|
+
.then(resolve, reject);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
setTimeout(() => void nextTick.resolve(), 0);
|
|
199
|
+
this.tick = nextTick.promise;
|
|
200
|
+
return promise.promise;
|
|
163
201
|
}
|
|
164
|
-
constructor(
|
|
165
|
-
_define_property(this, "
|
|
202
|
+
constructor(context, builder, modelName, findUnique) {
|
|
203
|
+
_define_property(this, "context", void 0);
|
|
166
204
|
_define_property(this, "builder", void 0);
|
|
167
205
|
_define_property(this, "findUnique", void 0);
|
|
168
206
|
_define_property(this, "modelName", void 0);
|
|
207
|
+
_define_property(this, "queryCache", new Map());
|
|
169
208
|
_define_property(this, "staged", new Set());
|
|
170
|
-
this
|
|
209
|
+
_define_property(this, "delegate", void 0);
|
|
210
|
+
_define_property(this, "tick", Promise.resolve());
|
|
211
|
+
this.context = context;
|
|
171
212
|
this.builder = builder;
|
|
172
213
|
this.findUnique = findUnique;
|
|
173
214
|
this.modelName = modelName;
|
|
215
|
+
this.delegate = getDelegateFromModel(getClient(this.builder, this.context), this.modelName);
|
|
174
216
|
}
|
|
175
217
|
}
|
|
218
|
+
function createResolvablePromise() {
|
|
219
|
+
let resolveFn;
|
|
220
|
+
let rejectFn;
|
|
221
|
+
const promise = new Promise((resolve, reject) => {
|
|
222
|
+
resolveFn = resolve;
|
|
223
|
+
rejectFn = reject;
|
|
224
|
+
});
|
|
225
|
+
return {
|
|
226
|
+
promise,
|
|
227
|
+
resolve: resolveFn,
|
|
228
|
+
reject: rejectFn
|
|
229
|
+
};
|
|
230
|
+
}
|
|
176
231
|
//# sourceMappingURL=model-loader.js.map
|
package/esm/model-loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/model-loader.ts"],"names":["createContextCache","PothosSchemaError","getDelegateFromModel","getModel","getClient","mergeSelection","selectionCompatible","selectionToQuery","ModelLoader","forRef","ref","modelName","findUnique","builder","model","name","getDefaultFindUnique","getFindUnique","findBy","parent","fields","primaryKeyName","primaryKey","key","join","getDefaultFindBy","idField","find","field","isId","uniqueField","isRequired","isUnique","uniqueIndex","uniqueIndexes","idx","every","f","getDefaultIDSelection","result","getCursorSelection","cursor","index","filter","Boolean","selection","column","getFindUniqueForField","fieldName","some","
|
|
1
|
+
{"version":3,"sources":["../src/model-loader.ts"],"names":["createContextCache","PothosSchemaError","getDelegateFromModel","getModel","getClient","cacheKey","setLoaderMappings","selectionStateFromInfo","mergeSelection","selectionCompatible","selectionToQuery","ModelLoader","forRef","ref","modelName","findUnique","builder","model","name","getDefaultFindUnique","getFindUnique","findBy","parent","fields","primaryKeyName","primaryKey","key","join","getDefaultFindBy","idField","find","field","isId","uniqueField","isRequired","isUnique","uniqueIndex","uniqueIndexes","idx","every","f","getDefaultIDSelection","result","getCursorSelection","cursor","index","filter","Boolean","selection","column","getFindUniqueForField","fieldName","some","getSelection","info","parentType","path","queryCache","has","context","set","query","get","loadSelection","stageQuery","mappings","entry","staged","state","models","createResolvablePromise","promise","initLoad","initialModel","Map","add","nextTick","tick","then","delete","resolve","reject","delegate","findUniqueOrThrow","where","rejectOnNotFound","setTimeout","constructor","Set","Promise","resolveFn","rejectFn"],"mappings":"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"}
|
package/esm/util/loader-map.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GraphQLResolveInfo } from 'graphql';
|
|
2
2
|
import { LoaderMappings } from '../types.js';
|
|
3
|
-
export declare function cacheKey(type: string, path: GraphQLResolveInfo["path"], subPath
|
|
3
|
+
export declare function cacheKey(type: string, path: GraphQLResolveInfo["path"], subPath?: string[]): string;
|
|
4
4
|
export declare function setLoaderMappings(ctx: object, info: GraphQLResolveInfo, value: LoaderMappings): void;
|
|
5
5
|
export declare function getLoaderMapping(ctx: object, path: GraphQLResolveInfo["path"], type: string): LoaderMappings | null;
|
|
6
6
|
//# sourceMappingURL=loader-map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"loader-map.d.ts","sourceRoot":"","sources":["../../src/util/loader-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAE,MAAM,EAAO,UAgB9F;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,QAU7F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,yBAK3F"}
|
package/esm/util/loader-map.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createContextCache } from '@pothos/core';
|
|
2
2
|
const cache = createContextCache((ctx) => new Map());
|
|
3
|
-
export function cacheKey(type, path, subPath) {
|
|
3
|
+
export function cacheKey(type, path, subPath = []) {
|
|
4
4
|
let key = "";
|
|
5
5
|
let current = path;
|
|
6
6
|
while (current) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/loader-map.ts"],"names":["createContextCache","cache","ctx","Map","cacheKey","type","path","subPath","key","current","prev","entry","setLoaderMappings","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","getLoaderMapping","get"],"mappings":"AACA,SAASA,kBAAkB,QAAQ,eAAe;AAGlD,MAAMC,QAAQD,mBAAmB,CAACE,MAAQ,IAAIC;AAE9C,OAAO,SAASC,SAASC,IAAY,EAAEC,IAAgC,EAAEC,
|
|
1
|
+
{"version":3,"sources":["../../src/util/loader-map.ts"],"names":["createContextCache","cache","ctx","Map","cacheKey","type","path","subPath","key","current","prev","entry","setLoaderMappings","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","getLoaderMapping","get"],"mappings":"AACA,SAASA,kBAAkB,QAAQ,eAAe;AAGlD,MAAMC,QAAQD,mBAAmB,CAACE,MAAQ,IAAIC;AAE9C,OAAO,SAASC,SAASC,IAAY,EAAEC,IAAgC,EAAEC,UAAoB,EAAE;IAC7F,IAAIC,MAAM;IACV,IAAIC,UAAkDH;IAEtD,MAAOG,QAAS;QACd,IAAI,OAAOA,QAAQD,GAAG,KAAK,UAAU;YACnCA,MAAMA,MAAM,CAAC,EAAEC,QAAQD,GAAG,CAAC,CAAC,EAAEA,IAAI,CAAC,GAAGC,QAAQD,GAAG;QACnD;QACAC,UAAUA,QAAQC,IAAI;IACxB;IAEA,KAAK,MAAMC,SAASJ,QAAS;QAC3BC,MAAM,CAAC,EAAEA,IAAI,CAAC,EAAEG,MAAM,CAAC;IACzB;IAEA,OAAO,CAAC,EAAEN,KAAK,CAAC,EAAEG,IAAI,CAAC;AACzB;AAEA,OAAO,SAASI,kBAAkBV,GAAW,EAAEW,IAAwB,EAAEC,KAAqB;IAC5FC,OAAOC,IAAI,CAACF,OAAOG,OAAO,CAAC,CAACC;QAC1B,MAAMC,MAAMlB,MAAMC;QAElB,MAAMkB,UAAUN,KAAK,CAACI,MAAM;QAC5B,MAAMX,UAAU;eAAIa,QAAQC,YAAY;YAAEH;SAAM;QAChD,MAAMV,MAAMJ,SAASgB,QAAQf,IAAI,EAAEQ,KAAKP,IAAI,EAAEC;QAE9CY,IAAIG,GAAG,CAACd,KAAKY,QAAQG,QAAQ;IAC/B;AACF;AAEA,OAAO,SAASC,iBAAiBtB,GAAW,EAAEI,IAAgC,EAAED,IAAY;IAC1F,MAAMc,MAAMlB,MAAMC;IAClB,MAAMM,MAAMJ,SAASC,MAAMC,MAAM,EAAE;QAE5Ba;IAAP,OAAOA,CAAAA,WAAAA,IAAIM,GAAG,CAACjB,kBAARW,sBAAAA,WAAgB;AACzB"}
|
package/lib/index.js
CHANGED
|
@@ -196,14 +196,7 @@ class PrismaPlugin extends _core.BasePlugin {
|
|
|
196
196
|
info
|
|
197
197
|
}), parent, args, context, info);
|
|
198
198
|
}
|
|
199
|
-
|
|
200
|
-
return loaderCache(parent).loadSelection(selectionState, context).then((result)=>{
|
|
201
|
-
const mappings = selectionState.mappings[info.path.key];
|
|
202
|
-
if (mappings) {
|
|
203
|
-
(0, _loadermap.setLoaderMappings)(context, info, mappings.mappings);
|
|
204
|
-
}
|
|
205
|
-
return resolver(result, args, context, info);
|
|
206
|
-
});
|
|
199
|
+
return loaderCache(context).loadSelection(info, parent).then((result)=>resolver(result, args, context, info));
|
|
207
200
|
};
|
|
208
201
|
}
|
|
209
202
|
constructor(cache){
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["prismaConnectionHelpers","PrismaInterfaceRef","PrismaNodeRef","PrismaObjectRef","formatPrismaCursor","getModel","getRefFromModel","parsePrismaCursor","queryFromInfo","ObjectFieldBuilder","PrismaPlugin","pluginName","InternalPrismaObjectFieldBuilder","BasePlugin","onTypeConfig","typeConfig","kind","model","extensions","pothosPrismaModel","interfaces","forEach","iface","interfaceModel","buildCache","getTypeConfig","PothosSchemaError","name","onOutputFieldConfig","fieldConfig","pothosOptions","select","pothosPrismaSelect","args","ctx","nestedQuery","wrapResolve","resolver","parentConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parentTypes","Set","interfaceConfig","add","parent","context","info","mapping","getLoaderMapping","path","setLoaderMappings","
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["prismaConnectionHelpers","PrismaInterfaceRef","PrismaNodeRef","PrismaObjectRef","formatPrismaCursor","getModel","getRefFromModel","parsePrismaCursor","queryFromInfo","ObjectFieldBuilder","PrismaPlugin","pluginName","InternalPrismaObjectFieldBuilder","BasePlugin","onTypeConfig","typeConfig","kind","model","extensions","pothosPrismaModel","interfaces","forEach","iface","interfaceModel","buildCache","getTypeConfig","PothosSchemaError","name","onOutputFieldConfig","fieldConfig","pothosOptions","select","pothosPrismaSelect","args","ctx","nestedQuery","wrapResolve","resolver","parentConfig","parentType","loadedCheck","pothosPrismaLoaded","loaderCache","pothosPrismaLoader","fallback","pothosPrismaFallback","parentTypes","Set","interfaceConfig","add","parent","context","info","mapping","getLoaderMapping","path","setLoaderMappings","loadSelection","then","result","constructor","cache","SchemaBuilder","registerPlugin"],"mappings":"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"}
|
package/lib/model-loader.js
CHANGED
|
@@ -11,6 +11,8 @@ Object.defineProperty(exports, "ModelLoader", {
|
|
|
11
11
|
const _core = require("@pothos/core");
|
|
12
12
|
const _datamodel = require("./util/datamodel");
|
|
13
13
|
const _getclient = require("./util/get-client");
|
|
14
|
+
const _loadermap = require("./util/loader-map");
|
|
15
|
+
const _mapquery = require("./util/map-query");
|
|
14
16
|
const _selections = require("./util/selections");
|
|
15
17
|
function _define_property(obj, key, value) {
|
|
16
18
|
if (key in obj) {
|
|
@@ -129,53 +131,105 @@ class ModelLoader {
|
|
|
129
131
|
}
|
|
130
132
|
return this.getFindUnique(findBy);
|
|
131
133
|
}
|
|
132
|
-
|
|
133
|
-
const
|
|
134
|
+
getSelection(info) {
|
|
135
|
+
const key = (0, _loadermap.cacheKey)(info.parentType.name, info.path);
|
|
136
|
+
if (!this.queryCache.has(key)) {
|
|
137
|
+
const selection = (0, _mapquery.selectionStateFromInfo)(this.context, info);
|
|
138
|
+
this.queryCache.set(key, {
|
|
139
|
+
selection,
|
|
140
|
+
query: (0, _selections.selectionToQuery)(selection)
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return this.queryCache.get(key);
|
|
144
|
+
}
|
|
145
|
+
async loadSelection(info, model) {
|
|
146
|
+
const { selection, query } = this.getSelection(info);
|
|
147
|
+
const result = await this.stageQuery(selection, query, model);
|
|
148
|
+
if (result) {
|
|
149
|
+
const mappings = selection.mappings[info.path.key];
|
|
150
|
+
if (mappings) {
|
|
151
|
+
(0, _loadermap.setLoaderMappings)(this.context, info, mappings.mappings);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
async stageQuery(selection, query, model) {
|
|
134
157
|
for (const entry of this.staged){
|
|
135
158
|
if ((0, _selections.selectionCompatible)(entry.state, query)) {
|
|
136
159
|
(0, _selections.mergeSelection)(entry.state, query);
|
|
137
|
-
|
|
160
|
+
if (!entry.models.has(model)) {
|
|
161
|
+
entry.models.set(model, createResolvablePromise());
|
|
162
|
+
}
|
|
163
|
+
return entry.models.get(model).promise;
|
|
138
164
|
}
|
|
139
165
|
}
|
|
140
|
-
return this.initLoad(selection,
|
|
166
|
+
return this.initLoad(selection, model);
|
|
141
167
|
}
|
|
142
|
-
async initLoad(state,
|
|
168
|
+
async initLoad(state, initialModel) {
|
|
169
|
+
const models = new Map();
|
|
170
|
+
const promise = createResolvablePromise();
|
|
171
|
+
models.set(initialModel, promise);
|
|
143
172
|
const entry = {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
173
|
+
models,
|
|
174
|
+
state
|
|
175
|
+
};
|
|
176
|
+
this.staged.add(entry);
|
|
177
|
+
const nextTick = createResolvablePromise();
|
|
178
|
+
void this.tick.then(()=>{
|
|
179
|
+
this.staged.delete(entry);
|
|
180
|
+
for (const [model, { resolve, reject }] of entry.models){
|
|
181
|
+
if (this.delegate.findUniqueOrThrow) {
|
|
182
|
+
void this.delegate.findUniqueOrThrow({
|
|
149
183
|
...(0, _selections.selectionToQuery)(state),
|
|
150
184
|
where: {
|
|
151
|
-
...this.findUnique(
|
|
185
|
+
...this.findUnique(model, this.context)
|
|
152
186
|
}
|
|
153
|
-
})
|
|
187
|
+
})// eslint-disable-next-line promise/no-nesting
|
|
188
|
+
.then(resolve, reject);
|
|
189
|
+
} else {
|
|
190
|
+
void this.delegate.findUnique({
|
|
191
|
+
rejectOnNotFound: true,
|
|
192
|
+
...(0, _selections.selectionToQuery)(state),
|
|
193
|
+
where: {
|
|
194
|
+
...this.findUnique(model, this.context)
|
|
195
|
+
}
|
|
196
|
+
})// eslint-disable-next-line promise/no-nesting
|
|
197
|
+
.then(resolve, reject);
|
|
154
198
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
}),
|
|
163
|
-
state
|
|
164
|
-
};
|
|
165
|
-
this.staged.add(entry);
|
|
166
|
-
return entry.promise;
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
setTimeout(()=>void nextTick.resolve(), 0);
|
|
202
|
+
this.tick = nextTick.promise;
|
|
203
|
+
return promise.promise;
|
|
167
204
|
}
|
|
168
|
-
constructor(
|
|
169
|
-
_define_property(this, "
|
|
205
|
+
constructor(context, builder, modelName, findUnique){
|
|
206
|
+
_define_property(this, "context", void 0);
|
|
170
207
|
_define_property(this, "builder", void 0);
|
|
171
208
|
_define_property(this, "findUnique", void 0);
|
|
172
209
|
_define_property(this, "modelName", void 0);
|
|
210
|
+
_define_property(this, "queryCache", new Map());
|
|
173
211
|
_define_property(this, "staged", new Set());
|
|
174
|
-
this
|
|
212
|
+
_define_property(this, "delegate", void 0);
|
|
213
|
+
_define_property(this, "tick", Promise.resolve());
|
|
214
|
+
this.context = context;
|
|
175
215
|
this.builder = builder;
|
|
176
216
|
this.findUnique = findUnique;
|
|
177
217
|
this.modelName = modelName;
|
|
218
|
+
this.delegate = (0, _datamodel.getDelegateFromModel)((0, _getclient.getClient)(this.builder, this.context), this.modelName);
|
|
178
219
|
}
|
|
179
220
|
}
|
|
221
|
+
function createResolvablePromise() {
|
|
222
|
+
let resolveFn;
|
|
223
|
+
let rejectFn;
|
|
224
|
+
const promise = new Promise((resolve, reject)=>{
|
|
225
|
+
resolveFn = resolve;
|
|
226
|
+
rejectFn = reject;
|
|
227
|
+
});
|
|
228
|
+
return {
|
|
229
|
+
promise,
|
|
230
|
+
resolve: resolveFn,
|
|
231
|
+
reject: rejectFn
|
|
232
|
+
};
|
|
233
|
+
}
|
|
180
234
|
|
|
181
235
|
//# sourceMappingURL=model-loader.js.map
|
package/lib/model-loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/model-loader.ts"],"names":["ModelLoader","forRef","ref","modelName","findUnique","builder","createContextCache","model","PothosSchemaError","name","getDefaultFindUnique","getFindUnique","findBy","parent","fields","primaryKeyName","primaryKey","key","join","getDefaultFindBy","getModel","idField","find","field","isId","uniqueField","isRequired","isUnique","uniqueIndex","uniqueIndexes","idx","every","f","getDefaultIDSelection","result","getCursorSelection","cursor","index","filter","Boolean","selection","column","getFindUniqueForField","fieldName","some","
|
|
1
|
+
{"version":3,"sources":["../src/model-loader.ts"],"names":["ModelLoader","forRef","ref","modelName","findUnique","builder","createContextCache","model","PothosSchemaError","name","getDefaultFindUnique","getFindUnique","findBy","parent","fields","primaryKeyName","primaryKey","key","join","getDefaultFindBy","getModel","idField","find","field","isId","uniqueField","isRequired","isUnique","uniqueIndex","uniqueIndexes","idx","every","f","getDefaultIDSelection","result","getCursorSelection","cursor","index","filter","Boolean","selection","column","getFindUniqueForField","fieldName","some","getSelection","info","cacheKey","parentType","path","queryCache","has","selectionStateFromInfo","context","set","query","selectionToQuery","get","loadSelection","stageQuery","mappings","setLoaderMappings","entry","staged","selectionCompatible","state","mergeSelection","models","createResolvablePromise","promise","initLoad","initialModel","Map","add","nextTick","tick","then","delete","resolve","reject","delegate","findUniqueOrThrow","where","rejectOnNotFound","setTimeout","constructor","Set","Promise","getDelegateFromModel","getClient","resolveFn","rejectFn"],"mappings":";;;;+BAyBaA;;;eAAAA;;;sBAlBN;2BAEwC;2BACrB;2BACkB;0BACL;4BAMhC;;;;;;;;;;;;;;AAOA,MAAMA;IA6BX,OAAOC,OACLC,GAA+C,EAC/CC,SAAiB,EACjBC,UAA8E,EAC9EC,OAA+C,EAC/C;QACA,OAAOC,IAAAA,wBAAkB,EACvB,CAACC,QACC,IAAIP,YACFO,OACAF,SACAF,WACAC,eAAe,OACX;gBACE,MAAM,IAAII,uBAAiB,CAAC,CAAC,uBAAuB,EAAEN,IAAIO,IAAI,CAAC,CAAC;YAClE,IACAL,uBAAAA,wBAAAA,aAAc,IAAI,CAACM,oBAAoB,CAACR,KAAKC,WAAWE;IAGpE;IAEA,OAAOM,cACLC,MAKU,EAC8B;QACxC,IAAI,OAAOA,WAAW,UAAU;YAC9B,OAAO,CAACC,SAAY,CAAA;oBAAE,CAACD,OAAO,EAAEC,MAAM,CAACD,OAAO;gBAAC,CAAA;QACjD;QAEA,MAAM,EAAEE,MAAM,EAAEL,MAAMM,cAAc,EAAE,GAAGH;QAEzC,OAAO,CAACC;YACN,MAAMG,aAAsC,CAAC;YAE7C,KAAK,MAAMC,OAAOH,OAAQ;gBACxBE,UAAU,CAACC,IAAI,GAAGJ,MAAM,CAACI,IAAI;YAC/B;YAEA,OAAO;gBAAE,CAACF,2BAAAA,4BAAAA,iBAAkBD,OAAOI,IAAI,CAAC,KAAK,EAAEF;YAAW;QAC5D;IACF;IAEA,OAAOG,iBACLjB,GAA+C,EAC/CC,SAAiB,EACjBE,OAA+C,EAC/C;QACA,MAAME,QAAQa,IAAAA,mBAAQ,EAACjB,WAAWE;QAClC,MAAMgB,UAAUd,MAAMO,MAAM,CAACQ,IAAI,CAAC,CAACC,QAAUA,MAAMC,IAAI;QACvD,MAAMC,cAAclB,MAAMO,MAAM,CAACQ,IAAI,CAAC,CAACC,QAAUA,MAAMG,UAAU,IAAIH,MAAMI,QAAQ;QACnF,MAAMC,cAAcrB,MAAMsB,aAAa,CAACP,IAAI,CAAC,CAACQ,MAC5CA,IAAIhB,MAAM,CAACiB,KAAK,CAAC,CAACR;oBAAUhB;wBAAAA,qBAAAA,MAAMO,MAAM,CAACQ,IAAI,CAAC,CAACU,IAAMA,EAAEvB,IAAI,KAAKc,oBAApChB,yCAAAA,mBAA4CmB,UAAU;;QAGpF,IAAId;QAQJ,IAAIL,MAAMS,UAAU,EAAE;YACpBJ,SAASL,MAAMS,UAAU;QAC3B,OAAO,IAAIK,SAAS;YAClBT,SAASS,QAAQZ,IAAI;QACvB,OAAO,IAAIgB,aAAa;YACtBb,SAASa,YAAYhB,IAAI;QAC3B,OAAO,IAAImB,aAAa;YACtBhB,SAASgB;QACX;QAEA,IAAI,CAAChB,QAAQ;YACX,MAAM,IAAIJ,uBAAiB,CAAC,CAAC,uBAAuB,EAAEN,IAAIO,IAAI,CAAC,CAAC;QAClE;QAEA,OAAOG;IACT;IAEA,OAAOF,qBACLR,GAA+C,EAC/CC,SAAiB,EACjBE,OAA+C,EACP;QACxC,MAAMO,SAAS,IAAI,CAACO,gBAAgB,CAACjB,KAAKC,WAAWE;QAErD,OAAO,IAAI,CAACM,aAAa,CAACC;IAC5B;IAEA,OAAOqB,sBACL/B,GAA+C,EAC/CC,SAAiB,EACjBE,OAA+C,EACtB;QACzB,MAAMO,SAAS,IAAI,CAACO,gBAAgB,CAACjB,KAAKC,WAAWE;QAErD,IAAI,OAAOO,WAAW,UAAU;YAC9B,OAAO;gBAAE,CAACA,OAAO,EAAE;YAAK;QAC1B;QAEA,MAAMsB,SAAkC,CAAC;QAEzC,KAAK,MAAMX,SAASX,OAAOE,MAAM,CAAE;YACjCoB,MAAM,CAACX,MAAM,GAAG;QAClB;QAEA,OAAOW;IACT;IAEA,OAAOC,mBACLjC,GAA+C,EAC/CC,SAAiB,EACjBiC,MAAc,EACd/B,OAA+C,EACtB;QACzB,MAAME,QAAQa,IAAAA,mBAAQ,EAACjB,WAAWE;QAClC,MAAMkB,QAAQhB,MAAMO,MAAM,CAACQ,IAAI,CAAC,CAACC,QAAUA,MAAMd,IAAI,KAAK2B;QAE1D,IAAIb,OAAO;YACT,OAAO;gBAAE,CAACA,MAAMd,IAAI,CAAC,EAAE;YAAK;QAC9B;YAGkBqB;QAFlB,MAAMO,QAAQ;YAAC9B,MAAMS,UAAU;eAAKT,MAAMsB,aAAa;SAAC,CACrDS,MAAM,CAACC,SACPjB,IAAI,CAAC,CAACQ,MAAQ,AAACA,CAAAA,CAAAA,YAAAA,IAAKrB,IAAI,cAATqB,uBAAAA,YAAaA,IAAKhB,MAAM,CAACI,IAAI,CAAC,IAAG,MAAOkB;QAE1D,IAAI,CAACC,OAAO;YACV,MAAM,IAAI7B,uBAAiB,CAAC,CAAC,YAAY,EAAE4B,OAAO,qBAAqB,EAAElC,IAAIO,IAAI,CAAC,CAAC;QACrF;QAEA,MAAM+B,YAAqC,CAAC;QAE5C,KAAK,MAAMC,UAAUJ,MAAMvB,MAAM,CAAE;YACjC0B,SAAS,CAACC,OAAO,GAAG;QACtB;QAEA,OAAOD;IACT;IAEA,OAAOE,sBACLxC,GAA+C,EAC/CC,SAAiB,EACjBwC,SAAiB,EACjBtC,OAA+C,EACP;YAmBrCE,mBAA0BA;QAlB7B,MAAMA,QAAQa,IAAAA,mBAAQ,EAACjB,WAAWE;YAGtByB;QADZ,MAAMF,cAAcrB,MAAMsB,aAAa,CAACP,IAAI,CAC1C,CAACQ,MAAQ,AAACA,CAAAA,CAAAA,YAAAA,IAAIrB,IAAI,cAARqB,uBAAAA,YAAYA,IAAIhB,MAAM,CAACI,IAAI,CAAC,IAAG,MAAOyB;QAGlD,IAAI/B;YAYDL;QAJH,IAAIA,MAAMO,MAAM,CAAC8B,IAAI,CAAC,CAACrB,QAAUA,MAAMd,IAAI,KAAKkC,YAAY;YAC1D/B,SAAS+B;QACX,OAAO,IACLpC,MAAMS,UAAU,IAChB,AAACT,CAAAA,CAAAA,0BAAAA,oBAAAA,MAAMS,UAAU,cAAhBT,wCAAAA,kBAAkBE,IAAI,cAAtBF,oCAAAA,0BAA0BA,qBAAAA,MAAMS,UAAU,cAAhBT,yCAAAA,mBAAkBO,MAAM,CAACI,IAAI,CAAC,IAAG,MAAOyB,WACnE;YACA/B,SAASL,MAAMS,UAAU;QAC3B,OAAO,IAAIY,aAAa;YACtBhB,SAASgB;QACX;QAEA,IAAI,CAAChB,QAAQ;YACX,MAAM,IAAIJ,uBAAiB,CAAC,CAAC,kCAAkC,EAAEmC,UAAU,IAAI,EAAEzC,IAAIO,IAAI,CAAC,CAAC;QAC7F;QAEA,OAAO,IAAI,CAACE,aAAa,CAACC;IAC5B;IAEAiC,aAAaC,IAAwB,EAAE;QACrC,MAAM7B,MAAM8B,IAAAA,mBAAQ,EAACD,KAAKE,UAAU,CAACvC,IAAI,EAAEqC,KAAKG,IAAI;QACpD,IAAI,CAAC,IAAI,CAACC,UAAU,CAACC,GAAG,CAAClC,MAAM;YAC7B,MAAMuB,YAAYY,IAAAA,gCAAsB,EAAC,IAAI,CAACC,OAAO,EAAEP;YACvD,IAAI,CAACI,UAAU,CAACI,GAAG,CAACrC,KAAK;gBACvBuB;gBACAe,OAAOC,IAAAA,4BAAgB,EAAChB;YAC1B;QACF;QAEA,OAAO,IAAI,CAACU,UAAU,CAACO,GAAG,CAACxC;IAC7B;IAEA,MAAMyC,cAAcZ,IAAwB,EAAEvC,KAAa,EAAE;QAC3D,MAAM,EAAEiC,SAAS,EAAEe,KAAK,EAAE,GAAG,IAAI,CAACV,YAAY,CAACC;QAE/C,MAAMZ,SAAS,MAAM,IAAI,CAACyB,UAAU,CAACnB,WAAWe,OAAOhD;QAEvD,IAAI2B,QAAQ;YACV,MAAM0B,WAAWpB,UAAUoB,QAAQ,CAACd,KAAKG,IAAI,CAAChC,GAAG,CAAC;YAElD,IAAI2C,UAAU;gBACZC,IAAAA,4BAAiB,EAAC,IAAI,CAACR,OAAO,EAAEP,MAAMc,SAASA,QAAQ;YACzD;QACF;QAEA,OAAO1B;IACT;IAEA,MAAMyB,WAAWnB,SAAyB,EAAEe,KAAmB,EAAEhD,KAAa,EAAE;QAC9E,KAAK,MAAMuD,SAAS,IAAI,CAACC,MAAM,CAAE;YAC/B,IAAIC,IAAAA,+BAAmB,EAACF,MAAMG,KAAK,EAAEV,QAAQ;gBAC3CW,IAAAA,0BAAc,EAACJ,MAAMG,KAAK,EAAEV;gBAE5B,IAAI,CAACO,MAAMK,MAAM,CAAChB,GAAG,CAAC5C,QAAQ;oBAC5BuD,MAAMK,MAAM,CAACb,GAAG,CAAC/C,OAAO6D;gBAC1B;gBAEA,OAAON,MAAMK,MAAM,CAACV,GAAG,CAAClD,OAAQ8D,OAAO;YACzC;QACF;QAEA,OAAO,IAAI,CAACC,QAAQ,CAAC9B,WAAWjC;IAClC;IAEA,MAAM+D,SAASL,KAAqB,EAAEM,YAAgB,EAAE;QACtD,MAAMJ,SAAS,IAAIK;QAEnB,MAAMH,UAAUD;QAChBD,OAAOb,GAAG,CAACiB,cAAcF;QAEzB,MAAMP,QAAQ;YACZK;YACAF;QACF;QAEA,IAAI,CAACF,MAAM,CAACU,GAAG,CAACX;QAEhB,MAAMY,WAAWN;QACjB,KAAK,IAAI,CAACO,IAAI,CAACC,IAAI,CAAC;YAClB,IAAI,CAACb,MAAM,CAACc,MAAM,CAACf;YAEnB,KAAK,MAAM,CAACvD,OAAO,EAAEuE,OAAO,EAAEC,MAAM,EAAE,CAAC,IAAIjB,MAAMK,MAAM,CAAE;gBACvD,IAAI,IAAI,CAACa,QAAQ,CAACC,iBAAiB,EAAE;oBACnC,KAAK,IAAI,CAACD,QAAQ,CACfC,iBAAiB,CAAC;wBACjB,GAAGzB,IAAAA,4BAAgB,EAACS,MAAM;wBAC1BiB,OAAO;4BAAE,GAAI,IAAI,CAAC9E,UAAU,CAACG,OAAkC,IAAI,CAAC8C,OAAO,CAAC;wBAAQ;oBACtF,EACA,8CAA8C;qBAC7CuB,IAAI,CAACE,SAAqBC;gBAC/B,OAAO;oBACL,KAAK,IAAI,CAACC,QAAQ,CACf5E,UAAU,CAAC;wBACV+E,kBAAkB;wBAClB,GAAG3B,IAAAA,4BAAgB,EAACS,MAAM;wBAC1BiB,OAAO;4BAAE,GAAI,IAAI,CAAC9E,UAAU,CAACG,OAAkC,IAAI,CAAC8C,OAAO,CAAC;wBAAQ;oBACtF,EACA,8CAA8C;qBAC7CuB,IAAI,CAACE,SAAqBC;gBAC/B;YACF;QACF;QACAK,WAAW,IAAM,KAAKV,SAASI,OAAO,IAAI;QAC1C,IAAI,CAACH,IAAI,GAAGD,SAASL,OAAO;QAE5B,OAAOA,QAAQA,OAAO;IACxB;IA3RAgB,YACEhC,OAAe,EACfhD,OAA+C,EAC/CF,SAAiB,EACjBC,UAAgE,CAChE;QAjBFiD,uBAAAA,WAAAA,KAAAA;QACAhD,uBAAAA,WAAAA,KAAAA;QACAD,uBAAAA,cAAAA,KAAAA;QACAD,uBAAAA,aAAAA,KAAAA;QACA+C,uBAAAA,cAAa,IAAIsB;QACjBT,uBAAAA,UAAS,IAAIuB;QAIbN,uBAAAA,YAAAA,KAAAA;QACAL,uBAAAA,QAAOY,QAAQT,OAAO;QAQpB,IAAI,CAACzB,OAAO,GAAGA;QACf,IAAI,CAAChD,OAAO,GAAGA;QACf,IAAI,CAACD,UAAU,GAAGA;QAClB,IAAI,CAACD,SAAS,GAAGA;QACjB,IAAI,CAAC6E,QAAQ,GAAGQ,IAAAA,+BAAoB,EAClCC,IAAAA,oBAAS,EAAC,IAAI,CAACpF,OAAO,EAAE,IAAI,CAACgD,OAAO,GACpC,IAAI,CAAClD,SAAS;IAElB;AA8QF;AAEA,SAASiE;IACP,IAAIsB;IACJ,IAAIC;IACJ,MAAMtB,UAAU,IAAIkB,QAAW,CAACT,SAASC;QACvCW,YAAYZ;QACZa,WAAWZ;IACb;IAEA,OAAO;QAAEV;QAASS,SAASY;QAAWX,QAAQY;IAAS;AACzD"}
|
package/lib/util/loader-map.js
CHANGED
|
@@ -21,7 +21,7 @@ _export(exports, {
|
|
|
21
21
|
});
|
|
22
22
|
const _core = require("@pothos/core");
|
|
23
23
|
const cache = (0, _core.createContextCache)((ctx)=>new Map());
|
|
24
|
-
function cacheKey(type, path, subPath) {
|
|
24
|
+
function cacheKey(type, path, subPath = []) {
|
|
25
25
|
let key = '';
|
|
26
26
|
let current = path;
|
|
27
27
|
while(current){
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/util/loader-map.ts"],"names":["cacheKey","setLoaderMappings","getLoaderMapping","cache","createContextCache","ctx","Map","type","path","subPath","key","current","prev","entry","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","get"],"mappings":";;;;;;;;;;;IAMgBA,QAAQ;eAARA;;IAkBAC,iBAAiB;eAAjBA;;IAYAC,gBAAgB;eAAhBA;;;sBAnCmB;AAGnC,MAAMC,QAAQC,IAAAA,wBAAkB,EAAC,CAACC,MAAQ,IAAIC;AAEvC,SAASN,SAASO,IAAY,EAAEC,IAAgC,EAAEC,
|
|
1
|
+
{"version":3,"sources":["../../src/util/loader-map.ts"],"names":["cacheKey","setLoaderMappings","getLoaderMapping","cache","createContextCache","ctx","Map","type","path","subPath","key","current","prev","entry","info","value","Object","keys","forEach","field","map","mapping","indirectPath","set","mappings","get"],"mappings":";;;;;;;;;;;IAMgBA,QAAQ;eAARA;;IAkBAC,iBAAiB;eAAjBA;;IAYAC,gBAAgB;eAAhBA;;;sBAnCmB;AAGnC,MAAMC,QAAQC,IAAAA,wBAAkB,EAAC,CAACC,MAAQ,IAAIC;AAEvC,SAASN,SAASO,IAAY,EAAEC,IAAgC,EAAEC,UAAoB,EAAE;IAC7F,IAAIC,MAAM;IACV,IAAIC,UAAkDH;IAEtD,MAAOG,QAAS;QACd,IAAI,OAAOA,QAAQD,GAAG,KAAK,UAAU;YACnCA,MAAMA,MAAM,CAAC,EAAEC,QAAQD,GAAG,CAAC,CAAC,EAAEA,IAAI,CAAC,GAAGC,QAAQD,GAAG;QACnD;QACAC,UAAUA,QAAQC,IAAI;IACxB;IAEA,KAAK,MAAMC,SAASJ,QAAS;QAC3BC,MAAM,CAAC,EAAEA,IAAI,CAAC,EAAEG,MAAM,CAAC;IACzB;IAEA,OAAO,CAAC,EAAEN,KAAK,CAAC,EAAEG,IAAI,CAAC;AACzB;AAEO,SAAST,kBAAkBI,GAAW,EAAES,IAAwB,EAAEC,KAAqB;IAC5FC,OAAOC,IAAI,CAACF,OAAOG,OAAO,CAAC,CAACC;QAC1B,MAAMC,MAAMjB,MAAME;QAElB,MAAMgB,UAAUN,KAAK,CAACI,MAAM;QAC5B,MAAMV,UAAU;eAAIY,QAAQC,YAAY;YAAEH;SAAM;QAChD,MAAMT,MAAMV,SAASqB,QAAQd,IAAI,EAAEO,KAAKN,IAAI,EAAEC;QAE9CW,IAAIG,GAAG,CAACb,KAAKW,QAAQG,QAAQ;IAC/B;AACF;AAEO,SAAStB,iBAAiBG,GAAW,EAAEG,IAAgC,EAAED,IAAY;IAC1F,MAAMa,MAAMjB,MAAME;IAClB,MAAMK,MAAMV,SAASO,MAAMC,MAAM,EAAE;QAE5BY;IAAP,OAAOA,CAAAA,WAAAA,IAAIK,GAAG,CAACf,kBAARU,sBAAAA,WAAgB;AACzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pothos/plugin-prisma",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.59.0",
|
|
4
4
|
"description": "A Pothos plugin for more efficient integration with prisma",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./dts/index.d.ts",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"graphql-scalars": "^1.22.2",
|
|
70
70
|
"graphql-tag": "^2.12.6",
|
|
71
71
|
"prisma": "^5.0.0",
|
|
72
|
-
"@pothos/core": "3.33.
|
|
72
|
+
"@pothos/core": "3.33.1",
|
|
73
73
|
"@pothos/plugin-complexity": "3.13.0",
|
|
74
74
|
"@pothos/plugin-errors": "3.11.1",
|
|
75
75
|
"@pothos/plugin-relay": "3.43.1",
|
package/src/index.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { PrismaModelTypes } from './types';
|
|
|
16
16
|
import { formatPrismaCursor, parsePrismaCursor } from './util/cursors';
|
|
17
17
|
import { getModel, getRefFromModel } from './util/datamodel';
|
|
18
18
|
import { getLoaderMapping, setLoaderMappings } from './util/loader-map';
|
|
19
|
-
import { queryFromInfo
|
|
19
|
+
import { queryFromInfo } from './util/map-query';
|
|
20
20
|
|
|
21
21
|
export { prismaConnectionHelpers } from './connection-helpers';
|
|
22
22
|
export { PrismaInterfaceRef } from './interface-ref';
|
|
@@ -164,19 +164,9 @@ export class PrismaPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {
|
|
|
164
164
|
return fallback(queryFromInfo({ context, info }), parent, args, context, info);
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
.loadSelection(selectionState, context)
|
|
171
|
-
.then((result) => {
|
|
172
|
-
const mappings = selectionState.mappings[info.path.key];
|
|
173
|
-
|
|
174
|
-
if (mappings) {
|
|
175
|
-
setLoaderMappings(context, info, mappings.mappings);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
return resolver(result, args, context, info);
|
|
179
|
-
});
|
|
167
|
+
return loaderCache(context)
|
|
168
|
+
.loadSelection(info, parent as object)
|
|
169
|
+
.then((result) => resolver(result, args, context, info));
|
|
180
170
|
};
|
|
181
171
|
}
|
|
182
172
|
}
|
package/src/model-loader.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { GraphQLResolveInfo } from 'graphql';
|
|
1
2
|
import {
|
|
2
3
|
createContextCache,
|
|
3
4
|
InterfaceRef,
|
|
@@ -5,8 +6,11 @@ import {
|
|
|
5
6
|
PothosSchemaError,
|
|
6
7
|
SchemaTypes,
|
|
7
8
|
} from '@pothos/core';
|
|
9
|
+
import { PrismaDelegate, SelectionMap } from './types';
|
|
8
10
|
import { getDelegateFromModel, getModel } from './util/datamodel';
|
|
9
11
|
import { getClient } from './util/get-client';
|
|
12
|
+
import { cacheKey, setLoaderMappings } from './util/loader-map';
|
|
13
|
+
import { selectionStateFromInfo } from './util/map-query';
|
|
10
14
|
import {
|
|
11
15
|
mergeSelection,
|
|
12
16
|
selectionCompatible,
|
|
@@ -14,27 +18,38 @@ import {
|
|
|
14
18
|
selectionToQuery,
|
|
15
19
|
} from './util/selections';
|
|
16
20
|
|
|
21
|
+
interface ResolvablePromise<T> {
|
|
22
|
+
promise: Promise<T>;
|
|
23
|
+
resolve: (value: T) => void;
|
|
24
|
+
reject: (err: unknown) => void;
|
|
25
|
+
}
|
|
17
26
|
export class ModelLoader {
|
|
18
|
-
|
|
27
|
+
context: object;
|
|
19
28
|
builder: PothosSchemaTypes.SchemaBuilder<never>;
|
|
20
29
|
findUnique: (model: Record<string, unknown>, ctx: {}) => unknown;
|
|
21
30
|
modelName: string;
|
|
22
|
-
|
|
31
|
+
queryCache = new Map<string, { selection: SelectionState; query: SelectionMap }>();
|
|
23
32
|
staged = new Set<{
|
|
24
|
-
promise: Promise<Record<string, unknown>>;
|
|
25
33
|
state: SelectionState;
|
|
34
|
+
models: Map<object, ResolvablePromise<Record<string, unknown> | null>>;
|
|
26
35
|
}>();
|
|
36
|
+
delegate: PrismaDelegate;
|
|
37
|
+
tick = Promise.resolve();
|
|
27
38
|
|
|
28
39
|
constructor(
|
|
29
|
-
|
|
40
|
+
context: object,
|
|
30
41
|
builder: PothosSchemaTypes.SchemaBuilder<never>,
|
|
31
42
|
modelName: string,
|
|
32
43
|
findUnique: (model: Record<string, unknown>, ctx: {}) => unknown,
|
|
33
44
|
) {
|
|
34
|
-
this.
|
|
45
|
+
this.context = context;
|
|
35
46
|
this.builder = builder;
|
|
36
47
|
this.findUnique = findUnique;
|
|
37
48
|
this.modelName = modelName;
|
|
49
|
+
this.delegate = getDelegateFromModel(
|
|
50
|
+
getClient(this.builder, this.context as never),
|
|
51
|
+
this.modelName,
|
|
52
|
+
);
|
|
38
53
|
}
|
|
39
54
|
|
|
40
55
|
static forRef<Types extends SchemaTypes>(
|
|
@@ -217,48 +232,103 @@ export class ModelLoader {
|
|
|
217
232
|
return this.getFindUnique(findBy);
|
|
218
233
|
}
|
|
219
234
|
|
|
220
|
-
|
|
221
|
-
const
|
|
235
|
+
getSelection(info: GraphQLResolveInfo) {
|
|
236
|
+
const key = cacheKey(info.parentType.name, info.path);
|
|
237
|
+
if (!this.queryCache.has(key)) {
|
|
238
|
+
const selection = selectionStateFromInfo(this.context, info);
|
|
239
|
+
this.queryCache.set(key, {
|
|
240
|
+
selection,
|
|
241
|
+
query: selectionToQuery(selection),
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return this.queryCache.get(key)!;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
async loadSelection(info: GraphQLResolveInfo, model: object) {
|
|
249
|
+
const { selection, query } = this.getSelection(info);
|
|
222
250
|
|
|
251
|
+
const result = await this.stageQuery(selection, query, model);
|
|
252
|
+
|
|
253
|
+
if (result) {
|
|
254
|
+
const mappings = selection.mappings[info.path.key];
|
|
255
|
+
|
|
256
|
+
if (mappings) {
|
|
257
|
+
setLoaderMappings(this.context, info, mappings.mappings);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
return result;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
async stageQuery(selection: SelectionState, query: SelectionMap, model: object) {
|
|
223
265
|
for (const entry of this.staged) {
|
|
224
266
|
if (selectionCompatible(entry.state, query)) {
|
|
225
267
|
mergeSelection(entry.state, query);
|
|
226
268
|
|
|
227
|
-
|
|
269
|
+
if (!entry.models.has(model)) {
|
|
270
|
+
entry.models.set(model, createResolvablePromise<Record<string, unknown> | null>());
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return entry.models.get(model)!.promise;
|
|
228
274
|
}
|
|
229
275
|
}
|
|
230
276
|
|
|
231
|
-
return this.initLoad(selection,
|
|
277
|
+
return this.initLoad(selection, model);
|
|
232
278
|
}
|
|
233
279
|
|
|
234
|
-
async initLoad(state: SelectionState,
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
const delegate = getDelegateFromModel(
|
|
240
|
-
getClient(this.builder, context as never),
|
|
241
|
-
this.modelName,
|
|
242
|
-
);
|
|
243
|
-
|
|
244
|
-
if (delegate.findUniqueOrThrow) {
|
|
245
|
-
return delegate.findUniqueOrThrow({
|
|
246
|
-
...selectionToQuery(state),
|
|
247
|
-
where: { ...(this.findUnique(this.model as Record<string, unknown>, context) as {}) },
|
|
248
|
-
} as never) as Promise<Record<string, unknown>>;
|
|
249
|
-
}
|
|
280
|
+
async initLoad(state: SelectionState, initialModel: {}) {
|
|
281
|
+
const models = new Map<object, ResolvablePromise<Record<string, unknown> | null>>();
|
|
282
|
+
|
|
283
|
+
const promise = createResolvablePromise<Record<string, unknown> | null>();
|
|
284
|
+
models.set(initialModel, promise);
|
|
250
285
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
...selectionToQuery(state),
|
|
254
|
-
where: { ...(this.findUnique(this.model as Record<string, unknown>, context) as {}) },
|
|
255
|
-
} as never) as Promise<Record<string, unknown>>;
|
|
256
|
-
}),
|
|
286
|
+
const entry = {
|
|
287
|
+
models,
|
|
257
288
|
state,
|
|
258
289
|
};
|
|
259
290
|
|
|
260
291
|
this.staged.add(entry);
|
|
261
292
|
|
|
262
|
-
|
|
293
|
+
const nextTick = createResolvablePromise<void>();
|
|
294
|
+
void this.tick.then(() => {
|
|
295
|
+
this.staged.delete(entry);
|
|
296
|
+
|
|
297
|
+
for (const [model, { resolve, reject }] of entry.models) {
|
|
298
|
+
if (this.delegate.findUniqueOrThrow) {
|
|
299
|
+
void this.delegate
|
|
300
|
+
.findUniqueOrThrow({
|
|
301
|
+
...selectionToQuery(state),
|
|
302
|
+
where: { ...(this.findUnique(model as Record<string, unknown>, this.context) as {}) },
|
|
303
|
+
} as never)
|
|
304
|
+
// eslint-disable-next-line promise/no-nesting
|
|
305
|
+
.then(resolve as () => {}, reject);
|
|
306
|
+
} else {
|
|
307
|
+
void this.delegate
|
|
308
|
+
.findUnique({
|
|
309
|
+
rejectOnNotFound: true,
|
|
310
|
+
...selectionToQuery(state),
|
|
311
|
+
where: { ...(this.findUnique(model as Record<string, unknown>, this.context) as {}) },
|
|
312
|
+
} as never)
|
|
313
|
+
// eslint-disable-next-line promise/no-nesting
|
|
314
|
+
.then(resolve as () => {}, reject);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
setTimeout(() => void nextTick.resolve(), 0);
|
|
319
|
+
this.tick = nextTick.promise;
|
|
320
|
+
|
|
321
|
+
return promise.promise;
|
|
263
322
|
}
|
|
264
323
|
}
|
|
324
|
+
|
|
325
|
+
function createResolvablePromise<T = unknown>(): ResolvablePromise<T> {
|
|
326
|
+
let resolveFn!: (value: T) => void;
|
|
327
|
+
let rejectFn!: (reason?: unknown) => void;
|
|
328
|
+
const promise = new Promise<T>((resolve, reject) => {
|
|
329
|
+
resolveFn = resolve;
|
|
330
|
+
rejectFn = reject;
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
return { promise, resolve: resolveFn, reject: rejectFn };
|
|
334
|
+
}
|
package/src/util/loader-map.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { LoaderMappings } from '../types';
|
|
|
4
4
|
|
|
5
5
|
const cache = createContextCache((ctx) => new Map<string, LoaderMappings>());
|
|
6
6
|
|
|
7
|
-
export function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath: string[]) {
|
|
7
|
+
export function cacheKey(type: string, path: GraphQLResolveInfo['path'], subPath: string[] = []) {
|
|
8
8
|
let key = '';
|
|
9
9
|
let current: GraphQLResolveInfo['path'] | undefined = path;
|
|
10
10
|
|