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
@@ -1,10 +1,10 @@
1
1
  import { RequestHandler } from 'express'
2
- import { ZodTypeAny } from 'zod'
2
+ import { ZodType } from 'zod'
3
3
 
4
4
  export interface ValidatorConfig {
5
5
  allow?: string[]
6
6
  forbid?: string[]
7
- schema: ZodTypeAny
7
+ schema: ZodType
8
8
  }
9
9
 
10
10
  interface MiddlewareConfig<M> {
@@ -20,8 +20,10 @@ export interface RouteConfig<M> {
20
20
  findUnique?: MiddlewareConfig<M>
21
21
  create?: MiddlewareConfig<M>
22
22
  createMany?: MiddlewareConfig<M>
23
+ createManyAndReturn?: MiddlewareConfig<M>
23
24
  update?: MiddlewareConfig<M>
24
25
  updateMany?: MiddlewareConfig<M>
26
+ updateManyAndReturn?: MiddlewareConfig<M>
25
27
  upsert?: MiddlewareConfig<M>
26
28
  delete?: MiddlewareConfig<M>
27
29
  deleteMany?: MiddlewareConfig<M>
@@ -31,4 +33,4 @@ export interface RouteConfig<M> {
31
33
  addModelPrefix?: boolean
32
34
  enableAll?: boolean
33
35
  customUrlPrefix?: string
34
- }
36
+ }
@@ -1,12 +1,10 @@
1
1
  import { get } from 'lodash'
2
2
  import {
3
+ output,
3
4
  z,
4
- ZodEffects,
5
5
  ZodError,
6
- ZodIssue,
7
- ZodIssueCode,
8
6
  ZodObject,
9
- ZodTypeAny,
7
+ ZodType,
10
8
  } from 'zod'
11
9
 
12
10
  function startsWith(str: string, prefix: string): boolean {
@@ -34,13 +32,14 @@ function isKeyAllowed(key: string, allowedPaths: string[]): boolean {
34
32
  )
35
33
  }
36
34
 
37
- export function allow<T extends ZodTypeAny>(
35
+ export function allow<T extends ZodType>(
38
36
  schema: T,
39
37
  allowedPaths: string[],
40
- ): ZodEffects<T, any, any> {
41
- const rootSchema = schema instanceof z.ZodObject ? schema.strict() : undefined
38
+ ) {
39
+ const schemaToTransform = schema instanceof z.ZodObject ? schema.strict() : schema
40
+ const rootSchema = schemaToTransform instanceof z.ZodObject ? schemaToTransform : undefined
42
41
 
43
- return rootSchema?.transform((data) => {
42
+ return schemaToTransform.transform((data) => {
44
43
  const flatData = flattenObject(data, '', rootSchema)
45
44
 
46
45
  const disallowedPaths: string[] = []
@@ -56,13 +55,13 @@ export function allow<T extends ZodTypeAny>(
56
55
  }
57
56
 
58
57
  return data
59
- }) as unknown as ZodEffects<T, any, any>
58
+ })
60
59
  }
61
60
 
62
- export function forbid<T extends z.ZodTypeAny>(
61
+ export function forbid<T extends ZodType>(
63
62
  schema: T,
64
63
  forbiddenPaths: string[],
65
- ): ZodEffects<T, any, any> {
64
+ ) {
66
65
  return schema.transform((data) => {
67
66
  const forbiddenMatches: string[] = []
68
67
 
@@ -78,11 +77,11 @@ export function forbid<T extends z.ZodTypeAny>(
78
77
  throw createZodErrorFromPaths(forbiddenMatches, 'Field is forbidden:')
79
78
  }
80
79
  return data
81
- }) as ZodEffects<T, any, any>
80
+ })
82
81
  }
83
82
 
84
- export function flattenObject(
85
- obj: Record<string, any>,
83
+ export function flattenObject<T>(
84
+ obj: Record<string, any> | output<T>,
86
85
  prefix = '',
87
86
  schema?: ZodObject<any>,
88
87
  ): Record<string, any> {
@@ -128,10 +127,10 @@ function createZodErrorFromPaths(
128
127
  disallowedPaths: string[],
129
128
  errorMessage: string,
130
129
  ): ZodError {
131
- const errors: ZodIssue[] = []
130
+ const errors: z.core.$ZodIssue[] = []
132
131
  for (const path of disallowedPaths) {
133
132
  errors.push({
134
- code: ZodIssueCode.custom,
133
+ code: 'custom',
135
134
  message: `${errorMessage} '${path}'`,
136
135
  path: path.split('.'),
137
136
  })
package/src/generator.ts CHANGED
@@ -2,22 +2,9 @@ import { generatorHandler, GeneratorOptions } from '@prisma/generator-helper'
2
2
  import { logger } from '@prisma/sdk'
3
3
  import { GENERATOR_NAME } from './constants'
4
4
  import { writeFileSafely } from './utils/writeFileSafely'
5
- import { generateFindUniqueFunction } from './helpers/generateFindUnique'
6
5
  import { generateImportPrismaStatement } from './helpers/generateImportPrismaStatement'
7
- import { generateFindManyFunction } from './helpers/generateFindMany'
8
- import { generateFindFirstFunction } from './helpers/generateFindFirst'
9
- import { generateCreateFunction } from './helpers/generateCreate'
10
6
  import { generateRouterFunction } from './helpers/generateRouteFile'
11
- import { generateCreateManyFunction } from './helpers/generateCreateMany'
12
- import { generateUpdateFunction } from './helpers/generateUpdate'
13
- import { generateUpdateManyFunction } from './helpers/generateUpdateMany'
14
- import { generateUpsertFunction } from './helpers/generateUpsert'
15
- import { generateDeleteFunction } from './helpers/generateDelete'
16
- import { generateDeleteManyFunction } from './helpers/generateDeleteMany'
17
- import { generateAggregateFunction } from './helpers/generateAggregate'
18
- import { generateCountFunction } from './helpers/generateCount'
19
- import { generateGroupByFunction } from './helpers/generateGroupBy'
20
-
7
+ import { generateOperationFunction, OPERATION_CONFIGS } from './helpers/generateOperation'
21
8
  import { copyFiles } from './utils/copyFiles'
22
9
 
23
10
  const { version } = require('../package.json')
@@ -45,135 +32,14 @@ generatorHandler({
45
32
  continue
46
33
  }
47
34
 
48
- await writeFileSafely({
49
- content: generateFindUniqueFunction({
50
- model,
51
- prismaImportStatement,
52
- }),
53
- options,
54
- model,
55
- operation: 'FindUnique',
56
- })
57
-
58
- await writeFileSafely({
59
- content: generateFindFirstFunction({
60
- model,
61
- prismaImportStatement,
62
- }),
63
- options,
64
- model,
65
- operation: 'FindFirst',
66
- })
67
-
68
- await writeFileSafely({
69
- content: generateFindManyFunction({
70
- model,
71
- prismaImportStatement,
72
- }),
73
- options,
74
- model,
75
- operation: 'FindMany',
76
- })
77
-
78
- await writeFileSafely({
79
- content: generateCreateFunction({
80
- model,
81
- prismaImportStatement,
82
- }),
83
- options,
84
- model,
85
- operation: 'Create',
86
- })
87
-
88
- await writeFileSafely({
89
- content: generateCreateManyFunction({
90
- model,
91
- prismaImportStatement,
92
- }),
93
- options,
94
- model,
95
- operation: 'CreateMany',
96
- })
97
-
98
- await writeFileSafely({
99
- content: generateUpdateFunction({
100
- model,
101
- prismaImportStatement,
102
- }),
103
- options,
104
- model,
105
- operation: 'Update',
106
- })
107
-
108
- await writeFileSafely({
109
- content: generateUpdateManyFunction({
110
- model,
111
- prismaImportStatement,
112
- }),
113
- options,
114
- model,
115
- operation: 'UpdateMany',
116
- })
117
-
118
- await writeFileSafely({
119
- content: generateUpsertFunction({
120
- model,
121
- prismaImportStatement,
122
- }),
123
- options,
124
- model,
125
- operation: 'Upsert',
126
- })
127
-
128
- await writeFileSafely({
129
- content: generateDeleteFunction({
130
- model,
131
- prismaImportStatement,
132
- }),
133
- options,
134
- model,
135
- operation: 'Delete',
136
- })
137
-
138
- await writeFileSafely({
139
- content: generateDeleteManyFunction({
35
+ for (const cfg of OPERATION_CONFIGS) {
36
+ await writeFileSafely({
37
+ content: generateOperationFunction(cfg, model, prismaImportStatement),
38
+ options,
140
39
  model,
141
- prismaImportStatement,
142
- }),
143
- options,
144
- model,
145
- operation: 'DeleteMany',
146
- })
147
-
148
- await writeFileSafely({
149
- content: generateAggregateFunction({
150
- model,
151
- prismaImportStatement,
152
- }),
153
- options,
154
- model,
155
- operation: 'Aggregate',
156
- })
157
-
158
- await writeFileSafely({
159
- content: generateCountFunction({
160
- model,
161
- prismaImportStatement,
162
- }),
163
- options,
164
- model,
165
- operation: 'Count',
166
- })
167
-
168
- await writeFileSafely({
169
- content: generateGroupByFunction({
170
- model,
171
- prismaImportStatement,
172
- }),
173
- options,
174
- model,
175
- operation: 'GroupBy',
176
- })
40
+ operation: cfg.operation,
41
+ })
42
+ }
177
43
 
178
44
  await writeFileSafely({
179
45
  content: generateRouterFunction({ model }),
@@ -185,4 +51,4 @@ generatorHandler({
185
51
 
186
52
  await copyFiles(options)
187
53
  },
188
- })
54
+ })