prisma-generator-express 1.7.2 → 1.8.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 (52) hide show
  1. package/README.md +50 -21
  2. package/package.json +2 -2
  3. package/{dist → src}/bin.js +0 -1
  4. package/{dist → src}/constants.js +0 -1
  5. package/src/generator.js +195 -0
  6. package/src/generator.ts +7 -0
  7. package/{dist → src}/helpers/generateAggregate.js +7 -1
  8. package/{dist → src}/helpers/generateCount.js +7 -1
  9. package/{dist → src}/helpers/generateCreate.js +6 -1
  10. package/{dist → src}/helpers/generateCreateMany.js +6 -1
  11. package/{dist → src}/helpers/generateDelete.js +7 -1
  12. package/{dist → src}/helpers/generateDeleteMany.js +7 -1
  13. package/{dist → src}/helpers/generateFindFirst.js +6 -1
  14. package/{dist → src}/helpers/generateFindMany.js +6 -1
  15. package/{dist → src}/helpers/generateFindUnique.js +6 -1
  16. package/{dist → src}/helpers/generateGroupBy.js +7 -1
  17. package/{dist → src}/helpers/generateImportPrismaStatement.js +1 -1
  18. package/src/helpers/generateRouteConfigType.js +32 -0
  19. package/src/helpers/generateRouteConfigType.ts +28 -0
  20. package/src/helpers/generateRouteFile.js +155 -0
  21. package/src/helpers/generateRouteFile.ts +96 -121
  22. package/{dist → src}/helpers/generateUpdate.js +6 -1
  23. package/{dist → src}/helpers/generateUpdateMany.js +6 -1
  24. package/{dist → src}/helpers/generateUpsert.js +7 -1
  25. package/{dist → src}/utils/formatFile.js +2 -6
  26. package/{dist → src}/utils/strings.js +0 -1
  27. package/src/utils/writeFileSafely.js +29 -0
  28. package/src/utils/writeFileSafely.ts +4 -3
  29. package/dist/bin.js.map +0 -1
  30. package/dist/constants.js.map +0 -1
  31. package/dist/generator.js +0 -161
  32. package/dist/generator.js.map +0 -1
  33. package/dist/helpers/generateAggregate.js.map +0 -1
  34. package/dist/helpers/generateCount.js.map +0 -1
  35. package/dist/helpers/generateCreate.js.map +0 -1
  36. package/dist/helpers/generateCreateMany.js.map +0 -1
  37. package/dist/helpers/generateDelete.js.map +0 -1
  38. package/dist/helpers/generateDeleteMany.js.map +0 -1
  39. package/dist/helpers/generateFindFirst.js.map +0 -1
  40. package/dist/helpers/generateFindMany.js.map +0 -1
  41. package/dist/helpers/generateFindUnique.js.map +0 -1
  42. package/dist/helpers/generateGroupBy.js.map +0 -1
  43. package/dist/helpers/generateImportPrismaStatement.js.map +0 -1
  44. package/dist/helpers/generateRouteFile.js +0 -181
  45. package/dist/helpers/generateRouteFile.js.map +0 -1
  46. package/dist/helpers/generateUpdate.js.map +0 -1
  47. package/dist/helpers/generateUpdateMany.js.map +0 -1
  48. package/dist/helpers/generateUpsert.js.map +0 -1
  49. package/dist/utils/formatFile.js.map +0 -1
  50. package/dist/utils/strings.js.map +0 -1
  51. package/dist/utils/writeFileSafely.js +0 -21
  52. package/dist/utils/writeFileSafely.js.map +0 -1
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 { UserRouter } from './path/to/generated/UserRouter' // Adjust the path as necessary
116
- import { UserFindManyArgs } from './prisma-zod-generator/schemas/UserFindManyArgs.schema' // Adjust the path as necessary
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
- export const validateUserQuery = (
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
- try {
126
- UserFindManyArgs.parse(req.query)
127
- next()
128
- } catch (error) {
129
- if (error instanceof ZodError) {
130
- return res.status(400).json({
131
- message: 'Validation failed',
132
- errors: error.errors,
133
- })
134
- }
135
- next(error)
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 userRouterConfig = {
140
- findManyMiddleware: [validateUserQuery], // Add other middleware as needed
141
- findUniqueMiddleware: undefined, // This can be omitted, route won't be generated if middleware is not provided
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
- // Use the router in your application
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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "prisma-generator-express",
3
3
  "description": "Prisma generator of Express CRUD API",
4
- "version": "1.7.2",
4
+ "version": "1.8.0",
5
5
  "main": "dist/generator.js",
6
6
  "license": "MIT",
7
7
  "bin": {
@@ -13,7 +13,7 @@
13
13
  "scripts": {
14
14
  "start": "node dist/bin.js",
15
15
  "dev": "npx tsc -w",
16
- "build": "npx tsc",
16
+ "build": "npx tsc --project ../../tsconfig.json",
17
17
  "prepack": "yarn build",
18
18
  "test": "jest",
19
19
  "prepublishOnly": "node copy.js "
@@ -2,4 +2,3 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  require("./generator");
5
- //# sourceMappingURL=bin.js.map
@@ -2,4 +2,3 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GENERATOR_NAME = void 0;
4
4
  exports.GENERATOR_NAME = 'prisma-generator-express';
5
- //# sourceMappingURL=constants.js.map
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
12
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
13
+ var m = o[Symbol.asyncIterator], i;
14
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
15
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
16
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ const generator_helper_1 = require("@prisma/generator-helper");
20
+ const sdk_1 = require("@prisma/sdk");
21
+ const constants_1 = require("./constants");
22
+ const writeFileSafely_1 = require("./utils/writeFileSafely");
23
+ const generateFindUnique_1 = require("./helpers/generateFindUnique");
24
+ const generateImportPrismaStatement_1 = require("./helpers/generateImportPrismaStatement");
25
+ const generateFindMany_1 = require("./helpers/generateFindMany");
26
+ const generateFindFirst_1 = require("./helpers/generateFindFirst");
27
+ const generateCreate_1 = require("./helpers/generateCreate");
28
+ const generateRouteFile_1 = require("./helpers/generateRouteFile");
29
+ const generateCreateMany_1 = require("./helpers/generateCreateMany");
30
+ const generateUpdate_1 = require("./helpers/generateUpdate");
31
+ const generateUpdateMany_1 = require("./helpers/generateUpdateMany");
32
+ const generateUpsert_1 = require("./helpers/generateUpsert");
33
+ const generateDelete_1 = require("./helpers/generateDelete");
34
+ const generateDeleteMany_1 = require("./helpers/generateDeleteMany");
35
+ const generateAggregate_1 = require("./helpers/generateAggregate");
36
+ const generateCount_1 = require("./helpers/generateCount");
37
+ const generateGroupBy_1 = require("./helpers/generateGroupBy");
38
+ const generateRouteConfigType_1 = require("./helpers/generateRouteConfigType");
39
+ const { version } = require('../package.json');
40
+ (0, generator_helper_1.generatorHandler)({
41
+ onManifest() {
42
+ sdk_1.logger.info(`${constants_1.GENERATOR_NAME}:Registered`);
43
+ return {
44
+ version,
45
+ defaultOutput: '../generated',
46
+ prettyName: constants_1.GENERATOR_NAME,
47
+ };
48
+ },
49
+ onGenerate: (options) => __awaiter(void 0, void 0, void 0, function* () {
50
+ var _a, e_1, _b, _c;
51
+ const prismaImportStatement = (0, generateImportPrismaStatement_1.generateImportPrismaStatement)(options);
52
+ try {
53
+ for (var _d = true, _e = __asyncValues(options.dmmf.datamodel.models), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
54
+ _c = _f.value;
55
+ _d = false;
56
+ const model = _c;
57
+ yield (0, writeFileSafely_1.writeFileSafely)({
58
+ content: (0, generateFindUnique_1.generateFindUniqueFunction)({
59
+ model,
60
+ prismaImportStatement,
61
+ }),
62
+ options,
63
+ model,
64
+ operation: 'FindUnique',
65
+ });
66
+ yield (0, writeFileSafely_1.writeFileSafely)({
67
+ content: (0, generateFindFirst_1.generateFindFirstFunction)({
68
+ model,
69
+ prismaImportStatement,
70
+ }),
71
+ options,
72
+ model,
73
+ operation: 'FindFirst',
74
+ });
75
+ yield (0, writeFileSafely_1.writeFileSafely)({
76
+ content: (0, generateFindMany_1.generateFindManyFunction)({
77
+ model,
78
+ prismaImportStatement,
79
+ }),
80
+ options,
81
+ model,
82
+ operation: 'FindMany',
83
+ });
84
+ yield (0, writeFileSafely_1.writeFileSafely)({
85
+ content: (0, generateCreate_1.generateCreateFunction)({
86
+ model,
87
+ prismaImportStatement,
88
+ }),
89
+ options,
90
+ model,
91
+ operation: 'Create',
92
+ });
93
+ yield (0, writeFileSafely_1.writeFileSafely)({
94
+ content: (0, generateCreateMany_1.generateCreateManyFunction)({
95
+ model,
96
+ prismaImportStatement,
97
+ }),
98
+ options,
99
+ model,
100
+ operation: 'CreateMany',
101
+ });
102
+ yield (0, writeFileSafely_1.writeFileSafely)({
103
+ content: (0, generateUpdate_1.generateUpdateFunction)({
104
+ model,
105
+ prismaImportStatement,
106
+ }),
107
+ options,
108
+ model,
109
+ operation: 'Update',
110
+ });
111
+ yield (0, writeFileSafely_1.writeFileSafely)({
112
+ content: (0, generateUpdateMany_1.generateUpdateManyFunction)({
113
+ model,
114
+ prismaImportStatement,
115
+ }),
116
+ options,
117
+ model,
118
+ operation: 'UpdateMany',
119
+ });
120
+ yield (0, writeFileSafely_1.writeFileSafely)({
121
+ content: (0, generateUpsert_1.generateUpsertFunction)({
122
+ model,
123
+ prismaImportStatement,
124
+ }),
125
+ options,
126
+ model,
127
+ operation: 'Upsert',
128
+ });
129
+ yield (0, writeFileSafely_1.writeFileSafely)({
130
+ content: (0, generateDelete_1.generateDeleteFunction)({
131
+ model,
132
+ prismaImportStatement,
133
+ }),
134
+ options,
135
+ model,
136
+ operation: 'Delete',
137
+ });
138
+ yield (0, writeFileSafely_1.writeFileSafely)({
139
+ content: (0, generateDeleteMany_1.generateDeleteManyFunction)({
140
+ model,
141
+ prismaImportStatement,
142
+ }),
143
+ options,
144
+ model,
145
+ operation: 'DeleteMany',
146
+ });
147
+ yield (0, writeFileSafely_1.writeFileSafely)({
148
+ content: (0, generateAggregate_1.generateAggregateFunction)({
149
+ model,
150
+ prismaImportStatement,
151
+ }),
152
+ options,
153
+ model,
154
+ operation: 'Aggregate',
155
+ });
156
+ yield (0, writeFileSafely_1.writeFileSafely)({
157
+ content: (0, generateCount_1.generateCountFunction)({
158
+ model,
159
+ prismaImportStatement,
160
+ }),
161
+ options,
162
+ model,
163
+ operation: 'Count',
164
+ });
165
+ yield (0, writeFileSafely_1.writeFileSafely)({
166
+ content: (0, generateGroupBy_1.generateGroupByFunction)({
167
+ model,
168
+ prismaImportStatement,
169
+ }),
170
+ options,
171
+ model,
172
+ operation: 'GroupBy',
173
+ });
174
+ yield (0, writeFileSafely_1.writeFileSafely)({
175
+ content: (0, generateRouteFile_1.generateRouterFunction)({ model }),
176
+ options,
177
+ model,
178
+ operation: 'index',
179
+ });
180
+ }
181
+ }
182
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
183
+ finally {
184
+ try {
185
+ if (!_d && !_a && (_b = _e.return)) yield _b.call(_e);
186
+ }
187
+ finally { if (e_1) throw e_1.error; }
188
+ }
189
+ yield (0, writeFileSafely_1.writeFileSafely)({
190
+ content: (0, generateRouteConfigType_1.generateRouteConfigType)(),
191
+ options,
192
+ operation: 'RouteConfig',
193
+ });
194
+ }),
195
+ });
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
  })
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateAggregateFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that handles aggregation queries
7
+ * and includes conditional output validation with Zod.
8
+ * This version dynamically includes the correct type for the arguments based on the Prisma model.
9
+ * @param options - The options containing the model name and the import statement for Prisma types.
10
+ * @returns {string} - The generated middleware function as a string.
11
+ */
5
12
  const generateAggregateFunction = (options) => {
6
13
  const { model, prismaImportStatement } = options;
7
14
  const modelName = model.name;
@@ -53,4 +60,3 @@ export async function ${functionName}(req: AggregateRequest, res: Response, next
53
60
  }`;
54
61
  };
55
62
  exports.generateAggregateFunction = generateAggregateFunction;
56
- //# sourceMappingURL=generateAggregate.js.map
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateCountFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that handles count queries
7
+ * and includes conditional output validation with Zod.
8
+ * This version dynamically includes the correct type for the arguments based on the Prisma model.
9
+ * @param options - The options containing the model name and the import statement for Prisma types.
10
+ * @returns {string} - The generated middleware function as a string.
11
+ */
5
12
  const generateCountFunction = (options) => {
6
13
  const { model, prismaImportStatement } = options;
7
14
  const modelName = model.name;
@@ -53,4 +60,3 @@ export async function ${functionName}(req: CountRequest, res: Response, next: Ne
53
60
  }`;
54
61
  };
55
62
  exports.generateCountFunction = generateCountFunction;
56
- //# sourceMappingURL=generateCount.js.map
@@ -2,6 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateCreateFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that handles creation of records and includes conditional output validation with Zod.
7
+ * This version dynamically includes the correct type for the arguments based on the Prisma model.
8
+ * @param options - The options containing the model name and the import statement for Prisma types.
9
+ * @returns {string} - The generated middleware function as a string.
10
+ */
5
11
  const generateCreateFunction = (options) => {
6
12
  const { model, prismaImportStatement } = options;
7
13
  const modelName = model.name;
@@ -53,4 +59,3 @@ export async function ${functionName}(req: CreateRequest, res: Response, next: N
53
59
  }`;
54
60
  };
55
61
  exports.generateCreateFunction = generateCreateFunction;
56
- //# sourceMappingURL=generateCreate.js.map
@@ -2,6 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateCreateManyFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that handles the creation of multiple records and includes conditional output validation with Zod.
7
+ * This version dynamically includes the correct type for the arguments based on the Prisma model.
8
+ * @param options - The options containing the model name and the import statement for Prisma types.
9
+ * @returns {string} - The generated middleware function as a string.
10
+ */
5
11
  const generateCreateManyFunction = (options) => {
6
12
  const { model, prismaImportStatement } = options;
7
13
  const modelName = model.name;
@@ -53,4 +59,3 @@ export async function ${functionName}(req: CreateManyRequest, res: Response, nex
53
59
  }`;
54
60
  };
55
61
  exports.generateCreateManyFunction = generateCreateManyFunction;
56
- //# sourceMappingURL=generateCreateMany.js.map
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateDeleteFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that handles deleting records
7
+ * and includes conditional output validation with Zod.
8
+ * This version dynamically includes the correct type for the arguments based on the Prisma model.
9
+ * @param options - The options containing the model name and the import statement for Prisma types.
10
+ * @returns {string} - The generated middleware function as a string.
11
+ */
5
12
  const generateDeleteFunction = (options) => {
6
13
  const { model, prismaImportStatement } = options;
7
14
  const modelName = model.name;
@@ -54,4 +61,3 @@ export async function ${functionName}(req: DeleteRequest, res: Response, next: N
54
61
  }`;
55
62
  };
56
63
  exports.generateDeleteFunction = generateDeleteFunction;
57
- //# sourceMappingURL=generateDelete.js.map
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateDeleteManyFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that handles batch deleting records
7
+ * and includes conditional output validation with Zod.
8
+ * This version dynamically includes the correct type for the arguments based on the Prisma model.
9
+ * @param options - The options containing the model name and the import statement for Prisma types.
10
+ * @returns {string} - The generated middleware function as a string.
11
+ */
5
12
  const generateDeleteManyFunction = (options) => {
6
13
  const { model, prismaImportStatement } = options;
7
14
  const modelName = model.name;
@@ -52,4 +59,3 @@ export async function ${functionName}(req: DeleteManyRequest, res: Response, nex
52
59
  }`;
53
60
  };
54
61
  exports.generateDeleteManyFunction = generateDeleteManyFunction;
55
- //# sourceMappingURL=generateDeleteMany.js.map
@@ -2,6 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateFindFirstFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that includes conditional output validation with Zod.
7
+ * This version dynamically includes the correct type for the query parameter based on the Prisma model.
8
+ * @param options - The options containing the model name and the import statement for Prisma types.
9
+ * @returns {string} - The generated middleware function as a string.
10
+ */
5
11
  const generateFindFirstFunction = (options) => {
6
12
  const { model, prismaImportStatement } = options;
7
13
  const modelName = model.name;
@@ -63,4 +69,3 @@ export async function ${functionName}(req: FindFirstRequest, res: Response, next
63
69
  }`;
64
70
  };
65
71
  exports.generateFindFirstFunction = generateFindFirstFunction;
66
- //# sourceMappingURL=generateFindFirst.js.map
@@ -2,6 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateFindManyFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that handles multiple record retrieval with optional output validation using Zod.
7
+ * This version dynamically includes the correct type for the query parameter based on the Prisma model.
8
+ * @param options - The options containing the model name and the import statement for Prisma types.
9
+ * @returns {string} - The generated middleware function as a string.
10
+ */
5
11
  const generateFindManyFunction = (options) => {
6
12
  const { model, prismaImportStatement } = options;
7
13
  const modelName = model.name;
@@ -63,4 +69,3 @@ export async function ${functionName}(req: FindManyRequest, res: Response, next:
63
69
  }`;
64
70
  };
65
71
  exports.generateFindManyFunction = generateFindManyFunction;
66
- //# sourceMappingURL=generateFindMany.js.map
@@ -2,6 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateFindUniqueFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that includes conditional output validation with Zod.
7
+ * This version dynamically includes the correct type for the query parameter based on the Prisma model.
8
+ * @param options - The options containing the model name and the import statement for Prisma types.
9
+ * @returns {string} - The generated middleware function as a string.
10
+ */
5
11
  const generateFindUniqueFunction = (options) => {
6
12
  const { model, prismaImportStatement } = options;
7
13
  const modelName = model.name;
@@ -63,4 +69,3 @@ export async function ${functionName}(req: FindUniqueRequest, res: Response, nex
63
69
  }`;
64
70
  };
65
71
  exports.generateFindUniqueFunction = generateFindUniqueFunction;
66
- //# sourceMappingURL=generateFindUnique.js.map
@@ -2,6 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateGroupByFunction = void 0;
4
4
  const strings_1 = require("../utils/strings");
5
+ /**
6
+ * Generates an Express middleware function that handles groupBy queries
7
+ * and includes conditional output validation with Zod.
8
+ * This version dynamically includes the correct type for the arguments based on the Prisma model.
9
+ * @param options - The options containing the model name and the import statement for Prisma types.
10
+ * @returns {string} - The generated middleware function as a string.
11
+ */
5
12
  const generateGroupByFunction = (options) => {
6
13
  const { model, prismaImportStatement } = options;
7
14
  const modelName = model.name;
@@ -54,4 +61,3 @@ export async function ${functionName}(req: GroupByRequest, res: Response, next:
54
61
  }`;
55
62
  };
56
63
  exports.generateGroupByFunction = generateGroupByFunction;
57
- //# sourceMappingURL=generateGroupBy.js.map
@@ -20,7 +20,7 @@ function getImportGeneratorOptions(options) {
20
20
  }
21
21
  function generateImportPrismaStatement(generatorOptions) {
22
22
  const options = getImportGeneratorOptions(generatorOptions);
23
+ // console.log('options.outputPath :>> ', options.outputPath)
23
24
  return `import type { Prisma } from '${options.outputPath}';\nimport type { PrismaClient } from '${options.outputPath}';\n`;
24
25
  }
25
26
  exports.generateImportPrismaStatement = generateImportPrismaStatement;
26
- //# sourceMappingURL=generateImportPrismaStatement.js.map
@@ -0,0 +1,32 @@
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;
@@ -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
+ }