prisma-generator-express 1.0.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 (50) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/bin.js +5 -0
  3. package/dist/bin.js.map +1 -0
  4. package/dist/constants.js +5 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/generator.js +161 -0
  7. package/dist/generator.js.map +1 -0
  8. package/dist/helpers/genEnum.js +9 -0
  9. package/dist/helpers/genEnum.js.map +1 -0
  10. package/dist/helpers/generateAggregate.js +50 -0
  11. package/dist/helpers/generateAggregate.js.map +1 -0
  12. package/dist/helpers/generateCount.js +50 -0
  13. package/dist/helpers/generateCount.js.map +1 -0
  14. package/dist/helpers/generateCreate.js +51 -0
  15. package/dist/helpers/generateCreate.js.map +1 -0
  16. package/dist/helpers/generateCreateMany.js +51 -0
  17. package/dist/helpers/generateCreateMany.js.map +1 -0
  18. package/dist/helpers/generateDelete.js +52 -0
  19. package/dist/helpers/generateDelete.js.map +1 -0
  20. package/dist/helpers/generateDeleteMany.js +50 -0
  21. package/dist/helpers/generateDeleteMany.js.map +1 -0
  22. package/dist/helpers/generateFindFirst.js +61 -0
  23. package/dist/helpers/generateFindFirst.js.map +1 -0
  24. package/dist/helpers/generateFindMany.js +61 -0
  25. package/dist/helpers/generateFindMany.js.map +1 -0
  26. package/dist/helpers/generateFindUnique copy.js +49 -0
  27. package/dist/helpers/generateFindUnique copy.js.map +1 -0
  28. package/dist/helpers/generateFindUnique.js +61 -0
  29. package/dist/helpers/generateFindUnique.js.map +1 -0
  30. package/dist/helpers/generateGroupBy.js +50 -0
  31. package/dist/helpers/generateGroupBy.js.map +1 -0
  32. package/dist/helpers/generateImportPrismaStatement.js +26 -0
  33. package/dist/helpers/generateImportPrismaStatement.js.map +1 -0
  34. package/dist/helpers/generatePrismaImport.js +2 -0
  35. package/dist/helpers/generatePrismaImport.js.map +1 -0
  36. package/dist/helpers/generateRouteFile.js +181 -0
  37. package/dist/helpers/generateRouteFile.js.map +1 -0
  38. package/dist/helpers/generateUpdate.js +55 -0
  39. package/dist/helpers/generateUpdate.js.map +1 -0
  40. package/dist/helpers/generateUpdateMany.js +52 -0
  41. package/dist/helpers/generateUpdateMany.js.map +1 -0
  42. package/dist/helpers/generateUpsert.js +52 -0
  43. package/dist/helpers/generateUpsert.js.map +1 -0
  44. package/dist/utils/formatFile.js +26 -0
  45. package/dist/utils/formatFile.js.map +1 -0
  46. package/dist/utils/getGeneratorOptions.js +14 -0
  47. package/dist/utils/getGeneratorOptions.js.map +1 -0
  48. package/dist/utils/writeFileSafely.js +21 -0
  49. package/dist/utils/writeFileSafely.js.map +1 -0
  50. package/package.json +80 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ # 1.0.0 (2024-05-15)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **generator:** update minimum required Node.js version to 20.0 in engines field ([1b4e7b2](https://github.com/multipliedtwice/prisma-generator-express/commit/1b4e7b2a8e29cc8a9710cc6393ada81b01631de3))
package/dist/bin.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ require("./generator");
5
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AACA,uBAAoB"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GENERATOR_NAME = void 0;
4
+ exports.GENERATOR_NAME = 'prisma-generator-express';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,0BAA0B,CAAA"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const generator_helper_1 = require("@prisma/generator-helper");
4
+ const sdk_1 = require("@prisma/sdk");
5
+ const constants_1 = require("./constants");
6
+ const writeFileSafely_1 = require("./utils/writeFileSafely");
7
+ const generateFindUnique_1 = require("./helpers/generateFindUnique");
8
+ const generateImportPrismaStatement_1 = require("./helpers/generateImportPrismaStatement");
9
+ const generateFindMany_1 = require("./helpers/generateFindMany");
10
+ const generateFindFirst_1 = require("./helpers/generateFindFirst");
11
+ const generateCreate_1 = require("./helpers/generateCreate");
12
+ const generateRouteFile_1 = require("./helpers/generateRouteFile");
13
+ const generateCreateMany_1 = require("./helpers/generateCreateMany");
14
+ const generateUpdate_1 = require("./helpers/generateUpdate");
15
+ const generateUpdateMany_1 = require("./helpers/generateUpdateMany");
16
+ const generateUpsert_1 = require("./helpers/generateUpsert");
17
+ const generateDelete_1 = require("./helpers/generateDelete");
18
+ const generateDeleteMany_1 = require("./helpers/generateDeleteMany");
19
+ const generateAggregate_1 = require("./helpers/generateAggregate");
20
+ const generateCount_1 = require("./helpers/generateCount");
21
+ const generateGroupBy_1 = require("./helpers/generateGroupBy");
22
+ const { version } = require('../package.json');
23
+ (0, generator_helper_1.generatorHandler)({
24
+ onManifest() {
25
+ sdk_1.logger.info(`${constants_1.GENERATOR_NAME}:Registered`);
26
+ return {
27
+ version,
28
+ defaultOutput: '../generated',
29
+ prettyName: constants_1.GENERATOR_NAME,
30
+ };
31
+ },
32
+ onGenerate: async (options) => {
33
+ const prismaImportStatement = (0, generateImportPrismaStatement_1.generateImportPrismaStatement)(options);
34
+ options.dmmf.datamodel.models.forEach(async (model) => {
35
+ await (0, writeFileSafely_1.writeFileSafely)({
36
+ content: (0, generateFindUnique_1.generateFindUniqueFunction)({
37
+ model,
38
+ prismaImportStatement,
39
+ }),
40
+ options,
41
+ model,
42
+ operation: 'FindUnique',
43
+ });
44
+ await (0, writeFileSafely_1.writeFileSafely)({
45
+ content: (0, generateFindFirst_1.generateFindFirstFunction)({
46
+ model,
47
+ prismaImportStatement,
48
+ }),
49
+ options,
50
+ model,
51
+ operation: 'FindFirst',
52
+ });
53
+ await (0, writeFileSafely_1.writeFileSafely)({
54
+ content: (0, generateFindMany_1.generateFindManyFunction)({
55
+ model,
56
+ prismaImportStatement,
57
+ }),
58
+ options,
59
+ model,
60
+ operation: 'FindMany',
61
+ });
62
+ await (0, writeFileSafely_1.writeFileSafely)({
63
+ content: (0, generateCreate_1.generateCreateFunction)({
64
+ model,
65
+ prismaImportStatement,
66
+ }),
67
+ options,
68
+ model,
69
+ operation: 'Create',
70
+ });
71
+ await (0, writeFileSafely_1.writeFileSafely)({
72
+ content: (0, generateCreateMany_1.generateCreateManyFunction)({
73
+ model,
74
+ prismaImportStatement,
75
+ }),
76
+ options,
77
+ model,
78
+ operation: 'CreateMany',
79
+ });
80
+ await (0, writeFileSafely_1.writeFileSafely)({
81
+ content: (0, generateUpdate_1.generateUpdateFunction)({
82
+ model,
83
+ prismaImportStatement,
84
+ }),
85
+ options,
86
+ model,
87
+ operation: 'Update',
88
+ });
89
+ await (0, writeFileSafely_1.writeFileSafely)({
90
+ content: (0, generateUpdateMany_1.generateUpdateManyFunction)({
91
+ model,
92
+ prismaImportStatement,
93
+ }),
94
+ options,
95
+ model,
96
+ operation: 'UpdateMany',
97
+ });
98
+ await (0, writeFileSafely_1.writeFileSafely)({
99
+ content: (0, generateUpsert_1.generateUpsertFunction)({
100
+ model,
101
+ prismaImportStatement,
102
+ }),
103
+ options,
104
+ model,
105
+ operation: 'Upsert',
106
+ });
107
+ await (0, writeFileSafely_1.writeFileSafely)({
108
+ content: (0, generateDelete_1.generateDeleteFunction)({
109
+ model,
110
+ prismaImportStatement,
111
+ }),
112
+ options,
113
+ model,
114
+ operation: 'Delete',
115
+ });
116
+ await (0, writeFileSafely_1.writeFileSafely)({
117
+ content: (0, generateDeleteMany_1.generateDeleteManyFunction)({
118
+ model,
119
+ prismaImportStatement,
120
+ }),
121
+ options,
122
+ model,
123
+ operation: 'DeleteMany',
124
+ });
125
+ await (0, writeFileSafely_1.writeFileSafely)({
126
+ content: (0, generateAggregate_1.generateAggregateFunction)({
127
+ model,
128
+ prismaImportStatement,
129
+ }),
130
+ options,
131
+ model,
132
+ operation: 'Aggregate',
133
+ });
134
+ await (0, writeFileSafely_1.writeFileSafely)({
135
+ content: (0, generateCount_1.generateCountFunction)({
136
+ model,
137
+ prismaImportStatement,
138
+ }),
139
+ options,
140
+ model,
141
+ operation: 'Count',
142
+ });
143
+ await (0, writeFileSafely_1.writeFileSafely)({
144
+ content: (0, generateGroupBy_1.generateGroupByFunction)({
145
+ model,
146
+ prismaImportStatement,
147
+ }),
148
+ options,
149
+ model,
150
+ operation: 'GroupBy',
151
+ });
152
+ await (0, writeFileSafely_1.writeFileSafely)({
153
+ content: (0, generateRouteFile_1.generateRouterFunction)({ model }),
154
+ options,
155
+ model,
156
+ operation: 'index',
157
+ });
158
+ });
159
+ },
160
+ });
161
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +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;AAEnE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAE9C,IAAA,mCAAgB,EAAC;IACf,UAAU;QACR,YAAM,CAAC,IAAI,CAAC,GAAG,0BAAc,aAAa,CAAC,CAAA;QAC3C,OAAO;YACL,OAAO;YACP,aAAa,EAAE,cAAc;YAC7B,UAAU,EAAE,0BAAc;SAC3B,CAAA;IACH,CAAC;IACD,UAAU,EAAE,KAAK,EAAE,OAAyB,EAAE,EAAE;QAC9C,MAAM,qBAAqB,GAAG,IAAA,6DAA6B,EAAC,OAAO,CAAC,CAAA;QAEpE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACpD,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,+CAA0B,EAAC;oBAClC,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,YAAY;aACxB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,6CAAyB,EAAC;oBACjC,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,WAAW;aACvB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,2CAAwB,EAAC;oBAChC,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,UAAU;aACtB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,uCAAsB,EAAC;oBAC9B,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,+CAA0B,EAAC;oBAClC,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,YAAY;aACxB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,uCAAsB,EAAC;oBAC9B,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,+CAA0B,EAAC;oBAClC,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,YAAY;aACxB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,uCAAsB,EAAC;oBAC9B,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,uCAAsB,EAAC;oBAC9B,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,+CAA0B,EAAC;oBAClC,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,YAAY;aACxB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,6CAAyB,EAAC;oBACjC,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,WAAW;aACvB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,qCAAqB,EAAC;oBAC7B,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,OAAO;aACnB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,yCAAuB,EAAC;oBAC/B,KAAK;oBACL,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,SAAS;aACrB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,0CAAsB,EAAC,EAAE,KAAK,EAAE,CAAC;gBAC1C,OAAO;gBACP,KAAK;gBACL,SAAS,EAAE,OAAO;aACnB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genEnum = void 0;
4
+ const genEnum = ({ name, values }) => {
5
+ const enumValues = values.map(({ name }) => `${name}="${name}"`).join(',\n');
6
+ return `enum ${name} { \n${enumValues}\n }`;
7
+ };
8
+ exports.genEnum = genEnum;
9
+ //# sourceMappingURL=genEnum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genEnum.js","sourceRoot":"","sources":["../../src/helpers/genEnum.ts"],"names":[],"mappings":";;;AAEO,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAsB,EAAE,EAAE;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE5E,OAAO,QAAQ,IAAI,QAAQ,UAAU,MAAM,CAAA;AAC7C,CAAC,CAAA;AAJY,QAAA,OAAO,WAInB"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateAggregateFunction = void 0;
4
+ const generateAggregateFunction = (options) => {
5
+ const { model, prismaImportStatement } = options;
6
+ const modelName = model.name;
7
+ const functionName = `${modelName}Aggregate`;
8
+ const argsTypeName = `Prisma.${modelName}AggregateArgs`;
9
+ return `
10
+ ${prismaImportStatement}
11
+ import { Request, Response, NextFunction } from 'express';
12
+ import { RequestHandler, ParamsDictionary } from 'express-serve-static-core'
13
+ import { ZodTypeAny } from 'zod';
14
+
15
+ interface AggregateRequest extends Request {
16
+ prisma: PrismaClient;
17
+ body: ${argsTypeName};
18
+ outputValidation?: ZodTypeAny;
19
+ omitOutputValidation?: boolean;
20
+ }
21
+
22
+ export type AggregateMiddleware = RequestHandler<ParamsDictionary, any, ${argsTypeName}, Record<string, any>>;
23
+
24
+ export async function ${functionName}(req: AggregateRequest, res: Response, next: NextFunction) {
25
+ try {
26
+ if (!req.outputValidation && !req.omitOutputValidation) {
27
+ throw new Error('Output validation schema or omission flag must be provided.');
28
+ }
29
+
30
+ const result = await req.prisma.${modelName.toLowerCase()}.aggregate(req.body);
31
+
32
+ if (!req.omitOutputValidation && req.outputValidation) {
33
+ const validationResult = req.outputValidation.safeParse(result);
34
+ if (validationResult.success) {
35
+ res.status(200).json(validationResult.data);
36
+ } else {
37
+ res.status(400).json({ error: 'Invalid data format', details: validationResult.error });
38
+ }
39
+ } else {
40
+ res.status(200).json(result);
41
+ }
42
+ } catch (error) {
43
+ console.error('Error in handling aggregation request:', error);
44
+ res.status(500).json({ error: error.message });
45
+ next(error);
46
+ }
47
+ }`;
48
+ };
49
+ exports.generateAggregateFunction = generateAggregateFunction;
50
+ //# sourceMappingURL=generateAggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateAggregate.js","sourceRoot":"","sources":["../../src/helpers/generateAggregate.ts"],"names":[],"mappings":";;;AASO,MAAM,yBAAyB,GAAG,CAAC,OAGzC,EAAU,EAAE;IACX,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,YAAY,GAAG,GAAG,SAAS,WAAW,CAAA;IAC5C,MAAM,YAAY,GAAG,UAAU,SAAS,eAAe,CAAA;IAEvD,OAAO;EACP,qBAAqB;;;;;;;UAOb,YAAY;;;;;0EAKoD,YAAY;;wBAE9D,YAAY;;;;;;sCAME,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;EAiB3D,CAAA;AACF,CAAC,CAAA;AAhDY,QAAA,yBAAyB,6BAgDrC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateCountFunction = void 0;
4
+ const generateCountFunction = (options) => {
5
+ const { model, prismaImportStatement } = options;
6
+ const modelName = model.name;
7
+ const functionName = `${modelName}Count`;
8
+ const argsTypeName = `Prisma.${modelName}CountArgs`;
9
+ return `
10
+ ${prismaImportStatement}
11
+ import { Request, Response, NextFunction } from 'express';
12
+ import { RequestHandler, ParamsDictionary } from 'express-serve-static-core'
13
+ import { ZodTypeAny } from 'zod';
14
+
15
+ interface CountRequest extends Request {
16
+ prisma: PrismaClient;
17
+ body: ${argsTypeName};
18
+ outputValidation?: ZodTypeAny;
19
+ omitOutputValidation?: boolean;
20
+ }
21
+
22
+ export type CountMiddleware = RequestHandler<ParamsDictionary, any, ${argsTypeName}, Record<string, any>>;
23
+
24
+ export async function ${functionName}(req: CountRequest, res: Response, next: NextFunction) {
25
+ try {
26
+ if (!req.outputValidation && !req.omitOutputValidation) {
27
+ throw new Error('Output validation schema or omission flag must be provided.');
28
+ }
29
+
30
+ const result = await req.prisma.${modelName.toLowerCase()}.count(req.body);
31
+
32
+ if (!req.omitOutputValidation && req.outputValidation) {
33
+ const validationResult = req.outputValidation.safeParse(result);
34
+ if (validationResult.success) {
35
+ res.status(200).json(validationResult.data);
36
+ } else {
37
+ res.status(400).json({ error: 'Invalid data format', details: validationResult.error });
38
+ }
39
+ } else {
40
+ res.status(200).json(result);
41
+ }
42
+ } catch (error) {
43
+ console.error('Error in handling count request:', error);
44
+ res.status(500).json({ error: error.message });
45
+ next(error);
46
+ }
47
+ }`;
48
+ };
49
+ exports.generateCountFunction = generateCountFunction;
50
+ //# sourceMappingURL=generateCount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateCount.js","sourceRoot":"","sources":["../../src/helpers/generateCount.ts"],"names":[],"mappings":";;;AASO,MAAM,qBAAqB,GAAG,CAAC,OAGrC,EAAU,EAAE;IACX,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,YAAY,GAAG,GAAG,SAAS,OAAO,CAAA;IACxC,MAAM,YAAY,GAAG,UAAU,SAAS,WAAW,CAAA;IAEnD,OAAO;EACP,qBAAqB;;;;;;;UAOb,YAAY;;;;;sEAKgD,YAAY;;wBAE1D,YAAY;;;;;;sCAME,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;EAiB3D,CAAA;AACF,CAAC,CAAA;AAhDY,QAAA,qBAAqB,yBAgDjC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateCreateFunction = void 0;
4
+ const generateCreateFunction = (options) => {
5
+ const { model, prismaImportStatement } = options;
6
+ const modelName = model.name;
7
+ const functionName = `${modelName}Create`;
8
+ const argsTypeName = `Prisma.${modelName}CreateArgs`;
9
+ return `
10
+ ${prismaImportStatement}
11
+ import { Request, Response, NextFunction } from 'express';
12
+ import { RequestHandler, ParamsDictionary } from 'express-serve-static-core'
13
+ import { ZodTypeAny } from 'zod';
14
+
15
+ interface CreateRequest extends Request {
16
+ prisma: PrismaClient;
17
+ body: ${argsTypeName};
18
+ outputValidation?: ZodTypeAny;
19
+ omitOutputValidation?: boolean;
20
+ }
21
+
22
+ export type CreateMiddleware = RequestHandler<ParamsDictionary, any, ${argsTypeName}, Record<string, any>>
23
+
24
+ export async function ${functionName}(req: CreateRequest, res: Response, next: NextFunction) {
25
+ try {
26
+ if (!req.outputValidation && !req.omitOutputValidation) {
27
+ throw new Error('Output validation schema or omission flag must be provided.');
28
+ }
29
+
30
+ const data = await req.prisma.${modelName.toLowerCase()}.create(req.body);
31
+ if (!req.omitOutputValidation && req.outputValidation) {
32
+ const validationResult = req.outputValidation.safeParse(data);
33
+ if (validationResult.success) {
34
+ res.status(201).json(validationResult.data);
35
+ } else {
36
+ res.status(400).json({ error: 'Invalid data format', details: validationResult.error });
37
+ }
38
+ } else if (!req.omitOutputValidation) {
39
+ throw new Error('Output validation schema must be provided unless explicitly omitted.');
40
+ } else {
41
+ res.status(201).json(data);
42
+ }
43
+ } catch (error) {
44
+ console.error('Error in handling create request:', error);
45
+ res.status(500).json({ error: error.message });
46
+ next(error);
47
+ }
48
+ }`;
49
+ };
50
+ exports.generateCreateFunction = generateCreateFunction;
51
+ //# sourceMappingURL=generateCreate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateCreate.js","sourceRoot":"","sources":["../../src/helpers/generateCreate.ts"],"names":[],"mappings":";;;AAQO,MAAM,sBAAsB,GAAG,CAAC,OAGtC,EAAU,EAAE;IACX,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,YAAY,GAAG,GAAG,SAAS,QAAQ,CAAA;IACzC,MAAM,YAAY,GAAG,UAAU,SAAS,YAAY,CAAA;IAEpD,OAAO;EACP,qBAAqB;;;;;;;UAOb,YAAY;;;;;uEAKiD,YAAY;;wBAE3D,YAAY;;;;;;oCAMA,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;EAkBzD,CAAA;AACF,CAAC,CAAA;AAjDY,QAAA,sBAAsB,0BAiDlC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateCreateManyFunction = void 0;
4
+ const generateCreateManyFunction = (options) => {
5
+ const { model, prismaImportStatement } = options;
6
+ const modelName = model.name;
7
+ const functionName = `${modelName}CreateMany`;
8
+ const argsTypeName = `Prisma.${modelName}CreateManyArgs`;
9
+ return `
10
+ ${prismaImportStatement}
11
+ import { Request, Response, NextFunction } from 'express';
12
+ import { RequestHandler, ParamsDictionary } from 'express-serve-static-core';
13
+ import { ZodTypeAny } from 'zod';
14
+
15
+ interface CreateManyRequest extends Request {
16
+ prisma: PrismaClient;
17
+ body: ${argsTypeName};
18
+ outputValidation?: ZodTypeAny;
19
+ omitOutputValidation?: boolean;
20
+ }
21
+
22
+ export type CreateManyMiddleware = RequestHandler<ParamsDictionary, any, ${argsTypeName}, Record<string, any>>
23
+
24
+ export async function ${functionName}(req: CreateManyRequest, res: Response, next: NextFunction) {
25
+ try {
26
+ if (!req.outputValidation && !req.omitOutputValidation) {
27
+ throw new Error('Output validation schema or omission flag must be provided.');
28
+ }
29
+
30
+ const data = await req.prisma.${modelName.toLowerCase()}.createMany(req.body);
31
+ if (!req.omitOutputValidation && req.outputValidation) {
32
+ const validationResult = req.outputValidation.safeParse(data);
33
+ if (validationResult.success) {
34
+ res.status(201).json(validationResult.data);
35
+ } else {
36
+ res.status(400).json({ error: 'Invalid data format', details: validationResult.error });
37
+ }
38
+ } else if (!req.omitOutputValidation) {
39
+ throw new Error('Output validation schema must be provided unless explicitly omitted.');
40
+ } else {
41
+ res.status(201).json(data);
42
+ }
43
+ } catch (error) {
44
+ console.error('Error in handling createMany request:', error);
45
+ res.status(500).json({ error: error.message });
46
+ next(error);
47
+ }
48
+ }`;
49
+ };
50
+ exports.generateCreateManyFunction = generateCreateManyFunction;
51
+ //# sourceMappingURL=generateCreateMany.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateCreateMany.js","sourceRoot":"","sources":["../../src/helpers/generateCreateMany.ts"],"names":[],"mappings":";;;AAQO,MAAM,0BAA0B,GAAG,CAAC,OAG1C,EAAU,EAAE;IACX,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,YAAY,GAAG,GAAG,SAAS,YAAY,CAAA;IAC7C,MAAM,YAAY,GAAG,UAAU,SAAS,gBAAgB,CAAA;IAExD,OAAO;EACP,qBAAqB;;;;;;;UAOb,YAAY;;;;;2EAKqD,YAAY;;wBAE/D,YAAY;;;;;;oCAMA,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;EAkBzD,CAAA;AACF,CAAC,CAAA;AAjDY,QAAA,0BAA0B,8BAiDtC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDeleteFunction = void 0;
4
+ const generateDeleteFunction = (options) => {
5
+ const { model, prismaImportStatement } = options;
6
+ const modelName = model.name;
7
+ const functionName = `${modelName}Delete`;
8
+ const argsTypeName = `Prisma.${modelName}DeleteArgs`;
9
+ return `
10
+ ${prismaImportStatement}
11
+ import { Request, Response, NextFunction } from 'express';
12
+ import { RequestHandler, ParamsDictionary } from 'express-serve-static-core';
13
+ import { ZodTypeAny } from 'zod';
14
+
15
+ interface DeleteRequest extends Request {
16
+ prisma: PrismaClient;
17
+ body: ${argsTypeName};
18
+ outputValidation?: ZodTypeAny;
19
+ omitOutputValidation?: boolean;
20
+ }
21
+
22
+ export type DeleteMiddleware = RequestHandler<ParamsDictionary, any, ${argsTypeName}, Record<string, any>>
23
+
24
+ export async function ${functionName}(req: DeleteRequest, res: Response, next: NextFunction) {
25
+ try {
26
+ if (!req.outputValidation && !req.omitOutputValidation) {
27
+ throw new Error('Output validation schema or omission flag must be provided.');
28
+ }
29
+
30
+ const data = await req.prisma.${modelName.toLowerCase()}.delete(req.body);
31
+
32
+ if (!req.omitOutputValidation && req.outputValidation) {
33
+ const validationResult = req.outputValidation.safeParse(data);
34
+ if (validationResult.success) {
35
+ res.status(200).json(validationResult.data);
36
+ } else {
37
+ res.status(400).json({ error: 'Invalid data format', details: validationResult.error });
38
+ }
39
+ } else if (!req.omitOutputValidation) {
40
+ throw new Error('Output validation schema must be provided unless explicitly omitted.');
41
+ } else {
42
+ res.status(200).json(data);
43
+ }
44
+ } catch (error) {
45
+ console.error('Error in handling delete request:', error);
46
+ res.status(500).json({ error: error.message });
47
+ next(error);
48
+ }
49
+ }`;
50
+ };
51
+ exports.generateDeleteFunction = generateDeleteFunction;
52
+ //# sourceMappingURL=generateDelete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateDelete.js","sourceRoot":"","sources":["../../src/helpers/generateDelete.ts"],"names":[],"mappings":";;;AASO,MAAM,sBAAsB,GAAG,CAAC,OAGtC,EAAU,EAAE;IACX,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,YAAY,GAAG,GAAG,SAAS,QAAQ,CAAA;IACzC,MAAM,YAAY,GAAG,UAAU,SAAS,YAAY,CAAA;IAEpD,OAAO;EACP,qBAAqB;;;;;;;UAOb,YAAY;;;;;uEAKiD,YAAY;;wBAE3D,YAAY;;;;;;oCAMA,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;EAmBzD,CAAA;AACF,CAAC,CAAA;AAlDY,QAAA,sBAAsB,0BAkDlC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDeleteManyFunction = void 0;
4
+ const generateDeleteManyFunction = (options) => {
5
+ const { model, prismaImportStatement } = options;
6
+ const modelName = model.name;
7
+ const functionName = `${modelName}DeleteMany`;
8
+ const argsTypeName = `Prisma.${modelName}DeleteManyArgs`;
9
+ return `
10
+ ${prismaImportStatement}
11
+ import { Request, Response, NextFunction } from 'express';
12
+ import { RequestHandler, ParamsDictionary } from 'express-serve-static-core';
13
+ import { ZodTypeAny } from 'zod';
14
+
15
+ interface DeleteManyRequest extends Request {
16
+ prisma: PrismaClient;
17
+ body: ${argsTypeName};
18
+ outputValidation?: ZodTypeAny;
19
+ omitOutputValidation?: boolean;
20
+ }
21
+
22
+ export type DeleteManyMiddleware = RequestHandler<ParamsDictionary, any, Prisma.${modelName}DeleteManyArgs, Record<string, any>>;
23
+
24
+ export async function ${functionName}(req: DeleteManyRequest, res: Response, next: NextFunction) {
25
+ try {
26
+ if (!req.outputValidation && !req.omitOutputValidation) {
27
+ throw new Error('Output validation schema or omission flag must be provided.');
28
+ }
29
+
30
+ const result = await req.prisma.${modelName.toLowerCase()}.deleteMany(req.body);
31
+
32
+ if (!req.omitOutputValidation && req.outputValidation) {
33
+ const validationResult = req.outputValidation.safeParse(result);
34
+ if (validationResult.success) {
35
+ res.status(200).json(validationResult.data);
36
+ } else {
37
+ res.status(400).json({ error: 'Invalid data format', details: validationResult.error });
38
+ }
39
+ } else {
40
+ res.status(200).json(result);
41
+ }
42
+ } catch (error) {
43
+ console.error('Error in handling batch delete request:', error);
44
+ res.status(500).json({ error: error.message });
45
+ next(error);
46
+ }
47
+ }`;
48
+ };
49
+ exports.generateDeleteManyFunction = generateDeleteManyFunction;
50
+ //# sourceMappingURL=generateDeleteMany.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateDeleteMany.js","sourceRoot":"","sources":["../../src/helpers/generateDeleteMany.ts"],"names":[],"mappings":";;;AASO,MAAM,0BAA0B,GAAG,CAAC,OAG1C,EAAU,EAAE;IACX,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,YAAY,GAAG,GAAG,SAAS,YAAY,CAAA;IAC7C,MAAM,YAAY,GAAG,UAAU,SAAS,gBAAgB,CAAA;IAExD,OAAO;EACP,qBAAqB;;;;;;;UAOb,YAAY;;;;;kFAK4D,SAAS;;wBAEnE,YAAY;;;;;;sCAME,SAAS,CAAC,WAAW,EAAE;;;;;;;;;;;;;;;;;EAiB3D,CAAA;AACF,CAAC,CAAA;AAhDY,QAAA,0BAA0B,8BAgDtC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateFindFirstFunction = void 0;
4
+ const generateFindFirstFunction = (options) => {
5
+ const { model, prismaImportStatement } = options;
6
+ const modelName = model.name;
7
+ const functionName = `${modelName}FindFirst`;
8
+ const queryTypeName = `Prisma.${modelName}FindFirstArgs`;
9
+ return `
10
+ ${prismaImportStatement.replace('{ Prisma }', `{ Prisma, ${modelName} }`)}
11
+ import { Request, Response, NextFunction } from 'express'
12
+ import {
13
+ RequestHandler,
14
+ ParamsDictionary,
15
+ } from 'express-serve-static-core'
16
+ import { ParsedQs } from 'qs';
17
+ import { ZodTypeAny } from 'zod';
18
+
19
+ export interface FindFirstRequest extends Request {
20
+ prisma: PrismaClient;
21
+ query: ${queryTypeName} & ParsedQs;
22
+ outputValidation?: ZodTypeAny;
23
+ omitOutputValidation?: boolean;
24
+ passToNext?: boolean;
25
+ locals: {
26
+ data?: ${modelName} | null
27
+ }
28
+ }
29
+ export type FindFirstMiddleware = RequestHandler<ParamsDictionary, any, any, ${queryTypeName} & ParsedQs, Record<string, any>>
30
+
31
+ export async function ${functionName}(req: FindFirstRequest, res: Response, next: NextFunction) {
32
+ try {
33
+ if (!req.outputValidation && !req.omitOutputValidation) {
34
+ throw new Error('Output validation schema or omission flag must be provided.');
35
+ }
36
+
37
+ const data = await req.prisma.${modelName.toLowerCase()}.findFirst(req.query as ${queryTypeName});
38
+ if (req.passToNext) {
39
+ req.locals.data = data;
40
+ next();
41
+ } else if (!req.omitOutputValidation && req.outputValidation) {
42
+ const validationResult = req.outputValidation.safeParse(data);
43
+ if (validationResult.success) {
44
+ res.status(200).json(validationResult.data);
45
+ } else {
46
+ res.status(400).json({ error: 'Invalid data format', details: validationResult.error });
47
+ }
48
+ } else if (!req.omitOutputValidation) {
49
+ throw new Error('Output validation schema must be provided unless explicitly omitted. Attach omitOutputValidation = true to request to suppress this error.');
50
+ } else {
51
+ res.status(200).json(data);
52
+ }
53
+ } catch (error) {
54
+ console.error('Error in handling request:', error);
55
+ res.status(500).json({ error: error.message });
56
+ next(error);
57
+ }
58
+ }`;
59
+ };
60
+ exports.generateFindFirstFunction = generateFindFirstFunction;
61
+ //# sourceMappingURL=generateFindFirst.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateFindFirst.js","sourceRoot":"","sources":["../../src/helpers/generateFindFirst.ts"],"names":[],"mappings":";;;AAQO,MAAM,yBAAyB,GAAG,CAAC,OAGzC,EAAU,EAAE;IACX,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,YAAY,GAAG,GAAG,SAAS,WAAW,CAAA;IAC5C,MAAM,aAAa,GAAG,UAAU,SAAS,eAAe,CAAA;IAExD,OAAO;EACP,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,aAAa,SAAS,IAAI,CAAC;;;;;;;;;;;WAW9D,aAAa;;;;;aAKX,SAAS;;;+EAGyD,aAAa;;wBAEpE,YAAY;;;;;;oCAMA,SAAS,CAAC,WAAW,EAAE,2BAA2B,aAAa;;;;;;;;;;;;;;;;;;;;;EAqBjG,CAAA;AACF,CAAC,CAAA;AA3DY,QAAA,yBAAyB,6BA2DrC"}