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.
- package/README.md +9 -8
- package/dist/generator.js +8 -129
- package/dist/generator.js.map +1 -1
- package/dist/helpers/generateImportPrismaStatement.js +1 -2
- package/dist/helpers/generateImportPrismaStatement.js.map +1 -1
- package/dist/helpers/generateOperation.js +471 -0
- package/dist/helpers/generateOperation.js.map +1 -0
- package/dist/helpers/generateRouteFile.js +19 -2
- package/dist/helpers/generateRouteFile.js.map +1 -1
- package/dist/utils/strings.js +2 -2
- package/dist/utils/strings.js.map +1 -1
- package/package.json +19 -21
- package/src/copy/createOutputValidatorMiddleware.ts +1 -1
- package/src/copy/createValidatorMiddleware.ts +1 -1
- package/src/copy/misc.ts +1 -1
- package/src/copy/parseQueryParams.ts +1 -1
- package/src/copy/routeConfig.ts +5 -3
- package/src/copy/transformZod.ts +15 -16
- package/src/generator.ts +9 -143
- package/src/helpers/generateOperation.ts +515 -0
- package/src/helpers/generateRouteFile.ts +19 -1
- package/dist/helpers/generateAggregate.js +0 -51
- package/dist/helpers/generateAggregate.js.map +0 -1
- package/dist/helpers/generateCount.js +0 -50
- package/dist/helpers/generateCount.js.map +0 -1
- package/dist/helpers/generateCreate.js +0 -49
- package/dist/helpers/generateCreate.js.map +0 -1
- package/dist/helpers/generateCreateMany.js +0 -49
- package/dist/helpers/generateCreateMany.js.map +0 -1
- package/dist/helpers/generateDelete.js +0 -49
- package/dist/helpers/generateDelete.js.map +0 -1
- package/dist/helpers/generateDeleteMany.js +0 -49
- package/dist/helpers/generateDeleteMany.js.map +0 -1
- package/dist/helpers/generateFindFirst.js +0 -56
- package/dist/helpers/generateFindFirst.js.map +0 -1
- package/dist/helpers/generateFindMany.js +0 -56
- package/dist/helpers/generateFindMany.js.map +0 -1
- package/dist/helpers/generateFindUnique.js +0 -56
- package/dist/helpers/generateFindUnique.js.map +0 -1
- package/dist/helpers/generateGroupBy.js +0 -51
- package/dist/helpers/generateGroupBy.js.map +0 -1
- package/dist/helpers/generateUpdate.js +0 -49
- package/dist/helpers/generateUpdate.js.map +0 -1
- package/dist/helpers/generateUpdateMany.js +0 -49
- package/dist/helpers/generateUpdateMany.js.map +0 -1
- package/dist/helpers/generateUpsert.js +0 -49
- package/dist/helpers/generateUpsert.js.map +0 -1
- package/src/helpers/generateAggregate.ts +0 -59
- package/src/helpers/generateCount.ts +0 -58
- package/src/helpers/generateCreate.ts +0 -56
- package/src/helpers/generateCreateMany.ts +0 -55
- package/src/helpers/generateDelete.ts +0 -57
- package/src/helpers/generateDeleteMany.ts +0 -57
- package/src/helpers/generateFindFirst.ts +0 -62
- package/src/helpers/generateFindMany.ts +0 -62
- package/src/helpers/generateFindUnique.ts +0 -62
- package/src/helpers/generateGroupBy.ts +0 -60
- package/src/helpers/generateUpdate.ts +0 -56
- package/src/helpers/generateUpdateMany.ts +0 -56
- package/src/helpers/generateUpsert.ts +0 -57
package/src/copy/routeConfig.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { RequestHandler } from 'express'
|
|
2
|
-
import {
|
|
2
|
+
import { ZodType } from 'zod'
|
|
3
3
|
|
|
4
4
|
export interface ValidatorConfig {
|
|
5
5
|
allow?: string[]
|
|
6
6
|
forbid?: string[]
|
|
7
|
-
schema:
|
|
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
|
+
}
|
package/src/copy/transformZod.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|
35
|
+
export function allow<T extends ZodType>(
|
|
38
36
|
schema: T,
|
|
39
37
|
allowedPaths: string[],
|
|
40
|
-
)
|
|
41
|
-
const
|
|
38
|
+
) {
|
|
39
|
+
const schemaToTransform = schema instanceof z.ZodObject ? schema.strict() : schema
|
|
40
|
+
const rootSchema = schemaToTransform instanceof z.ZodObject ? schemaToTransform : undefined
|
|
42
41
|
|
|
43
|
-
return
|
|
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
|
-
})
|
|
58
|
+
})
|
|
60
59
|
}
|
|
61
60
|
|
|
62
|
-
export function forbid<T extends
|
|
61
|
+
export function forbid<T extends ZodType>(
|
|
63
62
|
schema: T,
|
|
64
63
|
forbiddenPaths: string[],
|
|
65
|
-
)
|
|
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
|
-
})
|
|
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:
|
|
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 {
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
model,
|
|
51
|
-
|
|
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
|
-
|
|
142
|
-
})
|
|
143
|
-
|
|
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
|
+
})
|