@k0lyan/nestjs-prisma-graphql-generator 0.1.16 → 0.2.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.
@@ -5,7 +5,7 @@ export interface GeneratorConfig {
5
5
  */
6
6
  emitOnly?: EmitBlock[];
7
7
  /**
8
- * Custom output subdirectories
8
+ * Custom output subdirectories (only used when groupByModel is false)
9
9
  */
10
10
  outputDirs?: {
11
11
  models?: string;
@@ -14,6 +14,11 @@ export interface GeneratorConfig {
14
14
  enums?: string;
15
15
  resolvers?: string;
16
16
  };
17
+ /**
18
+ * Group generated files by model (model/inputs.ts, model/args.ts, etc.)
19
+ * Default: false
20
+ */
21
+ groupByModel?: boolean;
17
22
  /**
18
23
  * Whether to generate CRUD resolvers
19
24
  * Default: true
@@ -1 +1 @@
1
- {"version":3,"file":"options-parser.d.ts","sourceRoot":"","sources":["../../src/cli/options-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AAmBzF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,eAAe,CAiDpF"}
1
+ {"version":3,"file":"options-parser.d.ts","sourceRoot":"","sources":["../../src/cli/options-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AAoBzF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,eAAe,CAqDpF"}
@@ -10,6 +10,7 @@ const DEFAULT_CONFIG = {
10
10
  enums: 'enums',
11
11
  resolvers: 'resolvers',
12
12
  },
13
+ groupByModel: false,
13
14
  generateResolvers: true,
14
15
  useValidation: false,
15
16
  prismaClientPath: '@prisma/client',
@@ -25,6 +26,9 @@ function parseGeneratorConfig(config) {
25
26
  if (config['generateResolvers']) {
26
27
  result.generateResolvers = config['generateResolvers'] === 'true';
27
28
  }
29
+ if (config['groupByModel']) {
30
+ result.groupByModel = config['groupByModel'] === 'true';
31
+ }
28
32
  if (config['useValidation']) {
29
33
  result.useValidation = config['useValidation'] === 'true';
30
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options-parser.js","sourceRoot":"","sources":["../../src/cli/options-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options-parser.js","sourceRoot":"","sources":["../../src/cli/options-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { DMMFDocument } from './dmmf/document';
2
+ import type { GeneratedFile } from './dmmf/types';
3
+ import type { GeneratorConfig } from '../cli/options-parser';
4
+ /**
5
+ * Generate code with files grouped by model
6
+ *
7
+ * Output structure:
8
+ * - enums/ (shared enums)
9
+ * - common/ (AffectedRows, etc.)
10
+ * - {ModelName}/ (per-model folder)
11
+ * - model.ts (ObjectType)
12
+ * - inputs.ts (all inputs for this model)
13
+ * - args.ts (all args for this model)
14
+ * - resolver.ts (resolver)
15
+ * - index.ts (re-exports)
16
+ * - helpers.ts
17
+ * - index.ts
18
+ */
19
+ export declare function generateCodeGrouped(dmmf: DMMFDocument, config: GeneratorConfig): Promise<GeneratedFile[]>;
20
+ //# sourceMappingURL=generate-grouped.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-grouped.d.ts","sourceRoot":"","sources":["../../src/generator/generate-grouped.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAgC,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAmB7D;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,EAAE,CAAC,CAoD1B"}
@@ -0,0 +1,862 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateCodeGrouped = generateCodeGrouped;
7
+ const ts_morph_1 = require("ts-morph");
8
+ const types_1 = require("./dmmf/types");
9
+ const transformer_1 = require("./dmmf/transformer");
10
+ const pluralize_1 = __importDefault(require("pluralize"));
11
+ /**
12
+ * Generate code with files grouped by model
13
+ *
14
+ * Output structure:
15
+ * - enums/ (shared enums)
16
+ * - common/ (AffectedRows, etc.)
17
+ * - {ModelName}/ (per-model folder)
18
+ * - model.ts (ObjectType)
19
+ * - inputs.ts (all inputs for this model)
20
+ * - args.ts (all args for this model)
21
+ * - resolver.ts (resolver)
22
+ * - index.ts (re-exports)
23
+ * - helpers.ts
24
+ * - index.ts
25
+ */
26
+ async function generateCodeGrouped(dmmf, config) {
27
+ const project = new ts_morph_1.Project({
28
+ useInMemoryFileSystem: true,
29
+ compilerOptions: {
30
+ declaration: true,
31
+ strict: true,
32
+ experimentalDecorators: true,
33
+ emitDecoratorMetadata: true,
34
+ },
35
+ });
36
+ const allFiles = new Map();
37
+ // Generate shared enums
38
+ const enumFiles = generateEnumsGrouped(project, dmmf);
39
+ for (const [path, file] of enumFiles) {
40
+ allFiles.set(path, file);
41
+ }
42
+ // Generate common types
43
+ const commonFiles = generateCommonTypesGrouped(project);
44
+ for (const [path, file] of commonFiles) {
45
+ allFiles.set(path, file);
46
+ }
47
+ // Generate helpers
48
+ const helpersFile = generateHelpersGrouped(project, config);
49
+ allFiles.set('helpers.ts', helpersFile);
50
+ // Generate per-model files
51
+ for (const model of dmmf.models) {
52
+ const modelFiles = generateModelGrouped(project, model, dmmf, config);
53
+ for (const [path, file] of modelFiles) {
54
+ allFiles.set(path, file);
55
+ }
56
+ }
57
+ // Generate root index
58
+ const indexFile = project.createSourceFile('index.ts', '', { overwrite: true });
59
+ generateRootIndexGrouped(indexFile, dmmf, config);
60
+ allFiles.set('index.ts', indexFile);
61
+ // Convert to GeneratedFile array
62
+ const result = [];
63
+ for (const [path, sourceFile] of allFiles) {
64
+ result.push({
65
+ path,
66
+ content: sourceFile.getFullText(),
67
+ });
68
+ }
69
+ return result;
70
+ }
71
+ /**
72
+ * Generate all files for a single model
73
+ */
74
+ function generateModelGrouped(project, model, dmmf, config) {
75
+ const files = new Map();
76
+ const modelDir = model.name;
77
+ // Get available input types for this model
78
+ const inputTypeNames = new Set(dmmf.inputTypes.keys());
79
+ const available = {
80
+ hasWhereInput: inputTypeNames.has(`${model.name}WhereInput`),
81
+ hasWhereUniqueInput: inputTypeNames.has(`${model.name}WhereUniqueInput`),
82
+ hasOrderByInput: inputTypeNames.has(`${model.name}OrderByWithRelationInput`),
83
+ hasCreateInput: inputTypeNames.has(`${model.name}CreateInput`),
84
+ hasCreateManyInput: inputTypeNames.has(`${model.name}CreateManyInput`),
85
+ hasUpdateInput: inputTypeNames.has(`${model.name}UpdateInput`),
86
+ hasUpdateManyInput: inputTypeNames.has(`${model.name}UpdateManyMutationInput`),
87
+ hasScalarWhereWithAggregates: inputTypeNames.has(`${model.name}ScalarWhereWithAggregatesInput`),
88
+ };
89
+ // Skip models with no query capability
90
+ if (!available.hasWhereInput && !available.hasWhereUniqueInput) {
91
+ return files;
92
+ }
93
+ // Generate model.ts (ObjectType)
94
+ const modelFile = project.createSourceFile(`${modelDir}/model.ts`, '', { overwrite: true });
95
+ generateModelObjectType(modelFile, model, dmmf, config);
96
+ files.set(`${modelDir}/model.ts`, modelFile);
97
+ // Generate inputs.ts (all inputs for this model)
98
+ const modelInputTypes = getInputTypesForModel(model.name, dmmf);
99
+ if (modelInputTypes.length > 0) {
100
+ const inputsFile = project.createSourceFile(`${modelDir}/inputs.ts`, '', { overwrite: true });
101
+ generateModelInputs(inputsFile, model, modelInputTypes, dmmf, config);
102
+ files.set(`${modelDir}/inputs.ts`, inputsFile);
103
+ }
104
+ // Generate args.ts (all args for this model)
105
+ const argsFile = project.createSourceFile(`${modelDir}/args.ts`, '', { overwrite: true });
106
+ generateModelArgs(argsFile, model, dmmf, config, available);
107
+ files.set(`${modelDir}/args.ts`, argsFile);
108
+ // Generate resolver.ts
109
+ if (config.generateResolvers) {
110
+ const resolverFile = project.createSourceFile(`${modelDir}/resolver.ts`, '', { overwrite: true });
111
+ generateModelResolver(resolverFile, model, dmmf, config, available);
112
+ files.set(`${modelDir}/resolver.ts`, resolverFile);
113
+ }
114
+ // Generate index.ts for the model folder
115
+ const indexFile = project.createSourceFile(`${modelDir}/index.ts`, '', { overwrite: true });
116
+ generateModelIndex(indexFile, model, config, modelInputTypes.length > 0);
117
+ files.set(`${modelDir}/index.ts`, indexFile);
118
+ return files;
119
+ }
120
+ /**
121
+ * Get all input types that belong to a specific model
122
+ */
123
+ function getInputTypesForModel(modelName, dmmf) {
124
+ const result = [];
125
+ for (const [name, inputType] of dmmf.inputTypes) {
126
+ if (name.startsWith(modelName)) {
127
+ result.push(inputType);
128
+ }
129
+ }
130
+ return result;
131
+ }
132
+ /**
133
+ * Generate the ObjectType class for a model
134
+ */
135
+ function generateModelObjectType(sourceFile, model, dmmf, config) {
136
+ const nestjsImports = ['ObjectType', 'Field', 'ID', 'Int', 'Float'];
137
+ const hasJson = model.fields.some(f => f.type === 'Json');
138
+ const hasBigInt = model.fields.some(f => f.type === 'BigInt');
139
+ const relationFields = model.fields.filter(f => (0, transformer_1.isRelationField)(f));
140
+ const relatedModels = [...new Set(relationFields.map(f => f.type))].filter(m => m !== model.name);
141
+ // Add imports
142
+ sourceFile.addImportDeclaration({
143
+ moduleSpecifier: '@nestjs/graphql',
144
+ namedImports: nestjsImports,
145
+ });
146
+ if (hasJson) {
147
+ sourceFile.addImportDeclaration({
148
+ moduleSpecifier: 'graphql-type-json',
149
+ namedImports: ['GraphQLJSON'],
150
+ });
151
+ }
152
+ if (hasBigInt) {
153
+ sourceFile.addImportDeclaration({
154
+ moduleSpecifier: 'graphql-scalars',
155
+ namedImports: ['GraphQLBigInt'],
156
+ });
157
+ }
158
+ // Import related models
159
+ if (relatedModels.length > 0) {
160
+ sourceFile.addStatements(`// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { ${relatedModels.join(', ')} } from '../index';`);
161
+ }
162
+ // Import enums
163
+ const enumFields = model.fields.filter(f => (0, transformer_1.isEnumField)(f));
164
+ const enumTypes = [...new Set(enumFields.map(f => f.type))];
165
+ if (enumTypes.length > 0) {
166
+ sourceFile.addImportDeclaration({
167
+ moduleSpecifier: '../enums',
168
+ namedImports: enumTypes,
169
+ });
170
+ }
171
+ // Create the class
172
+ const classDecl = sourceFile.addClass({
173
+ name: `${config.typePrefix ?? ''}${model.name}${config.typeSuffix ?? ''}`,
174
+ isExported: true,
175
+ decorators: [
176
+ {
177
+ name: 'ObjectType',
178
+ arguments: [
179
+ ts_morph_1.Writers.object({
180
+ description: model.documentation
181
+ ? `'${escapeDescription(model.documentation)}'`
182
+ : undefined,
183
+ }),
184
+ ],
185
+ },
186
+ ],
187
+ });
188
+ // Add fields
189
+ for (const field of model.fields) {
190
+ addFieldToModelClass(classDecl, field, dmmf);
191
+ }
192
+ }
193
+ /**
194
+ * Add a field to the model class
195
+ */
196
+ function addFieldToModelClass(classDecl, field, _dmmf) {
197
+ const { graphqlType, tsType } = getFieldTypes(field);
198
+ const isRelation = (0, transformer_1.isRelationField)(field);
199
+ const fieldDecoratorArgs = [];
200
+ if (isRelation) {
201
+ if (field.isList) {
202
+ fieldDecoratorArgs.push(`() => [require('../${field.type}/model').${field.type}]`);
203
+ }
204
+ else {
205
+ fieldDecoratorArgs.push(`() => require('../${field.type}/model').${field.type}`);
206
+ }
207
+ }
208
+ else {
209
+ if (field.isList) {
210
+ fieldDecoratorArgs.push(`() => [${graphqlType}]`);
211
+ }
212
+ else {
213
+ fieldDecoratorArgs.push(`() => ${graphqlType}`);
214
+ }
215
+ }
216
+ const options = {};
217
+ if (!field.isRequired && !field.isList) {
218
+ options['nullable'] = 'true';
219
+ }
220
+ if (field.documentation) {
221
+ options['description'] = `'${escapeDescription(field.documentation)}'`;
222
+ }
223
+ if (Object.keys(options).length > 0) {
224
+ const optionsStr = Object.entries(options)
225
+ .map(([k, v]) => `${k}: ${v}`)
226
+ .join(', ');
227
+ fieldDecoratorArgs.push(`{ ${optionsStr} }`);
228
+ }
229
+ let propertyType = tsType;
230
+ if (field.isList) {
231
+ propertyType = `${tsType}[]`;
232
+ }
233
+ if (!field.isRequired) {
234
+ propertyType = `${propertyType} | null`;
235
+ }
236
+ classDecl.addProperty({
237
+ name: field.name,
238
+ type: propertyType,
239
+ hasExclamationToken: field.isRequired || field.isList,
240
+ hasQuestionToken: !field.isRequired && !field.isList,
241
+ decorators: [{ name: 'Field', arguments: fieldDecoratorArgs }],
242
+ });
243
+ }
244
+ /**
245
+ * Get GraphQL and TypeScript types for a field
246
+ */
247
+ function getFieldTypes(field) {
248
+ if (field.isId) {
249
+ return { graphqlType: 'ID', tsType: 'string' };
250
+ }
251
+ if ((0, transformer_1.isScalarField)(field)) {
252
+ const graphqlType = types_1.PRISMA_TO_GRAPHQL_SCALAR[field.type] ?? 'String';
253
+ const tsType = types_1.PRISMA_TO_TS_TYPE[field.type] ?? 'string';
254
+ if (field.type === 'Json') {
255
+ return { graphqlType: 'GraphQLJSON', tsType: 'any' };
256
+ }
257
+ return { graphqlType, tsType };
258
+ }
259
+ if ((0, transformer_1.isEnumField)(field)) {
260
+ return { graphqlType: field.type, tsType: field.type };
261
+ }
262
+ if ((0, transformer_1.isRelationField)(field)) {
263
+ return { graphqlType: field.type, tsType: field.type };
264
+ }
265
+ return { graphqlType: 'String', tsType: 'string' };
266
+ }
267
+ /**
268
+ * Generate all inputs for a model in one file
269
+ */
270
+ function generateModelInputs(sourceFile, model, inputTypes, dmmf, _config) {
271
+ // Collect all needed imports
272
+ const hasJson = inputTypes.some(it => it.fields.some(f => f.type === 'Json'));
273
+ const hasBigInt = inputTypes.some(it => it.fields.some(f => f.type === 'BigInt'));
274
+ // Add base imports
275
+ sourceFile.addImportDeclaration({
276
+ moduleSpecifier: '@nestjs/graphql',
277
+ namedImports: ['InputType', 'Field', 'Int', 'Float'],
278
+ });
279
+ if (hasJson) {
280
+ sourceFile.addImportDeclaration({
281
+ moduleSpecifier: 'graphql-type-json',
282
+ namedImports: ['GraphQLJSON'],
283
+ });
284
+ }
285
+ if (hasBigInt) {
286
+ sourceFile.addImportDeclaration({
287
+ moduleSpecifier: 'graphql-scalars',
288
+ namedImports: ['GraphQLBigInt'],
289
+ });
290
+ }
291
+ // Collect enum imports
292
+ const enumTypes = new Set();
293
+ for (const inputType of inputTypes) {
294
+ for (const field of inputType.fields) {
295
+ if (dmmf.isEnum(field.type)) {
296
+ enumTypes.add(field.type);
297
+ }
298
+ }
299
+ }
300
+ if (enumTypes.size > 0) {
301
+ sourceFile.addImportDeclaration({
302
+ moduleSpecifier: '../enums',
303
+ namedImports: [...enumTypes],
304
+ });
305
+ }
306
+ // Generate each input class
307
+ for (const inputType of inputTypes) {
308
+ generateInputClass(sourceFile, inputType, dmmf, model.name);
309
+ }
310
+ }
311
+ /**
312
+ * Generate a single input class
313
+ */
314
+ function generateInputClass(sourceFile, inputType, dmmf, modelName) {
315
+ const classDecl = sourceFile.addClass({
316
+ name: inputType.name,
317
+ isExported: true,
318
+ decorators: [{ name: 'InputType', arguments: [] }],
319
+ });
320
+ for (const field of inputType.fields) {
321
+ addFieldToInputClass(classDecl, field, dmmf, inputType.name, modelName);
322
+ }
323
+ }
324
+ /**
325
+ * Add a field to an input class
326
+ */
327
+ function addFieldToInputClass(classDecl, field, dmmf, currentTypeName, modelName) {
328
+ const { graphqlType, tsType, isInputObjectType } = getInputFieldTypes(field, dmmf);
329
+ const fieldDecoratorArgs = [];
330
+ // For input object types within the same model, use class reference; others use lazy require
331
+ if (isInputObjectType && graphqlType !== currentTypeName) {
332
+ if (graphqlType.startsWith(modelName)) {
333
+ // Same model's input, just reference the class
334
+ if (field.isList) {
335
+ fieldDecoratorArgs.push(`() => [${graphqlType}]`);
336
+ }
337
+ else {
338
+ fieldDecoratorArgs.push(`() => ${graphqlType}`);
339
+ }
340
+ }
341
+ else {
342
+ // Different model's input, use lazy require
343
+ const otherModel = graphqlType.replace(/(?:Where|Create|Update|OrderBy|Scalar).*Input$/, '');
344
+ if (field.isList) {
345
+ fieldDecoratorArgs.push(`() => [require('../${otherModel}/inputs').${graphqlType}]`);
346
+ }
347
+ else {
348
+ fieldDecoratorArgs.push(`() => require('../${otherModel}/inputs').${graphqlType}`);
349
+ }
350
+ }
351
+ }
352
+ else {
353
+ if (field.isList) {
354
+ fieldDecoratorArgs.push(`() => [${graphqlType}]`);
355
+ }
356
+ else {
357
+ fieldDecoratorArgs.push(`() => ${graphqlType}`);
358
+ }
359
+ }
360
+ if (!field.isRequired) {
361
+ fieldDecoratorArgs.push('{ nullable: true }');
362
+ }
363
+ let propertyType = tsType;
364
+ if (field.isList) {
365
+ propertyType = `${tsType}[]`;
366
+ }
367
+ if (!field.isRequired) {
368
+ propertyType = `${propertyType} | undefined`;
369
+ }
370
+ classDecl.addProperty({
371
+ name: field.name,
372
+ type: propertyType,
373
+ hasQuestionToken: !field.isRequired,
374
+ decorators: [{ name: 'Field', arguments: fieldDecoratorArgs }],
375
+ });
376
+ }
377
+ /**
378
+ * Get types for an input field
379
+ */
380
+ function getInputFieldTypes(field, dmmf) {
381
+ const mainType = field.type;
382
+ if (types_1.PRISMA_TO_GRAPHQL_SCALAR[mainType]) {
383
+ const graphqlType = types_1.PRISMA_TO_GRAPHQL_SCALAR[mainType];
384
+ const tsType = types_1.PRISMA_TO_TS_TYPE[mainType];
385
+ if (mainType === 'Json') {
386
+ return { graphqlType: 'GraphQLJSON', tsType: 'any', isInputObjectType: false };
387
+ }
388
+ return { graphqlType: graphqlType ?? 'String', tsType: tsType ?? 'string', isInputObjectType: false };
389
+ }
390
+ if (dmmf.isEnum(mainType)) {
391
+ return { graphqlType: mainType, tsType: mainType, isInputObjectType: false };
392
+ }
393
+ return { graphqlType: mainType, tsType: 'any', isInputObjectType: true };
394
+ }
395
+ /**
396
+ * Generate all args for a model in one file
397
+ */
398
+ function generateModelArgs(sourceFile, model, _dmmf, _config, available) {
399
+ // Add imports
400
+ sourceFile.addImportDeclaration({
401
+ moduleSpecifier: '@nestjs/graphql',
402
+ namedImports: ['ArgsType', 'Field', 'Int'],
403
+ });
404
+ // Import from local inputs.ts
405
+ const inputImports = [];
406
+ if (available.hasWhereInput)
407
+ inputImports.push(`${model.name}WhereInput`);
408
+ if (available.hasWhereUniqueInput)
409
+ inputImports.push(`${model.name}WhereUniqueInput`);
410
+ if (available.hasOrderByInput)
411
+ inputImports.push(`${model.name}OrderByWithRelationInput`);
412
+ if (available.hasCreateInput)
413
+ inputImports.push(`${model.name}CreateInput`);
414
+ if (available.hasCreateManyInput)
415
+ inputImports.push(`${model.name}CreateManyInput`);
416
+ if (available.hasUpdateInput)
417
+ inputImports.push(`${model.name}UpdateInput`);
418
+ if (available.hasUpdateManyInput)
419
+ inputImports.push(`${model.name}UpdateManyMutationInput`);
420
+ if (available.hasScalarWhereWithAggregates)
421
+ inputImports.push(`${model.name}ScalarWhereWithAggregatesInput`);
422
+ if (inputImports.length > 0) {
423
+ sourceFile.addImportDeclaration({
424
+ moduleSpecifier: './inputs',
425
+ namedImports: inputImports,
426
+ });
427
+ }
428
+ // Import ScalarFieldEnum
429
+ sourceFile.addImportDeclaration({
430
+ moduleSpecifier: '../enums',
431
+ namedImports: [`${model.name}ScalarFieldEnum`],
432
+ });
433
+ // Generate args classes
434
+ if (available.hasWhereInput) {
435
+ generateFindManyArgsClass(sourceFile, model, available);
436
+ generateFindFirstArgsClass(sourceFile, model, available);
437
+ generateDeleteManyArgsClass(sourceFile, model);
438
+ generateAggregateArgsClass(sourceFile, model, available);
439
+ generateGroupByArgsClass(sourceFile, model, available);
440
+ }
441
+ if (available.hasWhereUniqueInput) {
442
+ generateFindUniqueArgsClass(sourceFile, model);
443
+ generateDeleteArgsClass(sourceFile, model);
444
+ }
445
+ if (available.hasCreateInput) {
446
+ generateCreateArgsClass(sourceFile, model);
447
+ }
448
+ if (available.hasCreateManyInput) {
449
+ generateCreateManyArgsClass(sourceFile, model);
450
+ }
451
+ if (available.hasUpdateInput && available.hasWhereUniqueInput) {
452
+ generateUpdateArgsClass(sourceFile, model);
453
+ }
454
+ if (available.hasUpdateManyInput && available.hasWhereInput) {
455
+ generateUpdateManyArgsClass(sourceFile, model);
456
+ }
457
+ if (available.hasCreateInput && available.hasUpdateInput && available.hasWhereUniqueInput) {
458
+ generateUpsertArgsClass(sourceFile, model);
459
+ }
460
+ }
461
+ // Individual args class generators (simplified versions in single file)
462
+ function generateFindManyArgsClass(sourceFile, model, available) {
463
+ const properties = [
464
+ { name: 'where', type: `${model.name}WhereInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereInput`, '{ nullable: true }'] }] },
465
+ ];
466
+ if (available.hasOrderByInput) {
467
+ properties.push({ name: 'orderBy', type: `${model.name}OrderByWithRelationInput[]`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => [${model.name}OrderByWithRelationInput]`, '{ nullable: true }'] }] });
468
+ }
469
+ if (available.hasWhereUniqueInput) {
470
+ properties.push({ name: 'cursor', type: `${model.name}WhereUniqueInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereUniqueInput`, '{ nullable: true }'] }] });
471
+ }
472
+ properties.push({ name: 'take', type: 'number', hasQuestionToken: true, decorators: [{ name: 'Field', arguments: ['() => Int', '{ nullable: true }'] }] }, { name: 'skip', type: 'number', hasQuestionToken: true, decorators: [{ name: 'Field', arguments: ['() => Int', '{ nullable: true }'] }] }, { name: 'distinct', type: `${model.name}ScalarFieldEnum[]`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => [${model.name}ScalarFieldEnum]`, '{ nullable: true }'] }] });
473
+ sourceFile.addClass({ name: `FindMany${model.name}Args`, isExported: true, decorators: [{ name: 'ArgsType', arguments: [] }], properties });
474
+ }
475
+ function generateFindFirstArgsClass(sourceFile, model, available) {
476
+ const properties = [
477
+ { name: 'where', type: `${model.name}WhereInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereInput`, '{ nullable: true }'] }] },
478
+ ];
479
+ if (available.hasOrderByInput) {
480
+ properties.push({ name: 'orderBy', type: `${model.name}OrderByWithRelationInput[]`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => [${model.name}OrderByWithRelationInput]`, '{ nullable: true }'] }] });
481
+ }
482
+ if (available.hasWhereUniqueInput) {
483
+ properties.push({ name: 'cursor', type: `${model.name}WhereUniqueInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereUniqueInput`, '{ nullable: true }'] }] });
484
+ }
485
+ properties.push({ name: 'take', type: 'number', hasQuestionToken: true, decorators: [{ name: 'Field', arguments: ['() => Int', '{ nullable: true }'] }] }, { name: 'skip', type: 'number', hasQuestionToken: true, decorators: [{ name: 'Field', arguments: ['() => Int', '{ nullable: true }'] }] }, { name: 'distinct', type: `${model.name}ScalarFieldEnum[]`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => [${model.name}ScalarFieldEnum]`, '{ nullable: true }'] }] });
486
+ sourceFile.addClass({ name: `FindFirst${model.name}Args`, isExported: true, decorators: [{ name: 'ArgsType', arguments: [] }], properties });
487
+ }
488
+ function generateFindUniqueArgsClass(sourceFile, model) {
489
+ sourceFile.addClass({
490
+ name: `FindUnique${model.name}Args`,
491
+ isExported: true,
492
+ decorators: [{ name: 'ArgsType', arguments: [] }],
493
+ properties: [{ name: 'where', type: `${model.name}WhereUniqueInput`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereUniqueInput`] }] }],
494
+ });
495
+ }
496
+ function generateCreateArgsClass(sourceFile, model) {
497
+ sourceFile.addClass({
498
+ name: `Create${model.name}Args`,
499
+ isExported: true,
500
+ decorators: [{ name: 'ArgsType', arguments: [] }],
501
+ properties: [{ name: 'data', type: `${model.name}CreateInput`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}CreateInput`] }] }],
502
+ });
503
+ }
504
+ function generateCreateManyArgsClass(sourceFile, model) {
505
+ sourceFile.addClass({
506
+ name: `CreateMany${model.name}Args`,
507
+ isExported: true,
508
+ decorators: [{ name: 'ArgsType', arguments: [] }],
509
+ properties: [{ name: 'data', type: `${model.name}CreateManyInput[]`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => [${model.name}CreateManyInput]`] }] }],
510
+ });
511
+ }
512
+ function generateUpdateArgsClass(sourceFile, model) {
513
+ sourceFile.addClass({
514
+ name: `Update${model.name}Args`,
515
+ isExported: true,
516
+ decorators: [{ name: 'ArgsType', arguments: [] }],
517
+ properties: [
518
+ { name: 'data', type: `${model.name}UpdateInput`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}UpdateInput`] }] },
519
+ { name: 'where', type: `${model.name}WhereUniqueInput`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereUniqueInput`] }] },
520
+ ],
521
+ });
522
+ }
523
+ function generateUpdateManyArgsClass(sourceFile, model) {
524
+ sourceFile.addClass({
525
+ name: `UpdateMany${model.name}Args`,
526
+ isExported: true,
527
+ decorators: [{ name: 'ArgsType', arguments: [] }],
528
+ properties: [
529
+ { name: 'data', type: `${model.name}UpdateManyMutationInput`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}UpdateManyMutationInput`] }] },
530
+ { name: 'where', type: `${model.name}WhereInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereInput`, '{ nullable: true }'] }] },
531
+ ],
532
+ });
533
+ }
534
+ function generateUpsertArgsClass(sourceFile, model) {
535
+ sourceFile.addClass({
536
+ name: `Upsert${model.name}Args`,
537
+ isExported: true,
538
+ decorators: [{ name: 'ArgsType', arguments: [] }],
539
+ properties: [
540
+ { name: 'where', type: `${model.name}WhereUniqueInput`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereUniqueInput`] }] },
541
+ { name: 'create', type: `${model.name}CreateInput`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}CreateInput`] }] },
542
+ { name: 'update', type: `${model.name}UpdateInput`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}UpdateInput`] }] },
543
+ ],
544
+ });
545
+ }
546
+ function generateDeleteArgsClass(sourceFile, model) {
547
+ sourceFile.addClass({
548
+ name: `Delete${model.name}Args`,
549
+ isExported: true,
550
+ decorators: [{ name: 'ArgsType', arguments: [] }],
551
+ properties: [{ name: 'where', type: `${model.name}WhereUniqueInput`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereUniqueInput`] }] }],
552
+ });
553
+ }
554
+ function generateDeleteManyArgsClass(sourceFile, model) {
555
+ sourceFile.addClass({
556
+ name: `DeleteMany${model.name}Args`,
557
+ isExported: true,
558
+ decorators: [{ name: 'ArgsType', arguments: [] }],
559
+ properties: [{ name: 'where', type: `${model.name}WhereInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereInput`, '{ nullable: true }'] }] }],
560
+ });
561
+ }
562
+ function generateAggregateArgsClass(sourceFile, model, available) {
563
+ const properties = [
564
+ { name: 'where', type: `${model.name}WhereInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereInput`, '{ nullable: true }'] }] },
565
+ ];
566
+ if (available.hasOrderByInput) {
567
+ properties.push({ name: 'orderBy', type: `${model.name}OrderByWithRelationInput[]`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => [${model.name}OrderByWithRelationInput]`, '{ nullable: true }'] }] });
568
+ }
569
+ if (available.hasWhereUniqueInput) {
570
+ properties.push({ name: 'cursor', type: `${model.name}WhereUniqueInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereUniqueInput`, '{ nullable: true }'] }] });
571
+ }
572
+ properties.push({ name: 'take', type: 'number', hasQuestionToken: true, decorators: [{ name: 'Field', arguments: ['() => Int', '{ nullable: true }'] }] }, { name: 'skip', type: 'number', hasQuestionToken: true, decorators: [{ name: 'Field', arguments: ['() => Int', '{ nullable: true }'] }] });
573
+ sourceFile.addClass({ name: `Aggregate${model.name}Args`, isExported: true, decorators: [{ name: 'ArgsType', arguments: [] }], properties });
574
+ }
575
+ function generateGroupByArgsClass(sourceFile, model, available) {
576
+ const properties = [
577
+ { name: 'where', type: `${model.name}WhereInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}WhereInput`, '{ nullable: true }'] }] },
578
+ ];
579
+ if (available.hasOrderByInput) {
580
+ properties.push({ name: 'orderBy', type: `${model.name}OrderByWithRelationInput[]`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => [${model.name}OrderByWithRelationInput]`, '{ nullable: true }'] }] });
581
+ }
582
+ properties.push({ name: 'by', type: `${model.name}ScalarFieldEnum[]`, hasExclamationToken: true, decorators: [{ name: 'Field', arguments: [`() => [${model.name}ScalarFieldEnum]`] }] });
583
+ if (available.hasScalarWhereWithAggregates) {
584
+ properties.push({ name: 'having', type: `${model.name}ScalarWhereWithAggregatesInput`, hasQuestionToken: true, decorators: [{ name: 'Field', arguments: [`() => ${model.name}ScalarWhereWithAggregatesInput`, '{ nullable: true }'] }] });
585
+ }
586
+ properties.push({ name: 'take', type: 'number', hasQuestionToken: true, decorators: [{ name: 'Field', arguments: ['() => Int', '{ nullable: true }'] }] }, { name: 'skip', type: 'number', hasQuestionToken: true, decorators: [{ name: 'Field', arguments: ['() => Int', '{ nullable: true }'] }] });
587
+ sourceFile.addClass({ name: `GroupBy${model.name}Args`, isExported: true, decorators: [{ name: 'ArgsType', arguments: [] }], properties });
588
+ }
589
+ /**
590
+ * Generate resolver for a model
591
+ */
592
+ function generateModelResolver(sourceFile, model, _dmmf, _config, ops) {
593
+ const modelName = model.name;
594
+ const lowerModelName = (0, transformer_1.camelCase)(modelName);
595
+ const pluralName = (0, pluralize_1.default)(lowerModelName);
596
+ const isAlreadyPlural = pluralName === lowerModelName;
597
+ const findManyMethodName = isAlreadyPlural ? `findMany${modelName}` : pluralName;
598
+ const findUniqueMethodName = isAlreadyPlural ? `findUnique${modelName}` : lowerModelName;
599
+ // Build imports
600
+ const nestjsImports = ['Resolver', 'Query', 'Args', 'Info', 'Int'];
601
+ if (ops.hasCreateInput || ops.hasUpdateInput) {
602
+ nestjsImports.push('Mutation');
603
+ }
604
+ sourceFile.addImportDeclaration({
605
+ moduleSpecifier: '@nestjs/graphql',
606
+ namedImports: nestjsImports,
607
+ });
608
+ sourceFile.addImportDeclaration({
609
+ moduleSpecifier: 'graphql',
610
+ namedImports: ['GraphQLResolveInfo'],
611
+ });
612
+ sourceFile.addImportDeclaration({
613
+ moduleSpecifier: './model',
614
+ namedImports: [modelName],
615
+ });
616
+ sourceFile.addImportDeclaration({
617
+ moduleSpecifier: '../common/AffectedRows',
618
+ namedImports: ['AffectedRows'],
619
+ });
620
+ sourceFile.addImportDeclaration({
621
+ moduleSpecifier: '../helpers',
622
+ namedImports: ['transformInfoIntoPrismaArgs', 'getPrismaFromContext'],
623
+ });
624
+ // Import args
625
+ const argsImports = [];
626
+ if (ops.hasWhereInput) {
627
+ argsImports.push(`FindMany${modelName}Args`, `FindFirst${modelName}Args`, `DeleteMany${modelName}Args`);
628
+ }
629
+ if (ops.hasWhereUniqueInput) {
630
+ argsImports.push(`FindUnique${modelName}Args`, `Delete${modelName}Args`);
631
+ }
632
+ if (ops.hasCreateInput)
633
+ argsImports.push(`Create${modelName}Args`);
634
+ if (ops.hasCreateManyInput)
635
+ argsImports.push(`CreateMany${modelName}Args`);
636
+ if (ops.hasUpdateInput && ops.hasWhereUniqueInput)
637
+ argsImports.push(`Update${modelName}Args`);
638
+ if (ops.hasUpdateManyInput && ops.hasWhereInput)
639
+ argsImports.push(`UpdateMany${modelName}Args`);
640
+ if (ops.hasCreateInput && ops.hasUpdateInput && ops.hasWhereUniqueInput)
641
+ argsImports.push(`Upsert${modelName}Args`);
642
+ if (argsImports.length > 0) {
643
+ sourceFile.addImportDeclaration({
644
+ moduleSpecifier: './args',
645
+ namedImports: argsImports,
646
+ });
647
+ }
648
+ // Create resolver class
649
+ const resolverClass = sourceFile.addClass({
650
+ name: `${modelName}Resolver`,
651
+ isExported: true,
652
+ decorators: [{ name: 'Resolver', arguments: [`() => ${modelName}`] }],
653
+ });
654
+ // Add query methods
655
+ if (ops.hasWhereInput) {
656
+ addResolverMethod(resolverClass, 'Query', findManyMethodName, `FindMany${modelName}Args`, `Promise<${modelName}[]>`, `[${modelName}]`, lowerModelName, 'findMany');
657
+ addResolverMethod(resolverClass, 'Query', `findFirst${modelName}`, `FindFirst${modelName}Args`, `Promise<${modelName} | null>`, modelName, lowerModelName, 'findFirst', true);
658
+ }
659
+ if (ops.hasWhereUniqueInput) {
660
+ addResolverMethod(resolverClass, 'Query', findUniqueMethodName, `FindUnique${modelName}Args`, `Promise<${modelName} | null>`, modelName, lowerModelName, 'findUnique', true);
661
+ }
662
+ // Add mutation methods
663
+ if (ops.hasCreateInput) {
664
+ addResolverMethod(resolverClass, 'Mutation', `createOne${modelName}`, `Create${modelName}Args`, `Promise<${modelName}>`, modelName, lowerModelName, 'create');
665
+ }
666
+ if (ops.hasCreateManyInput) {
667
+ addResolverMethod(resolverClass, 'Mutation', `createMany${modelName}`, `CreateMany${modelName}Args`, 'Promise<AffectedRows>', 'AffectedRows', lowerModelName, 'createMany');
668
+ }
669
+ if (ops.hasUpdateInput && ops.hasWhereUniqueInput) {
670
+ addResolverMethod(resolverClass, 'Mutation', `updateOne${modelName}`, `Update${modelName}Args`, `Promise<${modelName} | null>`, modelName, lowerModelName, 'update', true);
671
+ }
672
+ if (ops.hasUpdateManyInput && ops.hasWhereInput) {
673
+ addResolverMethod(resolverClass, 'Mutation', `updateMany${modelName}`, `UpdateMany${modelName}Args`, 'Promise<AffectedRows>', 'AffectedRows', lowerModelName, 'updateMany');
674
+ }
675
+ if (ops.hasCreateInput && ops.hasUpdateInput && ops.hasWhereUniqueInput) {
676
+ addResolverMethod(resolverClass, 'Mutation', `upsertOne${modelName}`, `Upsert${modelName}Args`, `Promise<${modelName}>`, modelName, lowerModelName, 'upsert');
677
+ }
678
+ if (ops.hasWhereUniqueInput) {
679
+ addResolverMethod(resolverClass, 'Mutation', `deleteOne${modelName}`, `Delete${modelName}Args`, `Promise<${modelName} | null>`, modelName, lowerModelName, 'delete', true);
680
+ }
681
+ if (ops.hasWhereInput) {
682
+ addResolverMethod(resolverClass, 'Mutation', `deleteMany${modelName}`, `DeleteMany${modelName}Args`, 'Promise<AffectedRows>', 'AffectedRows', lowerModelName, 'deleteMany');
683
+ }
684
+ }
685
+ function addResolverMethod(classDecl, decoratorType, methodName, argsType, returnType, graphqlReturnType, prismaModel, prismaMethod, nullable = false) {
686
+ const returnTypeArg = nullable ? `{ nullable: true }` : '';
687
+ classDecl.addMethod({
688
+ name: methodName,
689
+ isAsync: true,
690
+ decorators: [
691
+ {
692
+ name: decoratorType,
693
+ arguments: returnTypeArg
694
+ ? [`() => ${graphqlReturnType}`, returnTypeArg]
695
+ : [`() => ${graphqlReturnType}`],
696
+ },
697
+ ],
698
+ parameters: [
699
+ { name: 'args', type: argsType, decorators: [{ name: 'Args', arguments: [] }] },
700
+ { name: 'info', type: 'GraphQLResolveInfo', decorators: [{ name: 'Info', arguments: [] }] },
701
+ ],
702
+ returnType,
703
+ statements: [
704
+ `const select = transformInfoIntoPrismaArgs(info);`,
705
+ `const prisma = getPrismaFromContext(info);`,
706
+ `return prisma.${prismaModel}.${prismaMethod}({ ...args, ...select });`,
707
+ ],
708
+ });
709
+ }
710
+ /**
711
+ * Generate model folder index
712
+ */
713
+ function generateModelIndex(sourceFile, _model, config, hasInputs) {
714
+ sourceFile.addExportDeclaration({ moduleSpecifier: './model' });
715
+ if (hasInputs) {
716
+ sourceFile.addExportDeclaration({ moduleSpecifier: './inputs' });
717
+ }
718
+ sourceFile.addExportDeclaration({ moduleSpecifier: './args' });
719
+ if (config.generateResolvers) {
720
+ sourceFile.addExportDeclaration({ moduleSpecifier: './resolver' });
721
+ }
722
+ }
723
+ /**
724
+ * Generate shared enums
725
+ */
726
+ function generateEnumsGrouped(project, dmmf) {
727
+ const files = new Map();
728
+ for (const enumDef of dmmf.enums) {
729
+ const filePath = `enums/${enumDef.name}.ts`;
730
+ const sourceFile = project.createSourceFile(filePath, '', { overwrite: true });
731
+ sourceFile.addImportDeclaration({
732
+ moduleSpecifier: '@nestjs/graphql',
733
+ namedImports: ['registerEnumType'],
734
+ });
735
+ sourceFile.addEnum({
736
+ name: enumDef.name,
737
+ isExported: true,
738
+ members: enumDef.values.map(v => ({ name: v.name, value: `'${v.name}'` })),
739
+ });
740
+ sourceFile.addStatements(`
741
+ registerEnumType(${enumDef.name}, {
742
+ name: '${enumDef.name}',
743
+ description: ${enumDef.documentation ? `'${escapeDescription(enumDef.documentation)}'` : 'undefined'},
744
+ });
745
+ `);
746
+ files.set(filePath, sourceFile);
747
+ }
748
+ // Generate index
749
+ const indexFile = project.createSourceFile('enums/index.ts', '', { overwrite: true });
750
+ for (const enumDef of dmmf.enums) {
751
+ indexFile.addExportDeclaration({ moduleSpecifier: `./${enumDef.name}` });
752
+ }
753
+ files.set('enums/index.ts', indexFile);
754
+ return files;
755
+ }
756
+ /**
757
+ * Generate common types
758
+ */
759
+ function generateCommonTypesGrouped(project) {
760
+ const files = new Map();
761
+ const affectedRowsFile = project.createSourceFile('common/AffectedRows.ts', '', { overwrite: true });
762
+ affectedRowsFile.addImportDeclaration({
763
+ moduleSpecifier: '@nestjs/graphql',
764
+ namedImports: ['ObjectType', 'Field', 'Int'],
765
+ });
766
+ affectedRowsFile.addClass({
767
+ name: 'AffectedRows',
768
+ isExported: true,
769
+ decorators: [{ name: 'ObjectType', arguments: [] }],
770
+ properties: [
771
+ {
772
+ name: 'count',
773
+ type: 'number',
774
+ hasExclamationToken: true,
775
+ decorators: [{ name: 'Field', arguments: ['() => Int'] }],
776
+ },
777
+ ],
778
+ });
779
+ files.set('common/AffectedRows.ts', affectedRowsFile);
780
+ const indexFile = project.createSourceFile('common/index.ts', '', { overwrite: true });
781
+ indexFile.addExportDeclaration({ moduleSpecifier: './AffectedRows' });
782
+ files.set('common/index.ts', indexFile);
783
+ return files;
784
+ }
785
+ /**
786
+ * Generate helpers file
787
+ */
788
+ function generateHelpersGrouped(project, _config) {
789
+ const sourceFile = project.createSourceFile('helpers.ts', '', { overwrite: true });
790
+ sourceFile.addStatements(`
791
+ import { parseResolveInfo, ResolveTree, FieldsByTypeName } from 'graphql-parse-resolve-info';
792
+ import type { GraphQLResolveInfo } from 'graphql';
793
+
794
+ export function transformInfoIntoPrismaArgs(info: GraphQLResolveInfo): { select?: Record<string, any>; include?: Record<string, any> } {
795
+ const parsedInfo = parseResolveInfo(info) as ResolveTree | null;
796
+ if (!parsedInfo) return {};
797
+
798
+ const select = buildPrismaSelect(parsedInfo.fieldsByTypeName);
799
+ return Object.keys(select).length > 0 ? { select } : {};
800
+ }
801
+
802
+ function buildPrismaSelect(fieldsByTypeName: FieldsByTypeName): Record<string, any> {
803
+ const result: Record<string, any> = {};
804
+
805
+ for (const typeName in fieldsByTypeName) {
806
+ const fields = fieldsByTypeName[typeName];
807
+ for (const fieldName in fields) {
808
+ if (fieldName.startsWith('__') || fieldName.startsWith('_count') || fieldName.startsWith('_avg') || fieldName.startsWith('_sum') || fieldName.startsWith('_min') || fieldName.startsWith('_max')) continue;
809
+
810
+ const field = fields[fieldName];
811
+ const nestedFields = field.fieldsByTypeName;
812
+
813
+ if (Object.keys(nestedFields).length > 0) {
814
+ const nestedSelect = buildPrismaSelect(nestedFields);
815
+ result[fieldName] = Object.keys(nestedSelect).length > 0 ? { select: nestedSelect } : true;
816
+ } else {
817
+ result[fieldName] = true;
818
+ }
819
+ }
820
+ }
821
+
822
+ return result;
823
+ }
824
+
825
+ export function getPrismaFromContext(info: GraphQLResolveInfo): any {
826
+ const context = (info.rootValue as any)?.context ?? info.rootValue;
827
+ const prisma = context?.prisma ?? context?.db;
828
+ if (!prisma) throw new Error('Prisma client not found in context. Please provide prisma in your GraphQL context.');
829
+ return prisma;
830
+ }
831
+
832
+ export function mergePrismaSelects(...selects: Array<{ select?: Record<string, any>; include?: Record<string, any> }>): { select?: Record<string, any>; include?: Record<string, any> } {
833
+ const result: { select?: Record<string, any>; include?: Record<string, any> } = {};
834
+ for (const s of selects) {
835
+ if (s.select) result.select = { ...(result.select ?? {}), ...s.select };
836
+ if (s.include) result.include = { ...(result.include ?? {}), ...s.include };
837
+ }
838
+ return result;
839
+ }
840
+ `);
841
+ return sourceFile;
842
+ }
843
+ /**
844
+ * Generate root index
845
+ */
846
+ function generateRootIndexGrouped(sourceFile, dmmf, _config) {
847
+ sourceFile.addExportDeclaration({ moduleSpecifier: './enums' });
848
+ sourceFile.addExportDeclaration({ moduleSpecifier: './common' });
849
+ sourceFile.addExportDeclaration({ moduleSpecifier: './helpers' });
850
+ for (const model of dmmf.models) {
851
+ const inputTypeNames = new Set(dmmf.inputTypes.keys());
852
+ const hasWhereInput = inputTypeNames.has(`${model.name}WhereInput`);
853
+ const hasWhereUniqueInput = inputTypeNames.has(`${model.name}WhereUniqueInput`);
854
+ if (hasWhereInput || hasWhereUniqueInput) {
855
+ sourceFile.addExportDeclaration({ moduleSpecifier: `./${model.name}` });
856
+ }
857
+ }
858
+ }
859
+ function escapeDescription(text) {
860
+ return text.replace(/'/g, "\\'").replace(/\n/g, '\\n');
861
+ }
862
+ //# sourceMappingURL=generate-grouped.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-grouped.js","sourceRoot":"","sources":["../../src/generator/generate-grouped.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAS7D;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,EAAE,CAAC,CAsF1B"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAU7D;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,EAAE,CAAC,CA0F1B"}
@@ -9,12 +9,17 @@ const helpers_generator_1 = require("./helpers-generator");
9
9
  const input_1 = require("./templates/input");
10
10
  const model_1 = require("./templates/model");
11
11
  const resolver_1 = require("./templates/resolver");
12
+ const generate_grouped_1 = require("./generate-grouped");
12
13
  /**
13
14
  * Main code generation orchestrator
14
15
  *
15
16
  * Coordinates generation of all code files from the DMMF document
16
17
  */
17
18
  async function generateCode(dmmf, config) {
19
+ // Use grouped generation if enabled
20
+ if (config.groupByModel) {
21
+ return (0, generate_grouped_1.generateCodeGrouped)(dmmf, config);
22
+ }
18
23
  const project = new ts_morph_1.Project({
19
24
  useInMemoryFileSystem: true,
20
25
  compilerOptions: {
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k0lyan/nestjs-prisma-graphql-generator",
3
- "version": "0.1.16",
3
+ "version": "0.2.0",
4
4
  "description": "Prisma generator for NestJS 11 GraphQL with optimized query building from GraphQL selections",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",