@k0lyan/typegraphql-prisma-nestjs 1.0.3 → 1.1.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/lib/generator/generate-helpers.d.ts +1 -1
- package/lib/generator/generate-helpers.js +168 -0
- package/lib/generator/generate-helpers.js.map +1 -1
- package/lib/generator/imports.d.ts +1 -1
- package/lib/generator/imports.js +3 -1
- package/lib/generator/imports.js.map +1 -1
- package/lib/generator/model-type-class.js +35 -18
- package/lib/generator/model-type-class.js.map +1 -1
- package/lib/generator/resolvers/helpers.d.ts +2 -2
- package/lib/generator/resolvers/helpers.js +53 -28
- package/lib/generator/resolvers/helpers.js.map +1 -1
- package/lib/generator/resolvers/relations.js +2 -0
- package/lib/generator/resolvers/relations.js.map +1 -1
- package/package.json +1 -1
|
@@ -107,6 +107,174 @@ export function getOrCreateLoader<ID, Type>(
|
|
|
107
107
|
ctx._dataloaders.set(loaderKey, createLoader());
|
|
108
108
|
}
|
|
109
109
|
return ctx._dataloaders.get(loaderKey);
|
|
110
|
+
}
|
|
111
|
+
`);
|
|
112
|
+
// Add optimized Prisma query builder functions
|
|
113
|
+
sourceFile.addStatements(/* ts */ `
|
|
114
|
+
/**
|
|
115
|
+
* Checks if a value represents a relation (nested object with fields)
|
|
116
|
+
*/
|
|
117
|
+
function isRelationField(value: any): boolean {
|
|
118
|
+
return (
|
|
119
|
+
typeof value === 'object' &&
|
|
120
|
+
value !== null &&
|
|
121
|
+
!Array.isArray(value) &&
|
|
122
|
+
Object.keys(value).length > 0
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Transforms GraphQL requested fields into Prisma select format.
|
|
128
|
+
* Recursively handles nested relations.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* Input (from transformInfoIntoPrismaArgs):
|
|
132
|
+
* {
|
|
133
|
+
* "id": true,
|
|
134
|
+
* "name": true,
|
|
135
|
+
* "City": { "id": true, "name": true },
|
|
136
|
+
* "posts": { "id": true, "title": true }
|
|
137
|
+
* }
|
|
138
|
+
*
|
|
139
|
+
* Output:
|
|
140
|
+
* {
|
|
141
|
+
* id: true,
|
|
142
|
+
* name: true,
|
|
143
|
+
* City: { select: { id: true, name: true } },
|
|
144
|
+
* posts: { select: { id: true, title: true } }
|
|
145
|
+
* }
|
|
146
|
+
*/
|
|
147
|
+
export function transformFieldsToSelect(
|
|
148
|
+
fields: Record<string, any>,
|
|
149
|
+
): Record<string, any> {
|
|
150
|
+
const result: Record<string, any> = {};
|
|
151
|
+
|
|
152
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
153
|
+
// Skip internal fields
|
|
154
|
+
if (key.startsWith('_')) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (value === true) {
|
|
159
|
+
// Scalar field
|
|
160
|
+
result[key] = true;
|
|
161
|
+
} else if (isRelationField(value)) {
|
|
162
|
+
// Relation field - recursively build nested select
|
|
163
|
+
result[key] = {
|
|
164
|
+
select: transformFieldsToSelect(value),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Transform fields into include format (includes all scalars, just defines relations)
|
|
174
|
+
* This is less optimized but simpler when you need all scalar fields.
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* Input:
|
|
178
|
+
* {
|
|
179
|
+
* "id": true,
|
|
180
|
+
* "City": { "id": true, "name": true }
|
|
181
|
+
* }
|
|
182
|
+
*
|
|
183
|
+
* Output:
|
|
184
|
+
* {
|
|
185
|
+
* City: { select: { id: true, name: true } }
|
|
186
|
+
* }
|
|
187
|
+
*/
|
|
188
|
+
export function transformFieldsToInclude(
|
|
189
|
+
fields: Record<string, any>,
|
|
190
|
+
): Record<string, any> | undefined {
|
|
191
|
+
const include: Record<string, any> = {};
|
|
192
|
+
|
|
193
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
194
|
+
if (key.startsWith('_')) {
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (isRelationField(value)) {
|
|
199
|
+
include[key] = {
|
|
200
|
+
select: transformFieldsToSelect(value),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return Object.keys(include).length > 0 ? include : undefined;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Builds an optimized Prisma query from GraphQL args and info.
|
|
210
|
+
* Uses select for precise field selection including relations.
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* \`\`\`typescript
|
|
214
|
+
* const prismaQuery = buildPrismaQueryFromArgs(args, info);
|
|
215
|
+
* const results = await prisma.user.findMany(prismaQuery);
|
|
216
|
+
* \`\`\`
|
|
217
|
+
*/
|
|
218
|
+
export function buildPrismaQueryFromArgs<TArgs extends Record<string, any>>(
|
|
219
|
+
args: TArgs,
|
|
220
|
+
info: GraphQLResolveInfo,
|
|
221
|
+
additionalWhere?: Record<string, any>,
|
|
222
|
+
): TArgs & { select?: Record<string, any> } {
|
|
223
|
+
const fields = transformInfoIntoPrismaArgs(info);
|
|
224
|
+
const select = transformFieldsToSelect(fields);
|
|
225
|
+
|
|
226
|
+
const result: any = { ...args };
|
|
227
|
+
|
|
228
|
+
if (Object.keys(select).length > 0) {
|
|
229
|
+
result.select = select;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// Merge additional where conditions
|
|
233
|
+
if (additionalWhere) {
|
|
234
|
+
result.where = {
|
|
235
|
+
...result.where,
|
|
236
|
+
...additionalWhere,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return result;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Builds a Prisma query using include instead of select.
|
|
245
|
+
* Use this when you want all scalar fields plus specific relations.
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* \`\`\`typescript
|
|
249
|
+
* const prismaQuery = buildPrismaQueryFromArgsWithInclude(args, info);
|
|
250
|
+
* const results = await prisma.user.findMany(prismaQuery);
|
|
251
|
+
* \`\`\`
|
|
252
|
+
*/
|
|
253
|
+
export function buildPrismaQueryFromArgsWithInclude<
|
|
254
|
+
TArgs extends Record<string, any>,
|
|
255
|
+
>(
|
|
256
|
+
args: TArgs,
|
|
257
|
+
info: GraphQLResolveInfo,
|
|
258
|
+
additionalWhere?: Record<string, any>,
|
|
259
|
+
): TArgs & { include?: Record<string, any> } {
|
|
260
|
+
const fields = transformInfoIntoPrismaArgs(info);
|
|
261
|
+
const include = transformFieldsToInclude(fields);
|
|
262
|
+
|
|
263
|
+
const result: any = { ...args };
|
|
264
|
+
|
|
265
|
+
if (include) {
|
|
266
|
+
result.include = include;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// Merge additional where conditions
|
|
270
|
+
if (additionalWhere) {
|
|
271
|
+
result.where = {
|
|
272
|
+
...result.where,
|
|
273
|
+
...additionalWhere,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return result;
|
|
110
278
|
}
|
|
111
279
|
`);
|
|
112
280
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-helpers.js","sourceRoot":"","sources":["../../src/generator/generate-helpers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generate-helpers.js","sourceRoot":"","sources":["../../src/generator/generate-helpers.ts"],"names":[],"mappings":";;AAQA,kDA6RC;AArSD,uCAGmB;AAKnB,SAAgB,mBAAmB,CACjC,UAAsB,EACtB,OAAyB;IAEzB,IAAA,mCAAyB,EAAC,UAAU,CAAC,CAAC;IACtC,IAAA,qCAA2B,EAAC,UAAU,CAAC,CAAC;IACxC,UAAU,CAAC,oBAAoB,CAAC;QAC9B,eAAe,EAAE,YAAY;QAC7B,eAAe,EAAE,YAAY;KAC9B,CAAC,CAAC;IAEH,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;;;;;;;;;;;;;GAajC,CAAC,CAAC;IAEH,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;GAoBjC,CAAC,CAAC;IAEH,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;;sCAEE,OAAO,CAAC,gBAAgB;;qHAEuD,OAAO,CAAC,gBAAgB;;;;GAI1I,CAAC,CAAC;IAEH,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;GAcjC,CAAC,CAAC;IAEH,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;;;;;;;;GAQjC,CAAC,CAAC;IAEH,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BjC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsKjC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SourceFile } from "ts-morph";
|
|
2
|
+
import { EmitBlockKind } from "./emit-block";
|
|
2
3
|
import { GenerateMappingData } from "./types";
|
|
3
4
|
import { GeneratorOptions } from "./options";
|
|
4
|
-
import { EmitBlockKind } from "./emit-block";
|
|
5
5
|
export declare function generateTypeGraphQLImport(sourceFile: SourceFile): void;
|
|
6
6
|
export declare function generateGraphQLFieldsImport(sourceFile: SourceFile): void;
|
|
7
7
|
export declare function generateGraphQLInfoImport(sourceFile: SourceFile): void;
|
package/lib/generator/imports.js
CHANGED
|
@@ -21,8 +21,8 @@ exports.generateResolversActionsBarrelFile = generateResolversActionsBarrelFile;
|
|
|
21
21
|
exports.generateResolversIndexFile = generateResolversIndexFile;
|
|
22
22
|
const tslib_1 = require("tslib");
|
|
23
23
|
const ts_morph_1 = require("ts-morph");
|
|
24
|
-
const path_1 = tslib_1.__importDefault(require("path"));
|
|
25
24
|
const config_1 = require("./config");
|
|
25
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
26
26
|
function generateTypeGraphQLImport(sourceFile) {
|
|
27
27
|
sourceFile.addImportDeclaration({
|
|
28
28
|
moduleSpecifier: "@nestjs/graphql",
|
|
@@ -87,6 +87,8 @@ function generateHelpersFileImport(sourceFile, level = 0) {
|
|
|
87
87
|
"transformInfoIntoPrismaArgs",
|
|
88
88
|
"getPrismaFromContext",
|
|
89
89
|
"transformCountFieldIntoSelectRelationsCount",
|
|
90
|
+
"buildPrismaQueryFromArgs",
|
|
91
|
+
"buildPrismaQueryFromArgsWithInclude",
|
|
90
92
|
"InlineLoader",
|
|
91
93
|
],
|
|
92
94
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../src/generator/imports.ts"],"names":[],"mappings":";;;AAsBA,8DAsBC;AAED,kEAKC;AAED,8DAMC;AAED,oEAKC;AAED,0EAKC;AAED,kEAOC;AAED,
|
|
1
|
+
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../src/generator/imports.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.default = generateObjectTypeClassFromModel;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const ts_morph_1 = require("ts-morph");
|
|
6
|
-
const path_1 = tslib_1.__importDefault(require("path"));
|
|
7
6
|
const imports_1 = require("./imports");
|
|
8
|
-
const config_1 = require("./config");
|
|
9
7
|
const helpers_1 = require("./helpers");
|
|
8
|
+
const config_1 = require("./config");
|
|
9
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
10
10
|
function generateObjectTypeClassFromModel(project, baseDirPath, model, modelOutputType, dmmfDocument) {
|
|
11
11
|
const dirPath = path_1.default.resolve(baseDirPath, config_1.modelsFolderName);
|
|
12
12
|
const filePath = path_1.default.resolve(dirPath, `${model.typeName}.ts`);
|
|
@@ -58,9 +58,15 @@ function generateObjectTypeClassFromModel(project, baseDirPath, model, modelOutp
|
|
|
58
58
|
],
|
|
59
59
|
properties: [
|
|
60
60
|
...model.fields.map(field => {
|
|
61
|
-
const
|
|
61
|
+
const isRelation = !!field.relationName;
|
|
62
|
+
const isOptional = isRelation ||
|
|
62
63
|
field.isOmitted.output ||
|
|
63
64
|
(!field.isRequired && field.typeFieldAlias === undefined);
|
|
65
|
+
// For relation fields, determine nullability based on isList and isRequired
|
|
66
|
+
// Arrays are never nullable (empty array instead), single relations depend on isRequired
|
|
67
|
+
const isRelationNullable = isRelation
|
|
68
|
+
? !field.isList && !field.isRequired
|
|
69
|
+
: false;
|
|
64
70
|
return {
|
|
65
71
|
name: field.name,
|
|
66
72
|
type: field.fieldTSType,
|
|
@@ -68,22 +74,33 @@ function generateObjectTypeClassFromModel(project, baseDirPath, model, modelOutp
|
|
|
68
74
|
hasQuestionToken: isOptional,
|
|
69
75
|
trailingTrivia: "\r\n",
|
|
70
76
|
decorators: [
|
|
71
|
-
...(field.
|
|
72
|
-
field.typeFieldAlias ||
|
|
73
|
-
field.isOmitted.output
|
|
77
|
+
...(field.typeFieldAlias || field.isOmitted.output
|
|
74
78
|
? []
|
|
75
|
-
:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
79
|
+
: isRelation
|
|
80
|
+
? [
|
|
81
|
+
{
|
|
82
|
+
name: "Field",
|
|
83
|
+
arguments: [
|
|
84
|
+
`(_type: any) => ${field.typeGraphQLType}`,
|
|
85
|
+
ts_morph_1.Writers.object({
|
|
86
|
+
nullable: `${isRelationNullable}`,
|
|
87
|
+
...(field.docs && { description: `"${field.docs}"` }),
|
|
88
|
+
}),
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
]
|
|
92
|
+
: [
|
|
93
|
+
{
|
|
94
|
+
name: "Field",
|
|
95
|
+
arguments: [
|
|
96
|
+
`(_type: any) => ${field.typeGraphQLType}`,
|
|
97
|
+
ts_morph_1.Writers.object({
|
|
98
|
+
nullable: `${!!field.isOptional.output || isOptional}`,
|
|
99
|
+
...(field.docs && { description: `"${field.docs}"` }),
|
|
100
|
+
}),
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
]),
|
|
87
104
|
],
|
|
88
105
|
...(field.docs && {
|
|
89
106
|
docs: [{ description: `\n${(0, helpers_1.convertNewLines)(field.docs)}` }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-type-class.js","sourceRoot":"","sources":["../../src/generator/model-type-class.ts"],"names":[],"mappings":";;AAuBA,
|
|
1
|
+
{"version":3,"file":"model-type-class.js","sourceRoot":"","sources":["../../src/generator/model-type-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DmmfDocument } from "../dmmf/dmmf-document";
|
|
1
|
+
import { MethodDeclarationStructure, OptionalKind } from "ts-morph";
|
|
3
2
|
import { DMMF } from "../dmmf/types";
|
|
3
|
+
import { DmmfDocument } from "../dmmf/dmmf-document";
|
|
4
4
|
import { GeneratorOptions } from "../options";
|
|
5
5
|
export declare function generateCrudResolverClassMethodDeclaration(action: DMMF.Action, mapping: DMMF.ModelMapping, dmmfDocument: DmmfDocument, generatorOptions: GeneratorOptions): OptionalKind<MethodDeclarationStructure>;
|
|
@@ -3,6 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateCrudResolverClassMethodDeclaration = generateCrudResolverClassMethodDeclaration;
|
|
4
4
|
const ts_morph_1 = require("ts-morph");
|
|
5
5
|
const types_1 = require("../dmmf/types");
|
|
6
|
+
// Actions that should use optimized select-based queries
|
|
7
|
+
const SELECT_OPTIMIZED_ACTIONS = new Set([
|
|
8
|
+
types_1.DMMF.ModelAction.findUnique,
|
|
9
|
+
types_1.DMMF.ModelAction.findUniqueOrThrow,
|
|
10
|
+
types_1.DMMF.ModelAction.findFirst,
|
|
11
|
+
types_1.DMMF.ModelAction.findFirstOrThrow,
|
|
12
|
+
types_1.DMMF.ModelAction.findMany,
|
|
13
|
+
]);
|
|
6
14
|
function generateCrudResolverClassMethodDeclaration(action, mapping, dmmfDocument, generatorOptions) {
|
|
7
15
|
return {
|
|
8
16
|
name: action.name,
|
|
@@ -48,34 +56,51 @@ function generateCrudResolverClassMethodDeclaration(action, mapping, dmmfDocumen
|
|
|
48
56
|
},
|
|
49
57
|
]),
|
|
50
58
|
],
|
|
51
|
-
statements: action
|
|
52
|
-
? [
|
|
53
|
-
/* ts */ `const afterProcessEvents: ((result:any) => Promise<any>)[] = [];`,
|
|
54
|
-
/* ts */ `const transformedArgsIntoPrismaArgs = await transformArgsIntoPrismaArgs(info, args, ctx, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}', afterProcessEvents);`,
|
|
55
|
-
/* ts */ `const transformedInfoIntoPrismaArgs = transformInfoIntoPrismaArgs(info, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}');`,
|
|
56
|
-
/* ts */ `const result = await getPrismaFromContext(ctx).${mapping.collectionName}.${action.prismaMethod}({ ...transformedArgsIntoPrismaArgs, ...transformedInfoIntoPrismaArgs, });`,
|
|
57
|
-
/* ts */ `for (const afterProcessEvent of afterProcessEvents){ await afterProcessEvent(result); }`,
|
|
58
|
-
/* ts */ `return result;`,
|
|
59
|
-
]
|
|
60
|
-
: action.kind === types_1.DMMF.ModelAction.groupBy
|
|
61
|
-
? [
|
|
62
|
-
/* ts */ `const afterProcessEvents: ((result:any) => Promise<any>)[] = [];`,
|
|
63
|
-
/* ts */ `const { _count, _avg, _sum, _min, _max } = transformInfoIntoPrismaArgs(info, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}');`,
|
|
64
|
-
/* ts */ `const transformedArgsIntoPrismaArgs = await transformArgsIntoPrismaArgs(info, args, ctx, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}', afterProcessEvents);`,
|
|
65
|
-
/* ts */ `const groupByArgs = Object.fromEntries( Object.entries({ _count, _avg, _sum, _min, _max }).filter(([_, v]) => v != null));`,
|
|
66
|
-
/* ts */ `const result = await getPrismaFromContext(ctx).${mapping.collectionName}.${action.prismaMethod}({ ...transformedArgsIntoPrismaArgs, ...groupByArgs,});`,
|
|
67
|
-
/* ts */ `for (const afterProcessEvent of afterProcessEvents){ await afterProcessEvent(result); }`,
|
|
68
|
-
/* ts */ `return result;`,
|
|
69
|
-
]
|
|
70
|
-
: [
|
|
71
|
-
/* ts */ ` const afterProcessEvents: ((result:any) => Promise<any>)[] = [];`,
|
|
72
|
-
/* ts */ ` const { _count } = transformInfoIntoPrismaArgs(info, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}');`,
|
|
73
|
-
/* ts */ ` const transformedArgsIntoPrismaArgs = await transformArgsIntoPrismaArgs(info, args, ctx, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}', afterProcessEvents);`,
|
|
74
|
-
/* ts */ ` const otherArgs = _count && transformCountFieldIntoSelectRelationsCount(_count, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}');`,
|
|
75
|
-
/* ts */ ` const result = await getPrismaFromContext(ctx).${mapping.collectionName}.${action.prismaMethod}({ ...transformedArgsIntoPrismaArgs, ...otherArgs, });`,
|
|
76
|
-
/* ts */ ` for (const afterProcessEvent of afterProcessEvents){ await afterProcessEvent(result); }`,
|
|
77
|
-
/* ts */ `return result;`,
|
|
78
|
-
],
|
|
59
|
+
statements: generateResolverStatements(action, mapping),
|
|
79
60
|
};
|
|
80
61
|
}
|
|
62
|
+
function generateResolverStatements(action, mapping) {
|
|
63
|
+
if (action.kind === types_1.DMMF.ModelAction.aggregate) {
|
|
64
|
+
return [
|
|
65
|
+
/* ts */ `const afterProcessEvents: ((result:any) => Promise<any>)[] = [];`,
|
|
66
|
+
/* ts */ `const transformedArgsIntoPrismaArgs = await transformArgsIntoPrismaArgs(info, args, ctx, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}', afterProcessEvents);`,
|
|
67
|
+
/* ts */ `const transformedInfoIntoPrismaArgs = transformInfoIntoPrismaArgs(info, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}');`,
|
|
68
|
+
/* ts */ `const result = await getPrismaFromContext(ctx).${mapping.collectionName}.${action.prismaMethod}({ ...transformedArgsIntoPrismaArgs, ...transformedInfoIntoPrismaArgs, });`,
|
|
69
|
+
/* ts */ `for (const afterProcessEvent of afterProcessEvents){ await afterProcessEvent(result); }`,
|
|
70
|
+
/* ts */ `return result;`,
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
if (action.kind === types_1.DMMF.ModelAction.groupBy) {
|
|
74
|
+
return [
|
|
75
|
+
/* ts */ `const afterProcessEvents: ((result:any) => Promise<any>)[] = [];`,
|
|
76
|
+
/* ts */ `const { _count, _avg, _sum, _min, _max } = transformInfoIntoPrismaArgs(info, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}');`,
|
|
77
|
+
/* ts */ `const transformedArgsIntoPrismaArgs = await transformArgsIntoPrismaArgs(info, args, ctx, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}', afterProcessEvents);`,
|
|
78
|
+
/* ts */ `const groupByArgs = Object.fromEntries( Object.entries({ _count, _avg, _sum, _min, _max }).filter(([_, v]) => v != null));`,
|
|
79
|
+
/* ts */ `const result = await getPrismaFromContext(ctx).${mapping.collectionName}.${action.prismaMethod}({ ...transformedArgsIntoPrismaArgs, ...groupByArgs,});`,
|
|
80
|
+
/* ts */ `for (const afterProcessEvent of afterProcessEvents){ await afterProcessEvent(result); }`,
|
|
81
|
+
/* ts */ `return result;`,
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
// Use optimized select-based queries for find operations
|
|
85
|
+
if (SELECT_OPTIMIZED_ACTIONS.has(action.kind)) {
|
|
86
|
+
return [
|
|
87
|
+
/* ts */ `const afterProcessEvents: ((result:any) => Promise<any>)[] = [];`,
|
|
88
|
+
/* ts */ `const transformedArgsIntoPrismaArgs = await transformArgsIntoPrismaArgs(info, args, ctx, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}', afterProcessEvents);`,
|
|
89
|
+
/* ts */ `const prismaQuery = buildPrismaQueryFromArgs(transformedArgsIntoPrismaArgs, info);`,
|
|
90
|
+
/* ts */ `const result = await getPrismaFromContext(ctx).${mapping.collectionName}.${action.prismaMethod}(prismaQuery);`,
|
|
91
|
+
/* ts */ `for (const afterProcessEvent of afterProcessEvents){ await afterProcessEvent(result); }`,
|
|
92
|
+
/* ts */ `return result;`,
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
// Default behavior for other operations (create, update, delete, etc.)
|
|
96
|
+
return [
|
|
97
|
+
/* ts */ ` const afterProcessEvents: ((result:any) => Promise<any>)[] = [];`,
|
|
98
|
+
/* ts */ ` const { _count } = transformInfoIntoPrismaArgs(info, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}');`,
|
|
99
|
+
/* ts */ ` const transformedArgsIntoPrismaArgs = await transformArgsIntoPrismaArgs(info, args, ctx, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}', afterProcessEvents);`,
|
|
100
|
+
/* ts */ ` const otherArgs = _count && transformCountFieldIntoSelectRelationsCount(_count, '${mapping.modelName}', '${mapping.collectionName}', '${action.prismaMethod}');`,
|
|
101
|
+
/* ts */ ` const result = await getPrismaFromContext(ctx).${mapping.collectionName}.${action.prismaMethod}({ ...transformedArgsIntoPrismaArgs, ...otherArgs, });`,
|
|
102
|
+
/* ts */ ` for (const afterProcessEvent of afterProcessEvents){ await afterProcessEvent(result); }`,
|
|
103
|
+
/* ts */ `return result;`,
|
|
104
|
+
];
|
|
105
|
+
}
|
|
81
106
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/generator/resolvers/helpers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/generator/resolvers/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,7 @@ function generateRelationsResolverClassesFromModel(project, baseDirPath, dmmfDoc
|
|
|
110
110
|
{
|
|
111
111
|
name: rootArgName,
|
|
112
112
|
type: model.typeName,
|
|
113
|
+
decorators: [{ name: "Parent", arguments: [] }],
|
|
113
114
|
},
|
|
114
115
|
{
|
|
115
116
|
name: "ctx",
|
|
@@ -207,6 +208,7 @@ function generateRelationsResolverClassesFromModel(project, baseDirPath, dmmfDoc
|
|
|
207
208
|
{
|
|
208
209
|
name: rootArgName,
|
|
209
210
|
type: model.typeName,
|
|
211
|
+
decorators: [{ name: "Parent", arguments: [] }],
|
|
210
212
|
},
|
|
211
213
|
{
|
|
212
214
|
name: "ctx",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../../src/generator/resolvers/relations.ts"],"names":[],"mappings":";;AAqBA,
|
|
1
|
+
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../../src/generator/resolvers/relations.ts"],"names":[],"mappings":"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"}
|