prisma-generator-express 1.42.0 → 1.43.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/dist/generators/generateFastifyHandler.js +17 -4
- package/dist/generators/generateFastifyHandler.js.map +1 -1
- package/dist/generators/generateHonoHandler.js +4 -4
- package/dist/generators/generateOperationCore.d.ts +0 -1
- package/dist/generators/generateOperationCore.js +34 -546
- package/dist/generators/generateOperationCore.js.map +1 -1
- package/dist/generators/generateRelationMeta.d.ts +13 -0
- package/dist/generators/generateRelationMeta.js +106 -0
- package/dist/generators/generateRelationMeta.js.map +1 -0
- package/dist/generators/generateRouteConfigType.js +4 -4
- package/dist/generators/generateRouteConfigType.js.map +1 -1
- package/dist/generators/generateRouter.js +51 -13
- package/dist/generators/generateRouter.js.map +1 -1
- package/dist/generators/generateRouterFastify.js +127 -384
- package/dist/generators/generateRouterFastify.js.map +1 -1
- package/dist/generators/generateRouterHono.js +48 -36
- package/dist/generators/generateRouterHono.js.map +1 -1
- package/dist/generators/generateUnifiedHandler.js +24 -8
- package/dist/generators/generateUnifiedHandler.js.map +1 -1
- package/dist/index.js +21 -5
- package/dist/index.js.map +1 -1
- package/dist/utils/copyFiles.js +12 -0
- package/dist/utils/copyFiles.js.map +1 -1
- package/dist/utils/writeFileSafely.js +3 -0
- package/dist/utils/writeFileSafely.js.map +1 -1
- package/package.json +1 -1
- package/src/copy/autoIncludePlanner.ts +299 -0
- package/src/copy/autoIncludeRuntime.ts +307 -0
- package/src/copy/operationRuntime.ts +603 -0
- package/src/copy/routeConfig.express.ts +5 -3
- package/src/copy/routeConfig.fastify.ts +2 -2
- package/src/copy/routeConfig.hono.ts +3 -3
- package/src/copy/routeConfig.ts +20 -9
- package/src/generators/generateFastifyHandler.ts +17 -4
- package/src/generators/generateHonoHandler.ts +4 -4
- package/src/generators/generateOperationCore.ts +34 -546
- package/src/generators/generateRelationMeta.ts +154 -0
- package/src/generators/generateRouteConfigType.ts +5 -5
- package/src/generators/generateRouter.ts +51 -13
- package/src/generators/generateRouterFastify.ts +127 -384
- package/src/generators/generateRouterHono.ts +48 -36
- package/src/generators/generateUnifiedHandler.ts +24 -8
- package/src/index.ts +25 -7
- package/src/utils/copyFiles.ts +13 -0
- package/src/utils/writeFileSafely.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateRouterFastify.js","sourceRoot":"","sources":["../../src/generators/generateRouterFastify.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"generateRouterFastify.js","sourceRoot":"","sources":["../../src/generators/generateRouterFastify.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,17 +55,17 @@ import type { RouteConfig, HonoHookHandler } from '../routeConfig.target${ext}'
|
|
|
55
55
|
import { parseQueryParams } from '../parseQueryParams${ext}'
|
|
56
56
|
import { sanitizeKeys } from '../misc${ext}'
|
|
57
57
|
import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
|
|
58
|
-
import { mapError, transformResult, HttpError } from '../operationRuntime${ext}'
|
|
58
|
+
import { mapError, transformResult, HttpError, type OperationContext } from '../operationRuntime${ext}'
|
|
59
59
|
|
|
60
60
|
${(0, generateRouteConfigType_1.generateRouteConfigType)(modelName, 'HonoHookHandler', guardShapesImport, importStyle, 'hono')}
|
|
61
61
|
|
|
62
62
|
type HonoVariables = {
|
|
63
|
-
prisma:
|
|
64
|
-
postgres?:
|
|
65
|
-
sqlite?:
|
|
63
|
+
prisma: unknown
|
|
64
|
+
postgres?: unknown
|
|
65
|
+
sqlite?: unknown
|
|
66
66
|
parsedQuery?: Record<string, unknown>
|
|
67
67
|
body?: unknown
|
|
68
|
-
routeConfig?:
|
|
68
|
+
routeConfig?: { pagination?: OperationContext['paginationConfig'] }
|
|
69
69
|
guardShape?: Record<string, unknown>
|
|
70
70
|
guardCaller?: string
|
|
71
71
|
resultData?: unknown
|
|
@@ -80,9 +80,15 @@ const MODEL_FIELDS = ${JSON.stringify(fieldsMeta, null, 2)} as const
|
|
|
80
80
|
|
|
81
81
|
const MODEL_ENUMS = ${JSON.stringify(enumsMeta, null, 2)} as const
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
before
|
|
85
|
-
after
|
|
83
|
+
type OperationConfigLike = {
|
|
84
|
+
before?: HonoHookHandler[]
|
|
85
|
+
after?: HonoHookHandler[]
|
|
86
|
+
shape?: Record<string, unknown>
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const defaultOpConfig: OperationConfigLike = {
|
|
90
|
+
before: [],
|
|
91
|
+
after: [],
|
|
86
92
|
}
|
|
87
93
|
|
|
88
94
|
function normalizePrefix(p: string): string {
|
|
@@ -124,7 +130,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
124
130
|
return c.json({ message: err.message }, err.status)
|
|
125
131
|
}
|
|
126
132
|
const httpError = mapError(err)
|
|
127
|
-
return c.json({ message: httpError.message }, httpError.status as
|
|
133
|
+
return c.json({ message: httpError.message }, httpError.status as Parameters<typeof c.json>[1])
|
|
128
134
|
})
|
|
129
135
|
|
|
130
136
|
const parseQueryMw = async (c: Context<HonoEnv>, next: Next): Promise<void> => {
|
|
@@ -153,12 +159,15 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
153
159
|
await next()
|
|
154
160
|
}
|
|
155
161
|
|
|
156
|
-
const setContextMw = (opConfig:
|
|
157
|
-
|
|
162
|
+
const setContextMw = (opConfig: OperationConfigLike) => async (c: Context<HonoEnv>, next: Next): Promise<void> => {
|
|
163
|
+
const paginationConfig = (config as { pagination?: OperationContext['paginationConfig'] }).pagination
|
|
164
|
+
if (paginationConfig) {
|
|
165
|
+
c.set('routeConfig', { pagination: paginationConfig })
|
|
166
|
+
}
|
|
158
167
|
if (opConfig.shape) {
|
|
159
168
|
c.set('guardShape', opConfig.shape)
|
|
160
169
|
const headerName = config.guard?.variantHeader || 'x-api-variant'
|
|
161
|
-
const caller = config.guard?.resolveVariant?.(c as
|
|
170
|
+
const caller = config.guard?.resolveVariant?.(c as Context)
|
|
162
171
|
?? c.req.header(headerName)
|
|
163
172
|
?? undefined
|
|
164
173
|
if (caller) {
|
|
@@ -174,7 +183,10 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
174
183
|
if (data === undefined) {
|
|
175
184
|
return c.json({ message: 'No data set by handler' }, 500)
|
|
176
185
|
}
|
|
177
|
-
return c.json(
|
|
186
|
+
return c.json(
|
|
187
|
+
transformResult(data) as Parameters<typeof c.json>[0],
|
|
188
|
+
status as Parameters<typeof c.json>[1],
|
|
189
|
+
)
|
|
178
190
|
}
|
|
179
191
|
|
|
180
192
|
const wrap = (fn: (c: Context<HonoEnv>) => Promise<void>) =>
|
|
@@ -190,19 +202,19 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
190
202
|
app.get(openapiJsonPath, (c) => {
|
|
191
203
|
const spec = buildModelOpenApi(
|
|
192
204
|
'${modelName}',
|
|
193
|
-
MODEL_FIELDS as
|
|
194
|
-
MODEL_ENUMS as
|
|
205
|
+
MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
|
|
206
|
+
MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
|
|
195
207
|
config,
|
|
196
208
|
{ format: 'json' },
|
|
197
209
|
)
|
|
198
|
-
return c.json(spec as
|
|
210
|
+
return c.json(spec as Parameters<typeof c.json>[0])
|
|
199
211
|
})
|
|
200
212
|
|
|
201
213
|
app.get(openapiYamlPath, (c) => {
|
|
202
214
|
const yaml = buildModelOpenApi(
|
|
203
215
|
'${modelName}',
|
|
204
|
-
MODEL_FIELDS as
|
|
205
|
-
MODEL_ENUMS as
|
|
216
|
+
MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
|
|
217
|
+
MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
|
|
206
218
|
config,
|
|
207
219
|
{ format: 'yaml' },
|
|
208
220
|
) as string
|
|
@@ -211,7 +223,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
211
223
|
}
|
|
212
224
|
|
|
213
225
|
if (config.enableAll || config.findFirst) {
|
|
214
|
-
const opConfig = config.findFirst
|
|
226
|
+
const opConfig: OperationConfigLike = (config.findFirst as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
215
227
|
const { before = [], after = [] } = opConfig
|
|
216
228
|
const path = basePath ? \`\${basePath}/first\` : '/first'
|
|
217
229
|
app.get(path, parseQueryMw, setContextMw(opConfig), ...before, wrap(${prefix}FindFirst), ...after, sendResultMw)
|
|
@@ -221,7 +233,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
221
233
|
}
|
|
222
234
|
|
|
223
235
|
if (config.enableAll || config.findFirstOrThrow) {
|
|
224
|
-
const opConfig = config.findFirstOrThrow
|
|
236
|
+
const opConfig: OperationConfigLike = (config.findFirstOrThrow as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
225
237
|
const { before = [], after = [] } = opConfig
|
|
226
238
|
const path = basePath ? \`\${basePath}/first/strict\` : '/first/strict'
|
|
227
239
|
app.get(path, parseQueryMw, setContextMw(opConfig), ...before, wrap(${prefix}FindFirstOrThrow), ...after, sendResultMw)
|
|
@@ -231,7 +243,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
231
243
|
}
|
|
232
244
|
|
|
233
245
|
if (config.enableAll || config.findManyPaginated) {
|
|
234
|
-
const opConfig = config.findManyPaginated
|
|
246
|
+
const opConfig: OperationConfigLike = (config.findManyPaginated as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
235
247
|
const { before = [], after = [] } = opConfig
|
|
236
248
|
const path = basePath ? \`\${basePath}/paginated\` : '/paginated'
|
|
237
249
|
app.get(path, parseQueryMw, setContextMw(opConfig), ...before, wrap(${prefix}FindManyPaginated), ...after, sendResultMw)
|
|
@@ -241,7 +253,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
241
253
|
}
|
|
242
254
|
|
|
243
255
|
if (config.enableAll || config.aggregate) {
|
|
244
|
-
const opConfig = config.aggregate
|
|
256
|
+
const opConfig: OperationConfigLike = (config.aggregate as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
245
257
|
const { before = [], after = [] } = opConfig
|
|
246
258
|
const path = basePath ? \`\${basePath}/aggregate\` : '/aggregate'
|
|
247
259
|
app.get(path, parseQueryMw, setContextMw(opConfig), ...before, wrap(${prefix}Aggregate), ...after, sendResultMw)
|
|
@@ -251,7 +263,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
251
263
|
}
|
|
252
264
|
|
|
253
265
|
if (config.enableAll || config.count) {
|
|
254
|
-
const opConfig = config.count
|
|
266
|
+
const opConfig: OperationConfigLike = (config.count as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
255
267
|
const { before = [], after = [] } = opConfig
|
|
256
268
|
const path = basePath ? \`\${basePath}/count\` : '/count'
|
|
257
269
|
app.get(path, parseQueryMw, setContextMw(opConfig), ...before, wrap(${prefix}Count), ...after, sendResultMw)
|
|
@@ -261,7 +273,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
261
273
|
}
|
|
262
274
|
|
|
263
275
|
if (config.enableAll || config.groupBy) {
|
|
264
|
-
const opConfig = config.groupBy
|
|
276
|
+
const opConfig: OperationConfigLike = (config.groupBy as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
265
277
|
const { before = [], after = [] } = opConfig
|
|
266
278
|
const path = basePath ? \`\${basePath}/groupby\` : '/groupby'
|
|
267
279
|
app.get(path, parseQueryMw, setContextMw(opConfig), ...before, wrap(${prefix}GroupBy), ...after, sendResultMw)
|
|
@@ -271,7 +283,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
271
283
|
}
|
|
272
284
|
|
|
273
285
|
if (config.enableAll || config.findUniqueOrThrow) {
|
|
274
|
-
const opConfig = config.findUniqueOrThrow
|
|
286
|
+
const opConfig: OperationConfigLike = (config.findUniqueOrThrow as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
275
287
|
const { before = [], after = [] } = opConfig
|
|
276
288
|
const path = basePath ? \`\${basePath}/unique/strict\` : '/unique/strict'
|
|
277
289
|
app.get(path, parseQueryMw, setContextMw(opConfig), ...before, wrap(${prefix}FindUniqueOrThrow), ...after, sendResultMw)
|
|
@@ -281,7 +293,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
281
293
|
}
|
|
282
294
|
|
|
283
295
|
if (config.enableAll || config.findUnique) {
|
|
284
|
-
const opConfig = config.findUnique
|
|
296
|
+
const opConfig: OperationConfigLike = (config.findUnique as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
285
297
|
const { before = [], after = [] } = opConfig
|
|
286
298
|
const path = basePath ? \`\${basePath}/unique\` : '/unique'
|
|
287
299
|
app.get(path, parseQueryMw, setContextMw(opConfig), ...before, wrap(${prefix}FindUnique), ...after, sendResultMw)
|
|
@@ -291,7 +303,7 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
291
303
|
}
|
|
292
304
|
|
|
293
305
|
if (config.enableAll || config.findMany) {
|
|
294
|
-
const opConfig = config.findMany
|
|
306
|
+
const opConfig: OperationConfigLike = (config.findMany as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
295
307
|
const { before = [], after = [] } = opConfig
|
|
296
308
|
const path = basePath || '/'
|
|
297
309
|
app.get(path, parseQueryMw, setContextMw(opConfig), ...before, wrap(${prefix}FindMany), ...after, sendResultMw)
|
|
@@ -302,63 +314,63 @@ export function ${routerFunctionName}<TCtx = unknown>(
|
|
|
302
314
|
}
|
|
303
315
|
|
|
304
316
|
if (config.enableAll || config.createManyAndReturn) {
|
|
305
|
-
const opConfig = config.createManyAndReturn
|
|
317
|
+
const opConfig: OperationConfigLike = (config.createManyAndReturn as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
306
318
|
const { before = [], after = [] } = opConfig
|
|
307
319
|
const path = basePath ? \`\${basePath}/many/return\` : '/many/return'
|
|
308
320
|
app.post(path, parseBodyMw, setContextMw(opConfig), ...before, wrap(${prefix}CreateManyAndReturn), ...after, sendResultMw)
|
|
309
321
|
}
|
|
310
322
|
|
|
311
323
|
if (config.enableAll || config.createMany) {
|
|
312
|
-
const opConfig = config.createMany
|
|
324
|
+
const opConfig: OperationConfigLike = (config.createMany as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
313
325
|
const { before = [], after = [] } = opConfig
|
|
314
326
|
const path = basePath ? \`\${basePath}/many\` : '/many'
|
|
315
327
|
app.post(path, parseBodyMw, setContextMw(opConfig), ...before, wrap(${prefix}CreateMany), ...after, sendResultMw)
|
|
316
328
|
}
|
|
317
329
|
|
|
318
330
|
if (config.enableAll || config.create) {
|
|
319
|
-
const opConfig = config.create
|
|
331
|
+
const opConfig: OperationConfigLike = (config.create as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
320
332
|
const { before = [], after = [] } = opConfig
|
|
321
333
|
const path = basePath || '/'
|
|
322
334
|
app.post(path, parseBodyMw, setContextMw(opConfig), ...before, wrap(${prefix}Create), ...after, sendResultMw)
|
|
323
335
|
}
|
|
324
336
|
|
|
325
337
|
if (config.enableAll || config.updateManyAndReturn) {
|
|
326
|
-
const opConfig = config.updateManyAndReturn
|
|
338
|
+
const opConfig: OperationConfigLike = (config.updateManyAndReturn as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
327
339
|
const { before = [], after = [] } = opConfig
|
|
328
340
|
const path = basePath ? \`\${basePath}/many/return\` : '/many/return'
|
|
329
341
|
app.put(path, parseBodyMw, setContextMw(opConfig), ...before, wrap(${prefix}UpdateManyAndReturn), ...after, sendResultMw)
|
|
330
342
|
}
|
|
331
343
|
|
|
332
344
|
if (config.enableAll || config.updateMany) {
|
|
333
|
-
const opConfig = config.updateMany
|
|
345
|
+
const opConfig: OperationConfigLike = (config.updateMany as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
334
346
|
const { before = [], after = [] } = opConfig
|
|
335
347
|
const path = basePath ? \`\${basePath}/many\` : '/many'
|
|
336
348
|
app.put(path, parseBodyMw, setContextMw(opConfig), ...before, wrap(${prefix}UpdateMany), ...after, sendResultMw)
|
|
337
349
|
}
|
|
338
350
|
|
|
339
351
|
if (config.enableAll || config.update) {
|
|
340
|
-
const opConfig = config.update
|
|
352
|
+
const opConfig: OperationConfigLike = (config.update as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
341
353
|
const { before = [], after = [] } = opConfig
|
|
342
354
|
const path = basePath || '/'
|
|
343
355
|
app.put(path, parseBodyMw, setContextMw(opConfig), ...before, wrap(${prefix}Update), ...after, sendResultMw)
|
|
344
356
|
}
|
|
345
357
|
|
|
346
358
|
if (config.enableAll || config.upsert) {
|
|
347
|
-
const opConfig = config.upsert
|
|
359
|
+
const opConfig: OperationConfigLike = (config.upsert as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
348
360
|
const { before = [], after = [] } = opConfig
|
|
349
361
|
const path = basePath || '/'
|
|
350
362
|
app.patch(path, parseBodyMw, setContextMw(opConfig), ...before, wrap(${prefix}Upsert), ...after, sendResultMw)
|
|
351
363
|
}
|
|
352
364
|
|
|
353
365
|
if (config.enableAll || config.deleteMany) {
|
|
354
|
-
const opConfig = config.deleteMany
|
|
366
|
+
const opConfig: OperationConfigLike = (config.deleteMany as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
355
367
|
const { before = [], after = [] } = opConfig
|
|
356
368
|
const path = basePath ? \`\${basePath}/many\` : '/many'
|
|
357
369
|
app.delete(path, parseBodyMw, setContextMw(opConfig), ...before, wrap(${prefix}DeleteMany), ...after, sendResultMw)
|
|
358
370
|
}
|
|
359
371
|
|
|
360
372
|
if (config.enableAll || config.delete) {
|
|
361
|
-
const opConfig = config.delete
|
|
373
|
+
const opConfig: OperationConfigLike = (config.delete as OperationConfigLike | undefined) ?? defaultOpConfig
|
|
362
374
|
const { before = [], after = [] } = opConfig
|
|
363
375
|
const path = basePath || '/'
|
|
364
376
|
app.delete(path, parseBodyMw, setContextMw(opConfig), ...before, wrap(${prefix}Delete), ...after, sendResultMw)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateRouterHono.js","sourceRoot":"","sources":["../../src/generators/generateRouterHono.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"generateRouterHono.js","sourceRoot":"","sources":["../../src/generators/generateRouterHono.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ export async function ${exportName}(
|
|
|
40
40
|
next: NextFunction,
|
|
41
41
|
) {
|
|
42
42
|
try {
|
|
43
|
-
res.locals.data = await core.${coreFnName(op)}(buildContext(req, res))
|
|
43
|
+
;(res.locals as LocalsBag).data = await core.${coreFnName(op)}(buildContext(req, res))
|
|
44
44
|
next()
|
|
45
45
|
} catch (error: unknown) {
|
|
46
46
|
next(mapError(error))
|
|
@@ -51,16 +51,32 @@ export async function ${exportName}(
|
|
|
51
51
|
import * as core from './${modelName}Core'
|
|
52
52
|
import { OperationContext, mapError } from '../operationRuntime'
|
|
53
53
|
|
|
54
|
+
type ExtendedRequest = Request & {
|
|
55
|
+
prisma?: unknown
|
|
56
|
+
postgres?: unknown
|
|
57
|
+
sqlite?: unknown
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
type LocalsBag = {
|
|
61
|
+
parsedQuery?: Record<string, unknown>
|
|
62
|
+
routeConfig?: { pagination?: unknown }
|
|
63
|
+
guardShape?: Record<string, unknown>
|
|
64
|
+
guardCaller?: string
|
|
65
|
+
data?: unknown
|
|
66
|
+
}
|
|
67
|
+
|
|
54
68
|
function buildContext(req: Request, res: Response): OperationContext {
|
|
69
|
+
const extReq = req as ExtendedRequest
|
|
70
|
+
const locals = res.locals as LocalsBag
|
|
55
71
|
return {
|
|
56
|
-
prisma:
|
|
57
|
-
postgres:
|
|
58
|
-
sqlite:
|
|
59
|
-
parsedQuery:
|
|
72
|
+
prisma: extReq.prisma,
|
|
73
|
+
postgres: extReq.postgres,
|
|
74
|
+
sqlite: extReq.sqlite,
|
|
75
|
+
parsedQuery: locals.parsedQuery,
|
|
60
76
|
body: req.body,
|
|
61
|
-
guardShape:
|
|
62
|
-
guardCaller:
|
|
63
|
-
paginationConfig:
|
|
77
|
+
guardShape: locals.guardShape,
|
|
78
|
+
guardCaller: locals.guardCaller,
|
|
79
|
+
paginationConfig: (locals.routeConfig?.pagination) as OperationContext['paginationConfig'],
|
|
64
80
|
}
|
|
65
81
|
}
|
|
66
82
|
${handlers}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateUnifiedHandler.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedHandler.ts"],"names":[],"mappings":";;AAoCA,
|
|
1
|
+
{"version":3,"file":"generateUnifiedHandler.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedHandler.ts"],"names":[],"mappings":";;AAoCA,wDAwDC;AA3FD,8CAA8C;AAM9C,MAAM,aAAa,GAA2B;IAC5C,MAAM,EAAE,cAAc;CACvB,CAAA;AAED,SAAS,UAAU,CAAC,EAAU;IAC5B,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,OAAO,GAAG;IACd,UAAU;IACV,WAAW;IACX,kBAAkB;IAClB,YAAY;IACZ,mBAAmB;IACnB,mBAAmB;IACnB,QAAQ;IACR,YAAY;IACZ,qBAAqB;IACrB,QAAQ;IACR,YAAY;IACZ,qBAAqB;IACrB,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,OAAO;IACP,SAAS;CACV,CAAA;AAED,SAAgB,sBAAsB,CAAC,OAA8B;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;IACpC,MAAM,MAAM,GAAG,IAAA,qBAAW,EAAC,SAAS,CAAC,CAAA;IAErC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAClC,MAAM,UAAU,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAEzE,OAAO;wBACa,UAAU;;;;;;mDAMiB,UAAU,CAAC,EAAE,CAAC;;;;;EAK/D,CAAA;IACA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;2BACkB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BlC,QAAQ;CACT,CAAA;AACD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ const generateUnifiedScalarUI_1 = require("./generators/generateUnifiedScalarUI"
|
|
|
15
15
|
const generateUnifiedDocs_1 = require("./generators/generateUnifiedDocs");
|
|
16
16
|
const generateQueryBuilderHelper_1 = require("./generators/generateQueryBuilderHelper");
|
|
17
17
|
const generateOperationCore_1 = require("./generators/generateOperationCore");
|
|
18
|
+
const generateRelationMeta_1 = require("./generators/generateRelationMeta");
|
|
18
19
|
const generateImportPrismaStatement_1 = require("./generators/generateImportPrismaStatement");
|
|
19
20
|
const writeFileSafely_1 = require("./utils/writeFileSafely");
|
|
20
21
|
const copyFiles_1 = require("./utils/copyFiles");
|
|
@@ -49,15 +50,11 @@ function getTarget(options) {
|
|
|
49
50
|
console.log(` Output: ${options.generator.output?.value}`);
|
|
50
51
|
console.log(` Import style: ${importStyle}`);
|
|
51
52
|
await (0, copyFiles_1.copyFiles)(options, target, importStyle);
|
|
52
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
53
|
-
content: (0, generateOperationCore_1.generateOperationRuntime)(importStyle),
|
|
54
|
-
options,
|
|
55
|
-
operation: 'operationRuntime',
|
|
56
|
-
});
|
|
57
53
|
const modelNames = [];
|
|
58
54
|
const generateHandler = target === 'fastify' ? generateFastifyHandler_1.generateFastifyHandler :
|
|
59
55
|
target === 'hono' ? generateHonoHandler_1.generateHonoHandler :
|
|
60
56
|
generateUnifiedHandler_1.generateUnifiedHandler;
|
|
57
|
+
const allModels = options.dmmf.datamodel.models;
|
|
61
58
|
for (const model of options.dmmf.datamodel.models) {
|
|
62
59
|
if (model.documentation && model.documentation.includes('generator off')) {
|
|
63
60
|
console.log(` Skipping: ${model.name} (generator off)`);
|
|
@@ -116,6 +113,25 @@ function getTarget(options) {
|
|
|
116
113
|
model: model,
|
|
117
114
|
operation: 'Docs',
|
|
118
115
|
});
|
|
116
|
+
if (target === 'express') {
|
|
117
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
118
|
+
content: (0, generateRelationMeta_1.generateRelationMeta)({
|
|
119
|
+
model: model,
|
|
120
|
+
allModels,
|
|
121
|
+
importStyle,
|
|
122
|
+
}),
|
|
123
|
+
options,
|
|
124
|
+
model: model,
|
|
125
|
+
operation: 'Relations',
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (target === 'express') {
|
|
130
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
131
|
+
content: (0, generateRelationMeta_1.generateRelationModelsIndex)({ modelNames, importStyle }),
|
|
132
|
+
options,
|
|
133
|
+
operation: 'relationModelsIndex',
|
|
134
|
+
});
|
|
119
135
|
}
|
|
120
136
|
await (0, writeFileSafely_1.writeFileSafely)({
|
|
121
137
|
content: (0, generateUnifiedDocs_1.generateUnifiedDocs)(modelNames, target, importStyle),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,+DAAmF;AACnF,gDAAuB;AACvB,gFAA4E;AAC5E,gFAA4E;AAC5E,0EAAsE;AACtE,gEAAoE;AACpE,8EAAkF;AAClF,wEAA4E;AAC5E,kFAA8E;AAC9E,0EAAsE;AACtE,wFAAoF;AACpF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/copyFiles.js
CHANGED
|
@@ -44,6 +44,11 @@ const SHARED_FILES = [
|
|
|
44
44
|
'misc.ts',
|
|
45
45
|
'routeConfig.ts',
|
|
46
46
|
'docsRenderer.ts',
|
|
47
|
+
'operationRuntime.ts',
|
|
48
|
+
];
|
|
49
|
+
const EXPRESS_ONLY_FILES = [
|
|
50
|
+
'autoIncludePlanner.ts',
|
|
51
|
+
'autoIncludeRuntime.ts',
|
|
47
52
|
];
|
|
48
53
|
function resolveTemplateDir(subpath) {
|
|
49
54
|
const fromSrc = path.join(__dirname, '..', '..', 'src', subpath);
|
|
@@ -112,6 +117,13 @@ async function copyFiles(options, target, importStyle) {
|
|
|
112
117
|
if (err)
|
|
113
118
|
errors.push(err);
|
|
114
119
|
}
|
|
120
|
+
if (target === 'express') {
|
|
121
|
+
for (const file of EXPRESS_ONLY_FILES) {
|
|
122
|
+
const err = copyFileSync(copyBase, outputPath, file, importStyle, { required: true });
|
|
123
|
+
if (err)
|
|
124
|
+
errors.push(err);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
115
127
|
const targetConfigFile = 'routeConfig.' + target + '.ts';
|
|
116
128
|
const err = copyFileSync(copyBase, outputPath, targetConfigFile, importStyle, {
|
|
117
129
|
required: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyFiles.js","sourceRoot":"","sources":["../../src/utils/copyFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"copyFiles.js","sourceRoot":"","sources":["../../src/utils/copyFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,9 @@ async function writeFileSafely({ content, options, model, operation, }) {
|
|
|
62
62
|
case 'operationRuntime':
|
|
63
63
|
filePath = path.join(outputPath, 'operationRuntime.ts');
|
|
64
64
|
break;
|
|
65
|
+
case 'relationModelsIndex':
|
|
66
|
+
filePath = path.join(outputPath, 'relationModels.ts');
|
|
67
|
+
break;
|
|
65
68
|
default:
|
|
66
69
|
if (!model)
|
|
67
70
|
throw new Error('Model required for operation: ' + operation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeFileSafely.js","sourceRoot":"","sources":["../../src/utils/writeFileSafely.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,
|
|
1
|
+
{"version":3,"file":"writeFileSafely.js","sourceRoot":"","sources":["../../src/utils/writeFileSafely.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,0CA4CC;AA/DD,uCAAwB;AACxB,2CAA4B;AAC5B,wDAA+B;AAS/B,IAAI,gBAAqD,CAAA;AAEzD,KAAK,UAAU,kBAAkB;IAC/B,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAA;IAC3D,gBAAgB,GAAG,MAAM,kBAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAC9D,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,EACpC,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,GACQ;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAA;IAClD,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAE3D,IAAI,QAAgB,CAAA;IACpB,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,cAAc;YACjB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;YACnD,MAAK;QACP,KAAK,cAAc;YACjB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;YACnD,MAAK;QACP,KAAK,kBAAkB;YACrB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;YACvD,MAAK;QACP,KAAK,qBAAqB;YACxB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;YACrD,MAAK;QACP;YACE,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,SAAS,CAAC,CAAA;YACzE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,SAAS,KAAK,CAAC,CAAA;IAChF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvE,IAAI,gBAAwB,CAAA;IAC5B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,kBAAkB,EAAE,CAAA;QAClD,gBAAgB,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;YAChD,GAAG,eAAe;YAClB,MAAM,EAAE,YAAY;SACrB,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,qCAAqC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,uBAAuB,CAAC,CAAA;QACvG,gBAAgB,GAAG,OAAO,CAAA;IAC5B,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;AAC9C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prisma-generator-express",
|
|
3
3
|
"description": "Prisma generator for Express, Fastify, and Hono CRUD APIs with OpenAPI documentation",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.43.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "MIT",
|