prisma-generator-express 1.7.2 → 1.8.1
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 +50 -21
- package/dist/generator.js +6 -0
- package/dist/generator.js.map +1 -1
- package/dist/helpers/generateRouteConfigType.js +33 -0
- package/dist/helpers/generateRouteConfigType.js.map +1 -0
- package/dist/helpers/generateRouteFile.js +96 -121
- package/dist/helpers/generateRouteFile.js.map +1 -1
- package/dist/utils/writeFileSafely.js +2 -2
- package/dist/utils/writeFileSafely.js.map +1 -1
- package/package.json +1 -1
- package/src/generator.ts +7 -0
- package/src/helpers/generateRouteConfigType.ts +28 -0
- package/src/helpers/generateRouteFile.ts +96 -121
- package/src/utils/writeFileSafely.ts +4 -3
package/README.md
CHANGED
|
@@ -111,38 +111,67 @@ The `UserFindUnique` function will fetch the user details from the database, val
|
|
|
111
111
|
The library will create functions to generate routers per each model in schema. Each route can accept middleware that will be injected right before generated handler is invoked. You can use it to modify/remove/validate request payload. The output validation can be also attached to `req` object on this step.
|
|
112
112
|
|
|
113
113
|
```ts
|
|
114
|
-
import express from 'express'
|
|
115
|
-
import {
|
|
116
|
-
|
|
114
|
+
import express, { json } from 'express'
|
|
115
|
+
import type { Response, Request, NextFunction, RequestHandler } from 'express'
|
|
116
|
+
|
|
117
|
+
import { orderItemRouter } from '../prisma/generated/express/orderItem'
|
|
118
|
+
import RouteConfig from '../prisma/generated/express/RouteConfig'
|
|
119
|
+
import { PrismaClient } from '../prisma/generated/client'
|
|
117
120
|
|
|
118
121
|
const app = express()
|
|
119
122
|
|
|
120
|
-
|
|
123
|
+
const prisma = new PrismaClient()
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Middleware to attach Prisma client instance to the request object.
|
|
127
|
+
* This ensures that Prisma client is available in all subsequent middleware and route handlers.
|
|
128
|
+
*/
|
|
129
|
+
const addPrisma: RequestHandler = (
|
|
121
130
|
req: Request,
|
|
122
131
|
res: Response,
|
|
123
132
|
next: NextFunction,
|
|
124
133
|
) => {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
req.prisma = prisma
|
|
135
|
+
req.omitOutputValidation = true
|
|
136
|
+
next()
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Before middleware to set a custom property on the request object.
|
|
141
|
+
* Demonstrates how to add custom properties to the request object to be used in later middleware or route handlers.
|
|
142
|
+
*/
|
|
143
|
+
const beforeFindMany: RequestHandler = (
|
|
144
|
+
req: Request,
|
|
145
|
+
res: Response,
|
|
146
|
+
next: NextFunction,
|
|
147
|
+
) => {
|
|
148
|
+
;(req as any).passToNext = true
|
|
149
|
+
next()
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* After middleware placeholder for any post-processing after the main route handler.
|
|
154
|
+
* This example just calls next() but can be extended to perform actions like logging or response modification.
|
|
155
|
+
*/
|
|
156
|
+
const afterFindMany: RequestHandler = (
|
|
157
|
+
req: Request,
|
|
158
|
+
res: Response,
|
|
159
|
+
next: NextFunction,
|
|
160
|
+
) => {
|
|
161
|
+
console.log('req.locals?.data :>> ', req.locals?.data)
|
|
162
|
+
next()
|
|
137
163
|
}
|
|
138
164
|
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
165
|
+
const someRouterConfig: RouteConfig<RequestHandler> = {
|
|
166
|
+
findMany: {
|
|
167
|
+
before: [beforeFindMany],
|
|
168
|
+
after: [afterFindMany],
|
|
169
|
+
},
|
|
170
|
+
addModelPrefix: true,
|
|
171
|
+
enableAll: true,
|
|
142
172
|
}
|
|
143
173
|
|
|
144
|
-
|
|
145
|
-
app.use('/users', UserRouter(userRouterConfig))
|
|
174
|
+
app.use(addPrisma, orderItemRouter(someRouterConfig))
|
|
146
175
|
|
|
147
176
|
app.listen(3000, () => {
|
|
148
177
|
console.log('Server is running on http://localhost:3000')
|
package/dist/generator.js
CHANGED
|
@@ -19,6 +19,7 @@ const generateDeleteMany_1 = require("./helpers/generateDeleteMany");
|
|
|
19
19
|
const generateAggregate_1 = require("./helpers/generateAggregate");
|
|
20
20
|
const generateCount_1 = require("./helpers/generateCount");
|
|
21
21
|
const generateGroupBy_1 = require("./helpers/generateGroupBy");
|
|
22
|
+
const generateRouteConfigType_1 = require("./helpers/generateRouteConfigType");
|
|
22
23
|
const { version } = require('../package.json');
|
|
23
24
|
(0, generator_helper_1.generatorHandler)({
|
|
24
25
|
onManifest() {
|
|
@@ -156,6 +157,11 @@ const { version } = require('../package.json');
|
|
|
156
157
|
operation: 'index',
|
|
157
158
|
});
|
|
158
159
|
}
|
|
160
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
161
|
+
content: (0, generateRouteConfigType_1.generateRouteConfigType)(),
|
|
162
|
+
options,
|
|
163
|
+
operation: 'RouteConfig',
|
|
164
|
+
});
|
|
159
165
|
},
|
|
160
166
|
});
|
|
161
167
|
//# sourceMappingURL=generator.js.map
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":";;AAAA,+DAA6E;AAC7E,qCAAoC;AACpC,2CAA4C;AAC5C,6DAAyD;AACzD,qEAAyE;AACzE,2FAAuF;AACvF,iEAAqE;AACrE,mEAAuE;AACvE,6DAAiE;AACjE,mEAAoE;AACpE,qEAAyE;AACzE,6DAAiE;AACjE,qEAAyE;AACzE,6DAAiE;AACjE,6DAAiE;AACjE,qEAAyE;AACzE,mEAAuE;AACvE,2DAA+D;AAC/D,+DAAmE;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateRouteConfigType = void 0;
|
|
4
|
+
function generateRouteConfigType() {
|
|
5
|
+
return `import { RequestHandler } from 'express';
|
|
6
|
+
|
|
7
|
+
interface MiddlewareConfig<M> {
|
|
8
|
+
before?: M[];
|
|
9
|
+
after?: RequestHandler[];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface RouteConfig<M> {
|
|
13
|
+
findFirst?: MiddlewareConfig<M>;
|
|
14
|
+
findMany?: MiddlewareConfig<M>;
|
|
15
|
+
findUnique?: MiddlewareConfig<M>;
|
|
16
|
+
create?: MiddlewareConfig<M>;
|
|
17
|
+
createMany?: MiddlewareConfig<M>;
|
|
18
|
+
update?: MiddlewareConfig<M>;
|
|
19
|
+
updateMany?: MiddlewareConfig<M>;
|
|
20
|
+
upsert?: MiddlewareConfig<M>;
|
|
21
|
+
delete?: MiddlewareConfig<M>;
|
|
22
|
+
deleteMany?: MiddlewareConfig<M>;
|
|
23
|
+
aggregate?: MiddlewareConfig<M>;
|
|
24
|
+
count?: MiddlewareConfig<M>;
|
|
25
|
+
groupBy?: MiddlewareConfig<M>;
|
|
26
|
+
addModelPrefix?: boolean;
|
|
27
|
+
enableAll?: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export default RouteConfig;`;
|
|
31
|
+
}
|
|
32
|
+
exports.generateRouteConfigType = generateRouteConfigType;
|
|
33
|
+
//# sourceMappingURL=generateRouteConfigType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateRouteConfigType.js","sourceRoot":"","sources":["../../src/helpers/generateRouteConfigType.ts"],"names":[],"mappings":";;;AAAA,SAAgB,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;8BAyBqB,CAAA;AAC9B,CAAC;AA3BD,0DA2BC"}
|
|
@@ -6,171 +6,146 @@ function generateRouterFunction({ model, }) {
|
|
|
6
6
|
const routerFunctionName = `${modelName}Router`;
|
|
7
7
|
return `
|
|
8
8
|
import express, { RequestHandler } from 'express';
|
|
9
|
-
import { ${modelName}FindFirst
|
|
10
|
-
import { ${modelName}FindMany
|
|
11
|
-
import { ${modelName}FindUnique
|
|
12
|
-
import { ${modelName}Create
|
|
13
|
-
import { ${modelName}CreateMany
|
|
14
|
-
import { ${modelName}Update
|
|
15
|
-
import { ${modelName}UpdateMany
|
|
16
|
-
import { ${modelName}Upsert
|
|
17
|
-
import { ${modelName}Delete
|
|
18
|
-
import { ${modelName}DeleteMany
|
|
19
|
-
import { ${modelName}Aggregate
|
|
20
|
-
import { ${modelName}Count
|
|
21
|
-
import { ${modelName}GroupBy
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
findManyNextMiddleware?: RequestHandler[]
|
|
29
|
-
|
|
30
|
-
findUniqueMiddleware?: FindUniqueMiddleware[]
|
|
31
|
-
findUniqueNextMiddleware?: RequestHandler[]
|
|
32
|
-
|
|
33
|
-
createMiddleware?: CreateMiddleware[]
|
|
34
|
-
createNextMiddleware?: RequestHandler[]
|
|
35
|
-
|
|
36
|
-
createManyMiddleware?: CreateManyMiddleware[]
|
|
37
|
-
createManyNextMiddleware?: RequestHandler[]
|
|
38
|
-
|
|
39
|
-
updateMiddleware?: UpdateMiddleware[]
|
|
40
|
-
updateNextMiddleware?: RequestHandler[]
|
|
41
|
-
|
|
42
|
-
updateManyMiddleware?: UpdateManyMiddleware[]
|
|
43
|
-
updateManyNextMiddleware?: RequestHandler[]
|
|
44
|
-
|
|
45
|
-
upsertMiddleware?: UpsertMiddleware[]
|
|
46
|
-
upsertNextMiddleware?: RequestHandler[]
|
|
47
|
-
|
|
48
|
-
deleteMiddleware?: DeleteMiddleware[]
|
|
49
|
-
deleteNextMiddleware?: RequestHandler[]
|
|
50
|
-
|
|
51
|
-
deleteManyMiddleware?: DeleteManyMiddleware[]
|
|
52
|
-
deleteManyNextMiddleware?: RequestHandler[]
|
|
53
|
-
|
|
54
|
-
aggregateMiddleware?: AggregateMiddleware[]
|
|
55
|
-
aggregateNextMiddleware?: RequestHandler[]
|
|
56
|
-
|
|
57
|
-
countMiddleware?: CountMiddleware[]
|
|
58
|
-
countNextMiddleware?: RequestHandler[]
|
|
59
|
-
|
|
60
|
-
groupByMiddleware?: GroupByMiddleware[]
|
|
61
|
-
groupByNextMiddleware?: RequestHandler[]
|
|
62
|
-
}
|
|
9
|
+
import { ${modelName}FindFirst } from './${modelName}FindFirst';
|
|
10
|
+
import { ${modelName}FindMany } from './${modelName}FindMany';
|
|
11
|
+
import { ${modelName}FindUnique } from './${modelName}FindUnique';
|
|
12
|
+
import { ${modelName}Create } from './${modelName}Create';
|
|
13
|
+
import { ${modelName}CreateMany } from './${modelName}CreateMany';
|
|
14
|
+
import { ${modelName}Update } from './${modelName}Update';
|
|
15
|
+
import { ${modelName}UpdateMany } from './${modelName}UpdateMany';
|
|
16
|
+
import { ${modelName}Upsert } from './${modelName}Upsert';
|
|
17
|
+
import { ${modelName}Delete } from './${modelName}Delete';
|
|
18
|
+
import { ${modelName}DeleteMany } from './${modelName}DeleteMany';
|
|
19
|
+
import { ${modelName}Aggregate } from './${modelName}Aggregate';
|
|
20
|
+
import { ${modelName}Count } from './${modelName}Count';
|
|
21
|
+
import { ${modelName}GroupBy } from './${modelName}GroupBy';
|
|
22
|
+
import { RouteConfig } from "../RouteConfig";
|
|
23
|
+
|
|
24
|
+
const defaultBeforeAfter = {
|
|
25
|
+
before: [] as RequestHandler[],
|
|
26
|
+
after: [] as RequestHandler[],
|
|
27
|
+
};
|
|
63
28
|
|
|
64
29
|
/**
|
|
65
30
|
* Generates an Express router for ${modelName} model.
|
|
66
31
|
* @param config Contains optional middleware to enable routes.
|
|
67
32
|
* @returns {express.Router}
|
|
68
33
|
*/
|
|
69
|
-
export function ${routerFunctionName}(config: RouteConfig) {
|
|
34
|
+
export function ${routerFunctionName}(config: RouteConfig<RequestHandler>) {
|
|
70
35
|
const router = express.Router();
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
36
|
+
const basePath = config.addModelPrefix ? '/${modelName.toLowerCase()}' : '';
|
|
37
|
+
|
|
38
|
+
const setupRoute = (
|
|
39
|
+
path: string,
|
|
40
|
+
method: "all" | "get" | "post" | "put" | "delete" | "patch" | "options" | "head",
|
|
41
|
+
middlewares: RequestHandler[],
|
|
42
|
+
handler: RequestHandler
|
|
43
|
+
) => {
|
|
44
|
+
router[method](basePath + path, ...middlewares, handler);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
if (config.enableAll || config?.findFirst) {
|
|
48
|
+
const { before = [], after = [] } = config.findFirst || defaultBeforeAfter;
|
|
49
|
+
setupRoute('/first', 'get', before, ${modelName}FindFirst as RequestHandler);
|
|
50
|
+
if (after.length) {
|
|
51
|
+
router.use(basePath + '/first', ...after);
|
|
76
52
|
}
|
|
77
|
-
router.get('/first', ...middlewares as FindFirstMiddleware[]);
|
|
78
53
|
}
|
|
79
54
|
|
|
80
|
-
if (config
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
55
|
+
if (config.enableAll || config?.findMany) {
|
|
56
|
+
const { before = [], after = [] } = config.findMany || defaultBeforeAfter;
|
|
57
|
+
setupRoute('/', 'get', before, ${modelName}FindMany as RequestHandler);
|
|
58
|
+
if (after.length) {
|
|
59
|
+
router.use(basePath + '/', ...after);
|
|
84
60
|
}
|
|
85
|
-
router.get('/', ...middlewares as FindManyMiddleware[]);
|
|
86
61
|
}
|
|
87
62
|
|
|
88
|
-
if (config
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
63
|
+
if (config.enableAll || config?.findUnique) {
|
|
64
|
+
const { before = [], after = [] } = config.findUnique || defaultBeforeAfter;
|
|
65
|
+
setupRoute('/:id', 'get', before, ${modelName}FindUnique as any);
|
|
66
|
+
if (after.length) {
|
|
67
|
+
router.use(basePath + '/:id', ...after);
|
|
92
68
|
}
|
|
93
|
-
router.get('/:id', ...middlewares as FindUniqueMiddleware[]);
|
|
94
69
|
}
|
|
95
70
|
|
|
96
|
-
if (config
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
71
|
+
if (config.enableAll || config?.create) {
|
|
72
|
+
const { before = [], after = [] } = config.create || defaultBeforeAfter;
|
|
73
|
+
setupRoute('/', 'post', before, ${modelName}Create as RequestHandler);
|
|
74
|
+
if (after.length) {
|
|
75
|
+
router.use(basePath + '/', ...after);
|
|
100
76
|
}
|
|
101
|
-
router.post('/', ...middlewares as CreateMiddleware[]);
|
|
102
77
|
}
|
|
103
78
|
|
|
104
|
-
if (config
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
79
|
+
if (config.enableAll || config?.createMany) {
|
|
80
|
+
const { before = [], after = [] } = config.createMany || defaultBeforeAfter;
|
|
81
|
+
setupRoute('/many', 'post', before, ${modelName}CreateMany as RequestHandler);
|
|
82
|
+
if (after.length) {
|
|
83
|
+
router.use(basePath + '/many', ...after);
|
|
108
84
|
}
|
|
109
|
-
router.post('/many', ...middlewares as CreateManyMiddleware[]);
|
|
110
85
|
}
|
|
111
86
|
|
|
112
|
-
if (config
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
87
|
+
if (config.enableAll || config?.update) {
|
|
88
|
+
const { before = [], after = [] } = config.update || defaultBeforeAfter;
|
|
89
|
+
setupRoute('/', 'put', before, ${modelName}Update as RequestHandler);
|
|
90
|
+
if (after.length) {
|
|
91
|
+
router.use(basePath + '/', ...after);
|
|
116
92
|
}
|
|
117
|
-
router.put('/', ...middlewares as UpdateMiddleware[]);
|
|
118
93
|
}
|
|
119
94
|
|
|
120
|
-
if (config
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
95
|
+
if (config.enableAll || config?.updateMany) {
|
|
96
|
+
const { before = [], after = [] } = config.updateMany || defaultBeforeAfter;
|
|
97
|
+
setupRoute('/many', 'put', before, ${modelName}UpdateMany as RequestHandler);
|
|
98
|
+
if (after.length) {
|
|
99
|
+
router.use(basePath + '/many', ...after);
|
|
124
100
|
}
|
|
125
|
-
router.put('/many', ...middlewares as UpdateManyMiddleware[]);
|
|
126
101
|
}
|
|
127
102
|
|
|
128
|
-
if (config
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
103
|
+
if (config.enableAll || config?.upsert) {
|
|
104
|
+
const { before = [], after = [] } = config.upsert || defaultBeforeAfter;
|
|
105
|
+
setupRoute('/', 'patch', before, ${modelName}Upsert as RequestHandler);
|
|
106
|
+
if (after.length) {
|
|
107
|
+
router.use(basePath + '/', ...after);
|
|
132
108
|
}
|
|
133
|
-
router.patch('/', ...middlewares as UpsertMiddleware[]);
|
|
134
109
|
}
|
|
135
110
|
|
|
136
|
-
if (config
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
111
|
+
if (config.enableAll || config?.delete) {
|
|
112
|
+
const { before = [], after = [] } = config.delete || defaultBeforeAfter;
|
|
113
|
+
setupRoute('/', 'delete', before, ${modelName}Delete as RequestHandler);
|
|
114
|
+
if (after.length) {
|
|
115
|
+
router.use(basePath + '/', ...after);
|
|
140
116
|
}
|
|
141
|
-
router.delete('/', ...middlewares as DeleteMiddleware[]);
|
|
142
117
|
}
|
|
143
118
|
|
|
144
|
-
if (config
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
119
|
+
if (config.enableAll || config?.deleteMany) {
|
|
120
|
+
const { before = [], after = [] } = config.deleteMany || defaultBeforeAfter;
|
|
121
|
+
setupRoute('/many', 'delete', before, ${modelName}DeleteMany as RequestHandler);
|
|
122
|
+
if (after.length) {
|
|
123
|
+
router.use(basePath + '/many', ...after);
|
|
148
124
|
}
|
|
149
|
-
router.delete('/many', ...middlewares as DeleteManyMiddleware[]);
|
|
150
125
|
}
|
|
151
126
|
|
|
152
|
-
if (config
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
127
|
+
if (config.enableAll || config?.aggregate) {
|
|
128
|
+
const { before = [], after = [] } = config.aggregate || defaultBeforeAfter;
|
|
129
|
+
setupRoute('/aggregate', 'get', before, ${modelName}Aggregate as RequestHandler);
|
|
130
|
+
if (after.length) {
|
|
131
|
+
router.use(basePath + '/aggregate', ...after);
|
|
156
132
|
}
|
|
157
|
-
router.get('/aggregate', ...middlewares as AggregateMiddleware[]);
|
|
158
133
|
}
|
|
159
134
|
|
|
160
|
-
if (config
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
135
|
+
if (config.enableAll || config?.count) {
|
|
136
|
+
const { before = [], after = [] } = config.count || defaultBeforeAfter;
|
|
137
|
+
setupRoute('/count', 'get', before, ${modelName}Count as RequestHandler);
|
|
138
|
+
if (after.length) {
|
|
139
|
+
router.use(basePath + '/count', ...after);
|
|
164
140
|
}
|
|
165
|
-
router.get('/count', ...middlewares as CountMiddleware[]);
|
|
166
141
|
}
|
|
167
142
|
|
|
168
|
-
if (config
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
143
|
+
if (config.enableAll || config?.groupBy) {
|
|
144
|
+
const { before = [], after = [] } = config.groupBy || defaultBeforeAfter;
|
|
145
|
+
setupRoute('/groupby', 'get', before, ${modelName}GroupBy as RequestHandler);
|
|
146
|
+
if (after.length) {
|
|
147
|
+
router.use(basePath + '/groupby', ...after);
|
|
172
148
|
}
|
|
173
|
-
router.get('/groupby', ...middlewares as GroupByMiddleware[]);
|
|
174
149
|
}
|
|
175
150
|
|
|
176
151
|
return router;
|
|
@@ -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;;WAEE,SAAS,
|
|
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;;WAEE,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;;;;;;;;;qCASb,SAAS;;;;kBAI5B,kBAAkB;;+CAEW,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;0CAa5B,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;AA3JD,wDA2JC"}
|
|
@@ -9,8 +9,8 @@ const path_1 = __importDefault(require("path"));
|
|
|
9
9
|
const formatFile_1 = require("./formatFile");
|
|
10
10
|
const writeFileSafely = async ({ model, operation, options, content, }) => {
|
|
11
11
|
var _a;
|
|
12
|
-
const fileName = operation === 'index' ? 'index' : `${model.name}${operation}`;
|
|
13
|
-
const filePath = path_1.default.join((_a = options.generator.output) === null || _a === void 0 ? void 0 : _a.value, `${model.name}/${fileName}.ts`);
|
|
12
|
+
const fileName = operation === 'index' ? 'index' : `${(model === null || model === void 0 ? void 0 : model.name) || ''}${operation}`;
|
|
13
|
+
const filePath = path_1.default.join((_a = options.generator.output) === null || _a === void 0 ? void 0 : _a.value, model ? `${model === null || model === void 0 ? void 0 : model.name}/${fileName}.ts` : `/${fileName}.ts`);
|
|
14
14
|
console.log('filePath :>> ', filePath);
|
|
15
15
|
await promises_1.default.mkdir(path_1.default.dirname(filePath), {
|
|
16
16
|
recursive: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeFileSafely.js","sourceRoot":"","sources":["../../src/utils/writeFileSafely.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA4B;AAC5B,gDAAuB;AACvB,6CAAyC;AAGlC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,KAAK,EACL,SAAS,EACT,OAAO,EACP,OAAO,GAMR,EAAE,EAAE;;IACH,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"writeFileSafely.js","sourceRoot":"","sources":["../../src/utils/writeFileSafely.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA4B;AAC5B,gDAAuB;AACvB,6CAAyC;AAGlC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,KAAK,EACL,SAAS,EACT,OAAO,EACP,OAAO,GAMR,EAAE,EAAE;;IACH,MAAM,QAAQ,GACZ,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,EAAE,GAAG,SAAS,EAAE,CAAA;IACtE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CACxB,MAAA,OAAO,CAAC,SAAS,CAAC,MAAM,0CAAE,KAAM,EAChC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,KAAK,CAC5D,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;IACtC,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACrC,SAAS,EAAE,IAAI;KAChB,CAAC,CAAA;IAEF,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAA,uBAAU,EAAC,OAAO,CAAC,CAAC,CAAA;AACzD,CAAC,CAAA;AAvBY,QAAA,eAAe,mBAuB3B"}
|
package/package.json
CHANGED
package/src/generator.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { generateDeleteManyFunction } from './helpers/generateDeleteMany'
|
|
|
17
17
|
import { generateAggregateFunction } from './helpers/generateAggregate'
|
|
18
18
|
import { generateCountFunction } from './helpers/generateCount'
|
|
19
19
|
import { generateGroupByFunction } from './helpers/generateGroupBy'
|
|
20
|
+
import { generateRouteConfigType } from './helpers/generateRouteConfigType'
|
|
20
21
|
|
|
21
22
|
const { version } = require('../package.json')
|
|
22
23
|
|
|
@@ -170,5 +171,11 @@ generatorHandler({
|
|
|
170
171
|
operation: 'index',
|
|
171
172
|
})
|
|
172
173
|
}
|
|
174
|
+
|
|
175
|
+
await writeFileSafely({
|
|
176
|
+
content: generateRouteConfigType(),
|
|
177
|
+
options,
|
|
178
|
+
operation: 'RouteConfig',
|
|
179
|
+
})
|
|
173
180
|
},
|
|
174
181
|
})
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function generateRouteConfigType() {
|
|
2
|
+
return `import { RequestHandler } from 'express';
|
|
3
|
+
|
|
4
|
+
interface MiddlewareConfig<M> {
|
|
5
|
+
before?: M[];
|
|
6
|
+
after?: RequestHandler[];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface RouteConfig<M> {
|
|
10
|
+
findFirst?: MiddlewareConfig<M>;
|
|
11
|
+
findMany?: MiddlewareConfig<M>;
|
|
12
|
+
findUnique?: MiddlewareConfig<M>;
|
|
13
|
+
create?: MiddlewareConfig<M>;
|
|
14
|
+
createMany?: MiddlewareConfig<M>;
|
|
15
|
+
update?: MiddlewareConfig<M>;
|
|
16
|
+
updateMany?: MiddlewareConfig<M>;
|
|
17
|
+
upsert?: MiddlewareConfig<M>;
|
|
18
|
+
delete?: MiddlewareConfig<M>;
|
|
19
|
+
deleteMany?: MiddlewareConfig<M>;
|
|
20
|
+
aggregate?: MiddlewareConfig<M>;
|
|
21
|
+
count?: MiddlewareConfig<M>;
|
|
22
|
+
groupBy?: MiddlewareConfig<M>;
|
|
23
|
+
addModelPrefix?: boolean;
|
|
24
|
+
enableAll?: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default RouteConfig;`
|
|
28
|
+
}
|
|
@@ -10,171 +10,146 @@ export function generateRouterFunction({
|
|
|
10
10
|
|
|
11
11
|
return `
|
|
12
12
|
import express, { RequestHandler } from 'express';
|
|
13
|
-
import { ${modelName}FindFirst
|
|
14
|
-
import { ${modelName}FindMany
|
|
15
|
-
import { ${modelName}FindUnique
|
|
16
|
-
import { ${modelName}Create
|
|
17
|
-
import { ${modelName}CreateMany
|
|
18
|
-
import { ${modelName}Update
|
|
19
|
-
import { ${modelName}UpdateMany
|
|
20
|
-
import { ${modelName}Upsert
|
|
21
|
-
import { ${modelName}Delete
|
|
22
|
-
import { ${modelName}DeleteMany
|
|
23
|
-
import { ${modelName}Aggregate
|
|
24
|
-
import { ${modelName}Count
|
|
25
|
-
import { ${modelName}GroupBy
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
findManyNextMiddleware?: RequestHandler[]
|
|
33
|
-
|
|
34
|
-
findUniqueMiddleware?: FindUniqueMiddleware[]
|
|
35
|
-
findUniqueNextMiddleware?: RequestHandler[]
|
|
36
|
-
|
|
37
|
-
createMiddleware?: CreateMiddleware[]
|
|
38
|
-
createNextMiddleware?: RequestHandler[]
|
|
39
|
-
|
|
40
|
-
createManyMiddleware?: CreateManyMiddleware[]
|
|
41
|
-
createManyNextMiddleware?: RequestHandler[]
|
|
42
|
-
|
|
43
|
-
updateMiddleware?: UpdateMiddleware[]
|
|
44
|
-
updateNextMiddleware?: RequestHandler[]
|
|
45
|
-
|
|
46
|
-
updateManyMiddleware?: UpdateManyMiddleware[]
|
|
47
|
-
updateManyNextMiddleware?: RequestHandler[]
|
|
48
|
-
|
|
49
|
-
upsertMiddleware?: UpsertMiddleware[]
|
|
50
|
-
upsertNextMiddleware?: RequestHandler[]
|
|
51
|
-
|
|
52
|
-
deleteMiddleware?: DeleteMiddleware[]
|
|
53
|
-
deleteNextMiddleware?: RequestHandler[]
|
|
54
|
-
|
|
55
|
-
deleteManyMiddleware?: DeleteManyMiddleware[]
|
|
56
|
-
deleteManyNextMiddleware?: RequestHandler[]
|
|
57
|
-
|
|
58
|
-
aggregateMiddleware?: AggregateMiddleware[]
|
|
59
|
-
aggregateNextMiddleware?: RequestHandler[]
|
|
60
|
-
|
|
61
|
-
countMiddleware?: CountMiddleware[]
|
|
62
|
-
countNextMiddleware?: RequestHandler[]
|
|
63
|
-
|
|
64
|
-
groupByMiddleware?: GroupByMiddleware[]
|
|
65
|
-
groupByNextMiddleware?: RequestHandler[]
|
|
66
|
-
}
|
|
13
|
+
import { ${modelName}FindFirst } from './${modelName}FindFirst';
|
|
14
|
+
import { ${modelName}FindMany } from './${modelName}FindMany';
|
|
15
|
+
import { ${modelName}FindUnique } from './${modelName}FindUnique';
|
|
16
|
+
import { ${modelName}Create } from './${modelName}Create';
|
|
17
|
+
import { ${modelName}CreateMany } from './${modelName}CreateMany';
|
|
18
|
+
import { ${modelName}Update } from './${modelName}Update';
|
|
19
|
+
import { ${modelName}UpdateMany } from './${modelName}UpdateMany';
|
|
20
|
+
import { ${modelName}Upsert } from './${modelName}Upsert';
|
|
21
|
+
import { ${modelName}Delete } from './${modelName}Delete';
|
|
22
|
+
import { ${modelName}DeleteMany } from './${modelName}DeleteMany';
|
|
23
|
+
import { ${modelName}Aggregate } from './${modelName}Aggregate';
|
|
24
|
+
import { ${modelName}Count } from './${modelName}Count';
|
|
25
|
+
import { ${modelName}GroupBy } from './${modelName}GroupBy';
|
|
26
|
+
import { RouteConfig } from "../RouteConfig";
|
|
27
|
+
|
|
28
|
+
const defaultBeforeAfter = {
|
|
29
|
+
before: [] as RequestHandler[],
|
|
30
|
+
after: [] as RequestHandler[],
|
|
31
|
+
};
|
|
67
32
|
|
|
68
33
|
/**
|
|
69
34
|
* Generates an Express router for ${modelName} model.
|
|
70
35
|
* @param config Contains optional middleware to enable routes.
|
|
71
36
|
* @returns {express.Router}
|
|
72
37
|
*/
|
|
73
|
-
export function ${routerFunctionName}(config: RouteConfig) {
|
|
38
|
+
export function ${routerFunctionName}(config: RouteConfig<RequestHandler>) {
|
|
74
39
|
const router = express.Router();
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
40
|
+
const basePath = config.addModelPrefix ? '/${modelName.toLowerCase()}' : '';
|
|
41
|
+
|
|
42
|
+
const setupRoute = (
|
|
43
|
+
path: string,
|
|
44
|
+
method: "all" | "get" | "post" | "put" | "delete" | "patch" | "options" | "head",
|
|
45
|
+
middlewares: RequestHandler[],
|
|
46
|
+
handler: RequestHandler
|
|
47
|
+
) => {
|
|
48
|
+
router[method](basePath + path, ...middlewares, handler);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
if (config.enableAll || config?.findFirst) {
|
|
52
|
+
const { before = [], after = [] } = config.findFirst || defaultBeforeAfter;
|
|
53
|
+
setupRoute('/first', 'get', before, ${modelName}FindFirst as RequestHandler);
|
|
54
|
+
if (after.length) {
|
|
55
|
+
router.use(basePath + '/first', ...after);
|
|
80
56
|
}
|
|
81
|
-
router.get('/first', ...middlewares as FindFirstMiddleware[]);
|
|
82
57
|
}
|
|
83
58
|
|
|
84
|
-
if (config
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
59
|
+
if (config.enableAll || config?.findMany) {
|
|
60
|
+
const { before = [], after = [] } = config.findMany || defaultBeforeAfter;
|
|
61
|
+
setupRoute('/', 'get', before, ${modelName}FindMany as RequestHandler);
|
|
62
|
+
if (after.length) {
|
|
63
|
+
router.use(basePath + '/', ...after);
|
|
88
64
|
}
|
|
89
|
-
router.get('/', ...middlewares as FindManyMiddleware[]);
|
|
90
65
|
}
|
|
91
66
|
|
|
92
|
-
if (config
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
67
|
+
if (config.enableAll || config?.findUnique) {
|
|
68
|
+
const { before = [], after = [] } = config.findUnique || defaultBeforeAfter;
|
|
69
|
+
setupRoute('/:id', 'get', before, ${modelName}FindUnique as any);
|
|
70
|
+
if (after.length) {
|
|
71
|
+
router.use(basePath + '/:id', ...after);
|
|
96
72
|
}
|
|
97
|
-
router.get('/:id', ...middlewares as FindUniqueMiddleware[]);
|
|
98
73
|
}
|
|
99
74
|
|
|
100
|
-
if (config
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
75
|
+
if (config.enableAll || config?.create) {
|
|
76
|
+
const { before = [], after = [] } = config.create || defaultBeforeAfter;
|
|
77
|
+
setupRoute('/', 'post', before, ${modelName}Create as RequestHandler);
|
|
78
|
+
if (after.length) {
|
|
79
|
+
router.use(basePath + '/', ...after);
|
|
104
80
|
}
|
|
105
|
-
router.post('/', ...middlewares as CreateMiddleware[]);
|
|
106
81
|
}
|
|
107
82
|
|
|
108
|
-
if (config
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
83
|
+
if (config.enableAll || config?.createMany) {
|
|
84
|
+
const { before = [], after = [] } = config.createMany || defaultBeforeAfter;
|
|
85
|
+
setupRoute('/many', 'post', before, ${modelName}CreateMany as RequestHandler);
|
|
86
|
+
if (after.length) {
|
|
87
|
+
router.use(basePath + '/many', ...after);
|
|
112
88
|
}
|
|
113
|
-
router.post('/many', ...middlewares as CreateManyMiddleware[]);
|
|
114
89
|
}
|
|
115
90
|
|
|
116
|
-
if (config
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
91
|
+
if (config.enableAll || config?.update) {
|
|
92
|
+
const { before = [], after = [] } = config.update || defaultBeforeAfter;
|
|
93
|
+
setupRoute('/', 'put', before, ${modelName}Update as RequestHandler);
|
|
94
|
+
if (after.length) {
|
|
95
|
+
router.use(basePath + '/', ...after);
|
|
120
96
|
}
|
|
121
|
-
router.put('/', ...middlewares as UpdateMiddleware[]);
|
|
122
97
|
}
|
|
123
98
|
|
|
124
|
-
if (config
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
99
|
+
if (config.enableAll || config?.updateMany) {
|
|
100
|
+
const { before = [], after = [] } = config.updateMany || defaultBeforeAfter;
|
|
101
|
+
setupRoute('/many', 'put', before, ${modelName}UpdateMany as RequestHandler);
|
|
102
|
+
if (after.length) {
|
|
103
|
+
router.use(basePath + '/many', ...after);
|
|
128
104
|
}
|
|
129
|
-
router.put('/many', ...middlewares as UpdateManyMiddleware[]);
|
|
130
105
|
}
|
|
131
106
|
|
|
132
|
-
if (config
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
107
|
+
if (config.enableAll || config?.upsert) {
|
|
108
|
+
const { before = [], after = [] } = config.upsert || defaultBeforeAfter;
|
|
109
|
+
setupRoute('/', 'patch', before, ${modelName}Upsert as RequestHandler);
|
|
110
|
+
if (after.length) {
|
|
111
|
+
router.use(basePath + '/', ...after);
|
|
136
112
|
}
|
|
137
|
-
router.patch('/', ...middlewares as UpsertMiddleware[]);
|
|
138
113
|
}
|
|
139
114
|
|
|
140
|
-
if (config
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
115
|
+
if (config.enableAll || config?.delete) {
|
|
116
|
+
const { before = [], after = [] } = config.delete || defaultBeforeAfter;
|
|
117
|
+
setupRoute('/', 'delete', before, ${modelName}Delete as RequestHandler);
|
|
118
|
+
if (after.length) {
|
|
119
|
+
router.use(basePath + '/', ...after);
|
|
144
120
|
}
|
|
145
|
-
router.delete('/', ...middlewares as DeleteMiddleware[]);
|
|
146
121
|
}
|
|
147
122
|
|
|
148
|
-
if (config
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
123
|
+
if (config.enableAll || config?.deleteMany) {
|
|
124
|
+
const { before = [], after = [] } = config.deleteMany || defaultBeforeAfter;
|
|
125
|
+
setupRoute('/many', 'delete', before, ${modelName}DeleteMany as RequestHandler);
|
|
126
|
+
if (after.length) {
|
|
127
|
+
router.use(basePath + '/many', ...after);
|
|
152
128
|
}
|
|
153
|
-
router.delete('/many', ...middlewares as DeleteManyMiddleware[]);
|
|
154
129
|
}
|
|
155
130
|
|
|
156
|
-
if (config
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
131
|
+
if (config.enableAll || config?.aggregate) {
|
|
132
|
+
const { before = [], after = [] } = config.aggregate || defaultBeforeAfter;
|
|
133
|
+
setupRoute('/aggregate', 'get', before, ${modelName}Aggregate as RequestHandler);
|
|
134
|
+
if (after.length) {
|
|
135
|
+
router.use(basePath + '/aggregate', ...after);
|
|
160
136
|
}
|
|
161
|
-
router.get('/aggregate', ...middlewares as AggregateMiddleware[]);
|
|
162
137
|
}
|
|
163
138
|
|
|
164
|
-
if (config
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
139
|
+
if (config.enableAll || config?.count) {
|
|
140
|
+
const { before = [], after = [] } = config.count || defaultBeforeAfter;
|
|
141
|
+
setupRoute('/count', 'get', before, ${modelName}Count as RequestHandler);
|
|
142
|
+
if (after.length) {
|
|
143
|
+
router.use(basePath + '/count', ...after);
|
|
168
144
|
}
|
|
169
|
-
router.get('/count', ...middlewares as CountMiddleware[]);
|
|
170
145
|
}
|
|
171
146
|
|
|
172
|
-
if (config
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
147
|
+
if (config.enableAll || config?.groupBy) {
|
|
148
|
+
const { before = [], after = [] } = config.groupBy || defaultBeforeAfter;
|
|
149
|
+
setupRoute('/groupby', 'get', before, ${modelName}GroupBy as RequestHandler);
|
|
150
|
+
if (after.length) {
|
|
151
|
+
router.use(basePath + '/groupby', ...after);
|
|
176
152
|
}
|
|
177
|
-
router.get('/groupby', ...middlewares as GroupByMiddleware[]);
|
|
178
153
|
}
|
|
179
154
|
|
|
180
155
|
return router;
|
|
@@ -9,15 +9,16 @@ export const writeFileSafely = async ({
|
|
|
9
9
|
options,
|
|
10
10
|
content,
|
|
11
11
|
}: {
|
|
12
|
-
model
|
|
12
|
+
model?: DMMF.Model
|
|
13
13
|
operation: string
|
|
14
14
|
options: GeneratorOptions
|
|
15
15
|
content: string
|
|
16
16
|
}) => {
|
|
17
|
-
const fileName =
|
|
17
|
+
const fileName =
|
|
18
|
+
operation === 'index' ? 'index' : `${model?.name || ''}${operation}`
|
|
18
19
|
const filePath = path.join(
|
|
19
20
|
options.generator.output?.value!,
|
|
20
|
-
`${model
|
|
21
|
+
model ? `${model?.name}/${fileName}.ts` : `/${fileName}.ts`,
|
|
21
22
|
)
|
|
22
23
|
console.log('filePath :>> ', filePath)
|
|
23
24
|
await fs.mkdir(path.dirname(filePath), {
|