prisma-generator-express 1.16.6 → 1.18.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.
Files changed (60) hide show
  1. package/README.md +9 -8
  2. package/dist/generator.js +8 -129
  3. package/dist/generator.js.map +1 -1
  4. package/dist/helpers/generateImportPrismaStatement.js +1 -2
  5. package/dist/helpers/generateImportPrismaStatement.js.map +1 -1
  6. package/dist/helpers/generateOperation.js +471 -0
  7. package/dist/helpers/generateOperation.js.map +1 -0
  8. package/dist/helpers/generateRouteFile.js +19 -2
  9. package/dist/helpers/generateRouteFile.js.map +1 -1
  10. package/dist/utils/strings.js +2 -2
  11. package/dist/utils/strings.js.map +1 -1
  12. package/package.json +19 -21
  13. package/src/copy/createOutputValidatorMiddleware.ts +1 -1
  14. package/src/copy/createValidatorMiddleware.ts +1 -1
  15. package/src/copy/misc.ts +1 -1
  16. package/src/copy/parseQueryParams.ts +1 -1
  17. package/src/copy/routeConfig.ts +5 -3
  18. package/src/copy/transformZod.ts +15 -16
  19. package/src/generator.ts +9 -143
  20. package/src/helpers/generateOperation.ts +515 -0
  21. package/src/helpers/generateRouteFile.ts +19 -1
  22. package/dist/helpers/generateAggregate.js +0 -51
  23. package/dist/helpers/generateAggregate.js.map +0 -1
  24. package/dist/helpers/generateCount.js +0 -50
  25. package/dist/helpers/generateCount.js.map +0 -1
  26. package/dist/helpers/generateCreate.js +0 -49
  27. package/dist/helpers/generateCreate.js.map +0 -1
  28. package/dist/helpers/generateCreateMany.js +0 -49
  29. package/dist/helpers/generateCreateMany.js.map +0 -1
  30. package/dist/helpers/generateDelete.js +0 -49
  31. package/dist/helpers/generateDelete.js.map +0 -1
  32. package/dist/helpers/generateDeleteMany.js +0 -49
  33. package/dist/helpers/generateDeleteMany.js.map +0 -1
  34. package/dist/helpers/generateFindFirst.js +0 -56
  35. package/dist/helpers/generateFindFirst.js.map +0 -1
  36. package/dist/helpers/generateFindMany.js +0 -56
  37. package/dist/helpers/generateFindMany.js.map +0 -1
  38. package/dist/helpers/generateFindUnique.js +0 -56
  39. package/dist/helpers/generateFindUnique.js.map +0 -1
  40. package/dist/helpers/generateGroupBy.js +0 -51
  41. package/dist/helpers/generateGroupBy.js.map +0 -1
  42. package/dist/helpers/generateUpdate.js +0 -49
  43. package/dist/helpers/generateUpdate.js.map +0 -1
  44. package/dist/helpers/generateUpdateMany.js +0 -49
  45. package/dist/helpers/generateUpdateMany.js.map +0 -1
  46. package/dist/helpers/generateUpsert.js +0 -49
  47. package/dist/helpers/generateUpsert.js.map +0 -1
  48. package/src/helpers/generateAggregate.ts +0 -59
  49. package/src/helpers/generateCount.ts +0 -58
  50. package/src/helpers/generateCreate.ts +0 -56
  51. package/src/helpers/generateCreateMany.ts +0 -55
  52. package/src/helpers/generateDelete.ts +0 -57
  53. package/src/helpers/generateDeleteMany.ts +0 -57
  54. package/src/helpers/generateFindFirst.ts +0 -62
  55. package/src/helpers/generateFindMany.ts +0 -62
  56. package/src/helpers/generateFindUnique.ts +0 -62
  57. package/src/helpers/generateGroupBy.ts +0 -60
  58. package/src/helpers/generateUpdate.ts +0 -56
  59. package/src/helpers/generateUpdateMany.ts +0 -56
  60. package/src/helpers/generateUpsert.ts +0 -57
@@ -0,0 +1,471 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OPERATION_CONFIGS = void 0;
4
+ exports.generateOperationFunction = generateOperationFunction;
5
+ const strings_1 = require("../utils/strings");
6
+ exports.OPERATION_CONFIGS = [
7
+ {
8
+ operation: 'FindUnique',
9
+ prismaMethod: 'findUnique',
10
+ source: 'query',
11
+ successStatus: 200,
12
+ resultVar: 'data',
13
+ exportInterface: true,
14
+ hasPassToNext: true,
15
+ importsModel: true,
16
+ argsPartial: false,
17
+ useCapitalizeForArgs: false,
18
+ tsIgnoreCall: false,
19
+ noCastInCall: false,
20
+ wrapCount: false,
21
+ useResLocalsValidator: false,
22
+ importValidatorConfig: false,
23
+ localsDataType: 'nullable',
24
+ validatorLocalsType: 'ZodType',
25
+ zodTypeGeneric: null,
26
+ middlewareType: 'queryFull',
27
+ },
28
+ {
29
+ operation: 'FindFirst',
30
+ prismaMethod: 'findFirst',
31
+ source: 'query',
32
+ successStatus: 200,
33
+ resultVar: 'data',
34
+ exportInterface: true,
35
+ hasPassToNext: true,
36
+ importsModel: true,
37
+ argsPartial: false,
38
+ useCapitalizeForArgs: false,
39
+ tsIgnoreCall: false,
40
+ noCastInCall: false,
41
+ wrapCount: false,
42
+ useResLocalsValidator: false,
43
+ importValidatorConfig: false,
44
+ localsDataType: 'nullable',
45
+ validatorLocalsType: 'ZodType',
46
+ zodTypeGeneric: null,
47
+ middlewareType: 'queryFull',
48
+ },
49
+ {
50
+ operation: 'FindMany',
51
+ prismaMethod: 'findMany',
52
+ source: 'query',
53
+ successStatus: 200,
54
+ resultVar: 'data',
55
+ exportInterface: true,
56
+ hasPassToNext: true,
57
+ importsModel: true,
58
+ argsPartial: false,
59
+ useCapitalizeForArgs: false,
60
+ tsIgnoreCall: false,
61
+ noCastInCall: false,
62
+ wrapCount: false,
63
+ useResLocalsValidator: false,
64
+ importValidatorConfig: false,
65
+ localsDataType: 'array',
66
+ validatorLocalsType: 'ZodType',
67
+ zodTypeGeneric: null,
68
+ middlewareType: 'queryFull',
69
+ },
70
+ {
71
+ operation: 'Create',
72
+ prismaMethod: 'create',
73
+ source: 'body',
74
+ successStatus: 201,
75
+ resultVar: 'data',
76
+ exportInterface: false,
77
+ hasPassToNext: false,
78
+ importsModel: false,
79
+ argsPartial: false,
80
+ useCapitalizeForArgs: false,
81
+ tsIgnoreCall: false,
82
+ noCastInCall: false,
83
+ wrapCount: false,
84
+ useResLocalsValidator: false,
85
+ importValidatorConfig: false,
86
+ localsDataType: null,
87
+ validatorLocalsType: 'ZodType',
88
+ zodTypeGeneric: null,
89
+ middlewareType: 'bodyArgs',
90
+ },
91
+ {
92
+ operation: 'CreateMany',
93
+ prismaMethod: 'createMany',
94
+ source: 'body',
95
+ successStatus: 201,
96
+ resultVar: 'data',
97
+ exportInterface: false,
98
+ hasPassToNext: false,
99
+ importsModel: false,
100
+ argsPartial: false,
101
+ useCapitalizeForArgs: false,
102
+ tsIgnoreCall: false,
103
+ noCastInCall: false,
104
+ wrapCount: false,
105
+ useResLocalsValidator: false,
106
+ importValidatorConfig: false,
107
+ localsDataType: null,
108
+ validatorLocalsType: 'ZodType',
109
+ zodTypeGeneric: null,
110
+ middlewareType: 'bodyArgs',
111
+ },
112
+ {
113
+ operation: 'Update',
114
+ prismaMethod: 'update',
115
+ source: 'body',
116
+ successStatus: 200,
117
+ resultVar: 'data',
118
+ exportInterface: false,
119
+ hasPassToNext: false,
120
+ importsModel: false,
121
+ argsPartial: false,
122
+ useCapitalizeForArgs: false,
123
+ tsIgnoreCall: false,
124
+ noCastInCall: false,
125
+ wrapCount: false,
126
+ useResLocalsValidator: false,
127
+ importValidatorConfig: false,
128
+ localsDataType: null,
129
+ validatorLocalsType: 'ZodType',
130
+ zodTypeGeneric: null,
131
+ middlewareType: 'bodyArgs',
132
+ },
133
+ {
134
+ operation: 'UpdateMany',
135
+ prismaMethod: 'updateMany',
136
+ source: 'body',
137
+ successStatus: 200,
138
+ resultVar: 'data',
139
+ exportInterface: false,
140
+ hasPassToNext: false,
141
+ importsModel: false,
142
+ argsPartial: false,
143
+ useCapitalizeForArgs: false,
144
+ tsIgnoreCall: false,
145
+ noCastInCall: false,
146
+ wrapCount: true,
147
+ useResLocalsValidator: false,
148
+ importValidatorConfig: false,
149
+ localsDataType: null,
150
+ validatorLocalsType: 'ZodType',
151
+ zodTypeGeneric: 'UpdateManyResult',
152
+ middlewareType: 'bodyArgs',
153
+ },
154
+ {
155
+ operation: 'Upsert',
156
+ prismaMethod: 'upsert',
157
+ source: 'body',
158
+ successStatus: 200,
159
+ resultVar: 'data',
160
+ exportInterface: false,
161
+ hasPassToNext: false,
162
+ importsModel: false,
163
+ argsPartial: false,
164
+ useCapitalizeForArgs: false,
165
+ tsIgnoreCall: false,
166
+ noCastInCall: false,
167
+ wrapCount: false,
168
+ useResLocalsValidator: false,
169
+ importValidatorConfig: false,
170
+ localsDataType: null,
171
+ validatorLocalsType: 'ZodType',
172
+ zodTypeGeneric: null,
173
+ middlewareType: 'bodyArgs',
174
+ },
175
+ {
176
+ operation: 'Delete',
177
+ prismaMethod: 'delete',
178
+ source: 'body',
179
+ successStatus: 200,
180
+ resultVar: 'data',
181
+ exportInterface: false,
182
+ hasPassToNext: false,
183
+ importsModel: false,
184
+ argsPartial: false,
185
+ useCapitalizeForArgs: false,
186
+ tsIgnoreCall: false,
187
+ noCastInCall: false,
188
+ wrapCount: false,
189
+ useResLocalsValidator: false,
190
+ importValidatorConfig: false,
191
+ localsDataType: null,
192
+ validatorLocalsType: 'ZodType',
193
+ zodTypeGeneric: null,
194
+ middlewareType: 'bodyArgs',
195
+ },
196
+ {
197
+ operation: 'DeleteMany',
198
+ prismaMethod: 'deleteMany',
199
+ source: 'body',
200
+ successStatus: 200,
201
+ resultVar: 'result',
202
+ exportInterface: false,
203
+ hasPassToNext: false,
204
+ importsModel: false,
205
+ argsPartial: false,
206
+ useCapitalizeForArgs: false,
207
+ tsIgnoreCall: false,
208
+ noCastInCall: false,
209
+ wrapCount: false,
210
+ useResLocalsValidator: false,
211
+ importValidatorConfig: false,
212
+ localsDataType: null,
213
+ validatorLocalsType: 'ZodType',
214
+ zodTypeGeneric: null,
215
+ middlewareType: 'bodyArgs',
216
+ },
217
+ {
218
+ operation: 'Aggregate',
219
+ prismaMethod: 'aggregate',
220
+ source: 'query',
221
+ successStatus: 200,
222
+ resultVar: 'result',
223
+ exportInterface: false,
224
+ hasPassToNext: false,
225
+ importsModel: false,
226
+ argsPartial: true,
227
+ useCapitalizeForArgs: true,
228
+ tsIgnoreCall: false,
229
+ noCastInCall: false,
230
+ wrapCount: false,
231
+ useResLocalsValidator: true,
232
+ importValidatorConfig: true,
233
+ localsDataType: null,
234
+ validatorLocalsType: 'ValidatorConfig',
235
+ zodTypeGeneric: null,
236
+ middlewareType: 'partialArgs',
237
+ },
238
+ {
239
+ operation: 'Count',
240
+ prismaMethod: 'count',
241
+ source: 'query',
242
+ successStatus: 200,
243
+ resultVar: 'result',
244
+ exportInterface: false,
245
+ hasPassToNext: false,
246
+ importsModel: false,
247
+ argsPartial: true,
248
+ useCapitalizeForArgs: false,
249
+ tsIgnoreCall: false,
250
+ noCastInCall: false,
251
+ wrapCount: false,
252
+ useResLocalsValidator: false,
253
+ importValidatorConfig: false,
254
+ localsDataType: null,
255
+ validatorLocalsType: 'ZodType',
256
+ zodTypeGeneric: null,
257
+ middlewareType: 'emptyParsedQs',
258
+ },
259
+ {
260
+ operation: 'GroupBy',
261
+ prismaMethod: 'groupBy',
262
+ source: 'query',
263
+ successStatus: 200,
264
+ resultVar: 'result',
265
+ exportInterface: false,
266
+ hasPassToNext: false,
267
+ importsModel: false,
268
+ argsPartial: true,
269
+ useCapitalizeForArgs: false,
270
+ tsIgnoreCall: true,
271
+ noCastInCall: true,
272
+ wrapCount: false,
273
+ useResLocalsValidator: false,
274
+ importValidatorConfig: false,
275
+ localsDataType: null,
276
+ validatorLocalsType: 'ZodType',
277
+ zodTypeGeneric: null,
278
+ middlewareType: 'emptyParsedQs',
279
+ },
280
+ {
281
+ operation: 'CreateManyAndReturn',
282
+ prismaMethod: 'createManyAndReturn',
283
+ source: 'body',
284
+ successStatus: 201,
285
+ resultVar: 'data',
286
+ exportInterface: false,
287
+ hasPassToNext: false,
288
+ importsModel: false,
289
+ argsPartial: false,
290
+ useCapitalizeForArgs: false,
291
+ tsIgnoreCall: false,
292
+ noCastInCall: false,
293
+ wrapCount: false,
294
+ useResLocalsValidator: false,
295
+ importValidatorConfig: false,
296
+ localsDataType: null,
297
+ validatorLocalsType: 'ZodType',
298
+ zodTypeGeneric: null,
299
+ middlewareType: 'bodyArgs',
300
+ },
301
+ {
302
+ operation: 'UpdateManyAndReturn',
303
+ prismaMethod: 'updateManyAndReturn',
304
+ source: 'body',
305
+ successStatus: 200,
306
+ resultVar: 'data',
307
+ exportInterface: false,
308
+ hasPassToNext: false,
309
+ importsModel: false,
310
+ argsPartial: false,
311
+ useCapitalizeForArgs: false,
312
+ tsIgnoreCall: false,
313
+ noCastInCall: false,
314
+ wrapCount: false,
315
+ useResLocalsValidator: false,
316
+ importValidatorConfig: false,
317
+ localsDataType: null,
318
+ validatorLocalsType: 'ZodType',
319
+ zodTypeGeneric: null,
320
+ middlewareType: 'bodyArgs',
321
+ },
322
+ ];
323
+ function generateOperationFunction(cfg, model, prismaImportStatement) {
324
+ const modelName = model.name;
325
+ const functionName = `${modelName}${cfg.operation}`;
326
+ const interfaceName = `${cfg.operation}Request`;
327
+ const middlewareTypeName = `${cfg.operation}Middleware`;
328
+ const argsTypeName = cfg.useCapitalizeForArgs
329
+ ? `Prisma.${(0, strings_1.capitalize)(modelName)}${cfg.operation}Args`
330
+ : `Prisma.${modelName}${cfg.operation}Args`;
331
+ const zodType = cfg.zodTypeGeneric ? `ZodType<${cfg.zodTypeGeneric}>` : 'ZodType';
332
+ const prismaImport = cfg.importsModel
333
+ ? prismaImportStatement.replace('{ Prisma }', `{ Prisma, ${modelName} }`)
334
+ : prismaImportStatement;
335
+ const importLines = [
336
+ prismaImport,
337
+ `import { Request, Response, NextFunction } from 'express';`,
338
+ `import { RequestHandler, ParamsDictionary } from 'express-serve-static-core';`,
339
+ ];
340
+ if (cfg.source === 'query') {
341
+ importLines.push(`import { ParsedQs } from 'qs';`);
342
+ }
343
+ importLines.push(`import { ZodType } from 'zod';`);
344
+ if (cfg.importValidatorConfig) {
345
+ importLines.push(`import { ValidatorConfig } from '../routeConfig';`);
346
+ }
347
+ const extraTypes = cfg.wrapCount ? `\ntype UpdateManyResult = { count: number };\n` : '';
348
+ const queryType = cfg.argsPartial
349
+ ? `Partial<${argsTypeName}> & ParsedQs`
350
+ : `${argsTypeName} & ParsedQs`;
351
+ let interfaceBody;
352
+ if (cfg.source === 'query') {
353
+ const localsEntries = [];
354
+ if (cfg.localsDataType === 'nullable') {
355
+ localsEntries.push(` data?: ${modelName} | null`);
356
+ }
357
+ else if (cfg.localsDataType === 'array') {
358
+ localsEntries.push(` data?: ${modelName}[]`);
359
+ }
360
+ localsEntries.push(` outputValidator?: ${cfg.validatorLocalsType};`);
361
+ interfaceBody = [
362
+ ` prisma: PrismaClient;`,
363
+ ` query: ${queryType};`,
364
+ ` outputValidation?: ${zodType};`,
365
+ ...(cfg.hasPassToNext ? [` passToNext?: boolean;`] : []),
366
+ ` locals?: {`,
367
+ ...localsEntries,
368
+ ` }`,
369
+ ].join('\n');
370
+ }
371
+ else {
372
+ interfaceBody = [
373
+ ` prisma: PrismaClient;`,
374
+ ` body: ${argsTypeName};`,
375
+ ` outputValidation?: ${zodType};`,
376
+ ` locals?: {`,
377
+ ` outputValidator?: ${zodType};`,
378
+ ` };`,
379
+ ].join('\n');
380
+ }
381
+ const exportKw = cfg.exportInterface ? 'export ' : '';
382
+ const interfaceDecl = `${exportKw}interface ${interfaceName} extends Request {\n${interfaceBody}\n}`;
383
+ let middlewareTypeDecl;
384
+ switch (cfg.middlewareType) {
385
+ case 'queryFull':
386
+ middlewareTypeDecl = `export type ${middlewareTypeName} = RequestHandler<ParamsDictionary, any, any, ${argsTypeName} & ParsedQs, Record<string, any>>`;
387
+ break;
388
+ case 'bodyArgs':
389
+ middlewareTypeDecl = `export type ${middlewareTypeName} = RequestHandler<ParamsDictionary, any, ${argsTypeName}, Record<string, any>>`;
390
+ break;
391
+ case 'partialArgs':
392
+ middlewareTypeDecl = `export type ${middlewareTypeName} = RequestHandler<ParamsDictionary, any, Partial<${argsTypeName}>, Record<string, any>>`;
393
+ break;
394
+ case 'emptyParsedQs':
395
+ middlewareTypeDecl = `export type ${middlewareTypeName} = RequestHandler<ParamsDictionary, any, {}, ParsedQs>`;
396
+ break;
397
+ }
398
+ const validatorLine = cfg.useResLocalsValidator
399
+ ? `const outputValidator = res.locals.outputValidator?.schema || req.outputValidation;`
400
+ : `const outputValidator = req.locals?.outputValidator || req.outputValidation;`;
401
+ const v = cfg.resultVar;
402
+ const callArg = cfg.source === 'body'
403
+ ? 'req.body'
404
+ : cfg.noCastInCall
405
+ ? 'req.query'
406
+ : `req.query as ${argsTypeName}`;
407
+ const prismaCall = [
408
+ cfg.tsIgnoreCall ? ' // @ts-ignore' : '',
409
+ ` const ${v} = await req.prisma.${(0, strings_1.toPascalCase)(modelName)}.${cfg.prismaMethod}(${callArg});`,
410
+ ].filter(Boolean).join('\n');
411
+ const successJson = cfg.wrapCount
412
+ ? `{ count: validationResult.data.count }`
413
+ : `validationResult.data`;
414
+ const elseJson = cfg.wrapCount
415
+ ? `{ count: ${v}.count }`
416
+ : v;
417
+ let bodyLines;
418
+ if (cfg.hasPassToNext) {
419
+ bodyLines = [
420
+ ` ${validatorLine}`,
421
+ ``,
422
+ prismaCall,
423
+ ` if (req.passToNext) {`,
424
+ ` if (req.locals) req.locals.data = ${v};`,
425
+ ` next();`,
426
+ ` } else if (outputValidator) {`,
427
+ ` const validationResult = outputValidator.safeParse(${v});`,
428
+ ` if (validationResult.success) {`,
429
+ ` return res.status(${cfg.successStatus}).json(${successJson});`,
430
+ ` } else {`,
431
+ ` return res.status(400).json({ error: 'Invalid data format', details: validationResult.error });`,
432
+ ` }`,
433
+ ` } else {`,
434
+ ` return res.status(${cfg.successStatus}).json(${elseJson});`,
435
+ ` }`,
436
+ ];
437
+ }
438
+ else {
439
+ bodyLines = [
440
+ ` ${validatorLine}`,
441
+ ``,
442
+ prismaCall,
443
+ ``,
444
+ ` if (outputValidator) {`,
445
+ ` const validationResult = outputValidator.safeParse(${v});`,
446
+ ` if (validationResult.success) {`,
447
+ ` return res.status(${cfg.successStatus}).json(${successJson});`,
448
+ ` } else {`,
449
+ ` return res.status(400).json({ error: 'Invalid data format', details: validationResult.error });`,
450
+ ` }`,
451
+ ` } else {`,
452
+ ` return res.status(${cfg.successStatus}).json(${elseJson});`,
453
+ ` }`,
454
+ ];
455
+ }
456
+ return `
457
+ ${importLines.join('\n')}
458
+ ${extraTypes}
459
+ ${interfaceDecl}
460
+
461
+ ${middlewareTypeDecl}
462
+
463
+ export async function ${functionName}(req: ${interfaceName}, res: Response, next: NextFunction) {
464
+ try {
465
+ ${bodyLines.join('\n')}
466
+ } catch(error: unknown) {
467
+ next(error)
468
+ }
469
+ }`;
470
+ }
471
+ //# sourceMappingURL=generateOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateOperation.js","sourceRoot":"","sources":["../../src/helpers/generateOperation.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateRouterFunction = void 0;
3
+ exports.generateRouterFunction = generateRouterFunction;
4
4
  function generateRouterFunction({ model, }) {
5
5
  const modelName = model.name;
6
6
  const routerFunctionName = `${modelName}Router`;
@@ -13,8 +13,10 @@ import { ${modelName}FindMany } from './${modelName}FindMany';
13
13
  import { ${modelName}FindUnique } from './${modelName}FindUnique';
14
14
  import { ${modelName}Create } from './${modelName}Create';
15
15
  import { ${modelName}CreateMany } from './${modelName}CreateMany';
16
+ import { ${modelName}CreateManyAndReturn } from './${modelName}CreateManyAndReturn';
16
17
  import { ${modelName}Update } from './${modelName}Update';
17
18
  import { ${modelName}UpdateMany } from './${modelName}UpdateMany';
19
+ import { ${modelName}UpdateManyAndReturn } from './${modelName}UpdateManyAndReturn';
18
20
  import { ${modelName}Upsert } from './${modelName}Upsert';
19
21
  import { ${modelName}Delete } from './${modelName}Delete';
20
22
  import { ${modelName}DeleteMany } from './${modelName}DeleteMany';
@@ -121,6 +123,14 @@ export function ${routerFunctionName}(config: RouteConfig<RequestHandler>) {
121
123
  }
122
124
  }
123
125
 
126
+ if (config.enableAll || config?.createManyAndReturn) {
127
+ const { before = [], after = [], inputValidator, outputValidator } = config.createManyAndReturn || defaultBeforeAfter;
128
+ setupRoute('/many/return', 'post', before, ${modelName}CreateManyAndReturn as RequestHandler, inputValidator, outputValidator);
129
+ if (after.length) {
130
+ router.use(removeTrailingSlash(basePath) + '/many/return', ...after);
131
+ }
132
+ }
133
+
124
134
  if (config.enableAll || config?.update) {
125
135
  const { before = [], after = [], inputValidator, outputValidator } = config.update || defaultBeforeAfter;
126
136
  setupRoute('/', 'put', before, ${modelName}Update as RequestHandler, inputValidator, outputValidator);
@@ -137,6 +147,14 @@ export function ${routerFunctionName}(config: RouteConfig<RequestHandler>) {
137
147
  }
138
148
  }
139
149
 
150
+ if (config.enableAll || config?.updateManyAndReturn) {
151
+ const { before = [], after = [], inputValidator, outputValidator } = config.updateManyAndReturn || defaultBeforeAfter;
152
+ setupRoute('/many/return', 'put', before, ${modelName}UpdateManyAndReturn as RequestHandler, inputValidator, outputValidator);
153
+ if (after.length) {
154
+ router.use(removeTrailingSlash(basePath) + '/many/return', ...after);
155
+ }
156
+ }
157
+
140
158
  if (config.enableAll || config?.upsert) {
141
159
  const { before = [], after = [], inputValidator, outputValidator } = config.upsert || defaultBeforeAfter;
142
160
  setupRoute('/', 'patch', before, ${modelName}Upsert as RequestHandler, inputValidator, outputValidator);
@@ -189,5 +207,4 @@ export function ${routerFunctionName}(config: RouteConfig<RequestHandler>) {
189
207
  }
190
208
  `;
191
209
  }
192
- exports.generateRouterFunction = generateRouterFunction;
193
210
  //# sourceMappingURL=generateRouteFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateRouteFile.js","sourceRoot":"","sources":["../../src/helpers/generateRouteFile.ts"],"names":[],"mappings":";;;AAEA,SAAgB,sBAAsB,CAAC,EACrC,KAAK,GAGN;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,kBAAkB,GAAG,GAAG,SAAS,QAAQ,CAAA;IAE/C,OAAO;;;;WAIE,SAAS,uBAAuB,SAAS;WACzC,SAAS,sBAAsB,SAAS;WACxC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,uBAAuB,SAAS;WACzC,SAAS,mBAAmB,SAAS;WACrC,SAAS,qBAAqB,SAAS;;;;;;;;;;;;;qCAab,SAAS;;;;;kBAK5B,kBAAkB;;;4EAGwC,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CA0CzD,SAAS;;;;;;;;qCAQd,SAAS;;;;;;;;wCAQN,SAAS;;;;;;;;sCAQX,SAAS;;;;;;;;0CAQL,SAAS;;;;;;;;qCAQd,SAAS;;;;;;;;yCAQL,SAAS;;;;;;;;uCAQX,SAAS;;;;;;;;wCAQR,SAAS;;;;;;;;4CAQL,SAAS;;;;;;;;8CAQP,SAAS;;;;;;;;0CAQb,SAAS;;;;;;;;4CAQP,SAAS;;;;;;;;CAQpD,CAAA;AACD,CAAC;AAhMD,wDAgMC"}
1
+ {"version":3,"file":"generateRouteFile.js","sourceRoot":"","sources":["../../src/helpers/generateRouteFile.ts"],"names":[],"mappings":";;AAEA,wDAkNC;AAlND,SAAgB,sBAAsB,CAAC,EACrC,KAAK,GAGN;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,kBAAkB,GAAG,GAAG,SAAS,QAAQ,CAAA;IAE/C,OAAO;;;;WAIE,SAAS,uBAAuB,SAAS;WACzC,SAAS,sBAAsB,SAAS;WACxC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,iCAAiC,SAAS;WACnD,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,iCAAiC,SAAS;WACnD,SAAS,oBAAoB,SAAS;WACtC,SAAS,oBAAoB,SAAS;WACtC,SAAS,wBAAwB,SAAS;WAC1C,SAAS,uBAAuB,SAAS;WACzC,SAAS,mBAAmB,SAAS;WACrC,SAAS,qBAAqB,SAAS;;;;;;;;;;;;;qCAab,SAAS;;;;;kBAK5B,kBAAkB;;;4EAGwC,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CA0CzD,SAAS;;;;;;;;qCAQd,SAAS;;;;;;;;wCAQN,SAAS;;;;;;;;sCAQX,SAAS;;;;;;;;0CAQL,SAAS;;;;;;;;iDAQF,SAAS;;;;;;;;qCAQrB,SAAS;;;;;;;;yCAQL,SAAS;;;;;;;;gDAQF,SAAS;;;;;;;;uCAQlB,SAAS;;;;;;;;wCAQR,SAAS;;;;;;;;4CAQL,SAAS;;;;;;;;8CAQP,SAAS;;;;;;;;0CAQb,SAAS;;;;;;;;4CAQP,SAAS;;;;;;;;CAQpD,CAAA;AACD,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toPascalCase = exports.capitalize = void 0;
3
+ exports.capitalize = void 0;
4
+ exports.toPascalCase = toPascalCase;
4
5
  const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
5
6
  exports.capitalize = capitalize;
6
7
  function toPascalCase(str) {
@@ -8,5 +9,4 @@ function toPascalCase(str) {
8
9
  return str;
9
10
  return str.charAt(0).toLowerCase() + str.slice(1);
10
11
  }
11
- exports.toPascalCase = toPascalCase;
12
12
  //# sourceMappingURL=strings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../src/utils/strings.ts"],"names":[],"mappings":";;;AAAO,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CACxC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAD/B,QAAA,UAAU,cACqB;AAE5C,SAAgB,YAAY,CAAC,GAAW;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAA;IACpB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACnD,CAAC;AAHD,oCAGC"}
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../src/utils/strings.ts"],"names":[],"mappings":";;;AAGA,oCAGC;AANM,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CACxC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAD/B,QAAA,UAAU,cACqB;AAE5C,SAAgB,YAAY,CAAC,GAAW;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAA;IACpB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACnD,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,12 @@
1
1
  {
2
2
  "name": "prisma-generator-express",
3
3
  "description": "Prisma generator of Express CRUD API",
4
- "version": "1.16.6",
4
+ "version": "1.18.0",
5
5
  "main": "dist/generator.js",
6
6
  "license": "MIT",
7
- "bin": {
8
- "prisma-generator-express": "dist/bin.js"
9
- },
7
+ "bin": "dist/bin.js",
10
8
  "engines": {
11
- "node": ">=20.0"
9
+ "node": ">=22.0"
12
10
  },
13
11
  "scripts": {
14
12
  "start": "node dist/bin.js",
@@ -20,28 +18,28 @@
20
18
  "prepublishOnly": "node copy.js "
21
19
  },
22
20
  "dependencies": {
23
- "@prisma/client": "5.16.1",
24
- "@prisma/generator-helper": "5.16.1",
21
+ "@prisma/client": "7.5.0",
22
+ "@prisma/generator-helper": "7.5.0",
25
23
  "@prisma/sdk": "4.0.0",
26
- "express": "^4.21.0",
27
- "lodash": "^4.17.21",
28
- "prettier": "3.3.2",
29
- "zod": "^3.23.8"
24
+ "express": "^5.2.1",
25
+ "lodash": "^4.17.23",
26
+ "prettier": "3.8.1",
27
+ "zod": "^4.3.6"
30
28
  },
31
29
  "devDependencies": {
32
- "@prisma/internals": "^5.14.0",
30
+ "@prisma/internals": "^7.5.0",
33
31
  "@semantic-release/changelog": "^6.0.3",
34
32
  "@semantic-release/git": "^10.0.1",
35
- "@types/express": "^4.17.21",
36
- "@types/jest": "29.5.12",
37
- "@types/lodash": "^4.17.4",
38
- "@types/node": "20.14.9",
33
+ "@types/express": "^5.0.6",
34
+ "@types/jest": "30.0.0",
35
+ "@types/lodash": "^4.17.24",
36
+ "@types/node": "25.5.0",
39
37
  "@types/prettier": "3.0.0",
40
- "jest": "29.7.0",
41
- "prisma": "5.16.1",
42
- "semantic-release": "^24.0.0",
43
- "ts-jest": "29.1.4",
44
- "typescript": "5.4.5"
38
+ "jest": "30.3.0",
39
+ "prisma": "7.5.0",
40
+ "semantic-release": "^25.0.3",
41
+ "ts-jest": "29.4.6",
42
+ "typescript": "5.9.3"
45
43
  },
46
44
  "homepage": "https://github.com/multipliedtwice/prisma-generator-express/blob/master/README.md",
47
45
  "repository": {
@@ -29,7 +29,7 @@ export function createOutputValidatorMiddleware({
29
29
  res.send = function (data) {
30
30
  const validationResult = schema.safeParse(data)
31
31
  if (!validationResult.success) {
32
- const errors = validationResult.error.errors
32
+ const errors = validationResult.error.issues
33
33
  next({
34
34
  status: 400,
35
35
  message: 'Output validation failed',
@@ -42,7 +42,7 @@ export function createValidatorMiddleware({
42
42
  }
43
43
 
44
44
  if (!validationResult.success) {
45
- const errors = validationResult.error.errors
45
+ const errors = validationResult.error.issues
46
46
  return next({
47
47
  status: 400,
48
48
  message: 'Validation failed',
package/src/copy/misc.ts CHANGED
@@ -17,7 +17,7 @@ export function safeJSONparse<T>(
17
17
  if (data === 'false') return false
18
18
  if (data === 'undefined') return undefined
19
19
  if (data === 'null') return null
20
- return isJsonString(data) ? JSON.parse(data as string) : data
20
+ return isJsonString(data) ? JSON.parse(data as string) : data as any
21
21
  }
22
22
 
23
23
  export const isObject = (value: unknown): value is Record<string, unknown> => {
@@ -4,7 +4,7 @@ import { ParsedQs } from 'qs'
4
4
  /**
5
5
  * Type definition for possible query parameter types.
6
6
  */
7
- type QueryParams = string | ParsedQs | string[] | ParsedQs[] | undefined
7
+ type QueryParams = string | ParsedQs | string[] | ParsedQs[] | Array<string | ParsedQs> | undefined
8
8
 
9
9
  /**
10
10
  * Parses a query value to convert strings to their respective types.