prisma-generator-express 1.16.6 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -8
- package/dist/generator.js +8 -129
- package/dist/generator.js.map +1 -1
- package/dist/helpers/generateImportPrismaStatement.js +1 -2
- package/dist/helpers/generateImportPrismaStatement.js.map +1 -1
- package/dist/helpers/generateOperation.js +471 -0
- package/dist/helpers/generateOperation.js.map +1 -0
- package/dist/helpers/generateRouteFile.js +19 -2
- package/dist/helpers/generateRouteFile.js.map +1 -1
- package/dist/utils/strings.js +2 -2
- package/dist/utils/strings.js.map +1 -1
- package/package.json +19 -21
- package/src/copy/createOutputValidatorMiddleware.ts +1 -1
- package/src/copy/createValidatorMiddleware.ts +1 -1
- package/src/copy/misc.ts +1 -1
- package/src/copy/parseQueryParams.ts +1 -1
- package/src/copy/routeConfig.ts +5 -3
- package/src/copy/transformZod.ts +15 -16
- package/src/generator.ts +9 -143
- package/src/helpers/generateOperation.ts +515 -0
- package/src/helpers/generateRouteFile.ts +19 -1
- package/dist/helpers/generateAggregate.js +0 -51
- package/dist/helpers/generateAggregate.js.map +0 -1
- package/dist/helpers/generateCount.js +0 -50
- package/dist/helpers/generateCount.js.map +0 -1
- package/dist/helpers/generateCreate.js +0 -49
- package/dist/helpers/generateCreate.js.map +0 -1
- package/dist/helpers/generateCreateMany.js +0 -49
- package/dist/helpers/generateCreateMany.js.map +0 -1
- package/dist/helpers/generateDelete.js +0 -49
- package/dist/helpers/generateDelete.js.map +0 -1
- package/dist/helpers/generateDeleteMany.js +0 -49
- package/dist/helpers/generateDeleteMany.js.map +0 -1
- package/dist/helpers/generateFindFirst.js +0 -56
- package/dist/helpers/generateFindFirst.js.map +0 -1
- package/dist/helpers/generateFindMany.js +0 -56
- package/dist/helpers/generateFindMany.js.map +0 -1
- package/dist/helpers/generateFindUnique.js +0 -56
- package/dist/helpers/generateFindUnique.js.map +0 -1
- package/dist/helpers/generateGroupBy.js +0 -51
- package/dist/helpers/generateGroupBy.js.map +0 -1
- package/dist/helpers/generateUpdate.js +0 -49
- package/dist/helpers/generateUpdate.js.map +0 -1
- package/dist/helpers/generateUpdateMany.js +0 -49
- package/dist/helpers/generateUpdateMany.js.map +0 -1
- package/dist/helpers/generateUpsert.js +0 -49
- package/dist/helpers/generateUpsert.js.map +0 -1
- package/src/helpers/generateAggregate.ts +0 -59
- package/src/helpers/generateCount.ts +0 -58
- package/src/helpers/generateCreate.ts +0 -56
- package/src/helpers/generateCreateMany.ts +0 -55
- package/src/helpers/generateDelete.ts +0 -57
- package/src/helpers/generateDeleteMany.ts +0 -57
- package/src/helpers/generateFindFirst.ts +0 -62
- package/src/helpers/generateFindMany.ts +0 -62
- package/src/helpers/generateFindUnique.ts +0 -62
- package/src/helpers/generateGroupBy.ts +0 -60
- package/src/helpers/generateUpdate.ts +0 -56
- package/src/helpers/generateUpdateMany.ts +0 -56
- package/src/helpers/generateUpsert.ts +0 -57
package/README.md
CHANGED
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
|
|
9
9
|
This tool helps you quickly create API endpoints in your Express app using your Prisma models.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Exposes Prisma API to clients - all operations with database is available, including all relationships at any depth.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
13
|
+
When you run `npx prisma generate`, it will:
|
|
14
|
+
|
|
15
|
+
- Generate service (CRUD) functions that you can import into your Express routes.
|
|
16
|
+
- Create a router generator function that lets you select which routes to enable in your express app and which middlewares to apply.
|
|
16
17
|
|
|
17
18
|
## Table of Contents
|
|
18
19
|
|
|
@@ -172,7 +173,7 @@ const afterFindFirst: RequestHandler = (
|
|
|
172
173
|
* 6. Custom middlewares: config.{method}.after[] (not available if req.passToNext is falsy)
|
|
173
174
|
*/
|
|
174
175
|
const userAccounRouterConfig: RouteConfig<RequestHandler> = {
|
|
175
|
-
|
|
176
|
+
findFirst: {
|
|
176
177
|
before: [beforeFindFirst],
|
|
177
178
|
after: [afterFindFirst],
|
|
178
179
|
input: {
|
|
@@ -209,7 +210,7 @@ The following properties can be attached to the `req` object to control the beha
|
|
|
209
210
|
| ---------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
210
211
|
| `prisma` | PrismaClient | An instance of PrismaClient that allows the middleware to interact with your database. |
|
|
211
212
|
| `passToNext` | boolean | Optional, if `true` - the result of a Prisma request will be passed to the next middleware as `if (req.locals) req.locals.data` |
|
|
212
|
-
| `outputValidation` |
|
|
213
|
+
| `outputValidation` | ZodType | (Optional) A Zod schema used to validate the data returned from the Prisma query before sending it to the client. |
|
|
213
214
|
|
|
214
215
|
## Router Schema
|
|
215
216
|
|
|
@@ -276,11 +277,11 @@ type QueryParams = string | ParsedQs | string[] | ParsedQs[] | undefined
|
|
|
276
277
|
|
|
277
278
|
Recursively converts strings "true", "false", "null", and "number" into correct formats.
|
|
278
279
|
|
|
279
|
-
### allow<T extends z.
|
|
280
|
+
### allow<T extends z.ZodType>( schema: T, allowedPaths: string[] )
|
|
280
281
|
|
|
281
282
|
Accepts schema and `['array.of.allowed.paths']`. Throws an error if provided something that doesn't fit allowed schema.
|
|
282
283
|
|
|
283
|
-
### forbid<T extends z.
|
|
284
|
+
### forbid<T extends z.ZodType>( schema: T, forbiddenPaths: string[] )
|
|
284
285
|
|
|
285
286
|
Same as `allow` but works in opposite way.
|
|
286
287
|
|
package/dist/generator.js
CHANGED
|
@@ -4,21 +4,9 @@ const generator_helper_1 = require("@prisma/generator-helper");
|
|
|
4
4
|
const sdk_1 = require("@prisma/sdk");
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
6
|
const writeFileSafely_1 = require("./utils/writeFileSafely");
|
|
7
|
-
const generateFindUnique_1 = require("./helpers/generateFindUnique");
|
|
8
7
|
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
8
|
const generateRouteFile_1 = require("./helpers/generateRouteFile");
|
|
13
|
-
const
|
|
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");
|
|
9
|
+
const generateOperation_1 = require("./helpers/generateOperation");
|
|
22
10
|
const copyFiles_1 = require("./utils/copyFiles");
|
|
23
11
|
const { version } = require('../package.json');
|
|
24
12
|
(0, generator_helper_1.generatorHandler)({
|
|
@@ -38,123 +26,14 @@ const { version } = require('../package.json');
|
|
|
38
26
|
sdk_1.logger.info(`Skipping generation for model ${model.name} as it is marked with 'generator off'.`);
|
|
39
27
|
continue;
|
|
40
28
|
}
|
|
41
|
-
|
|
42
|
-
|
|
29
|
+
for (const cfg of generateOperation_1.OPERATION_CONFIGS) {
|
|
30
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
31
|
+
content: (0, generateOperation_1.generateOperationFunction)(cfg, model, prismaImportStatement),
|
|
32
|
+
options,
|
|
43
33
|
model,
|
|
44
|
-
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
model,
|
|
48
|
-
operation: 'FindUnique',
|
|
49
|
-
});
|
|
50
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
51
|
-
content: (0, generateFindFirst_1.generateFindFirstFunction)({
|
|
52
|
-
model,
|
|
53
|
-
prismaImportStatement,
|
|
54
|
-
}),
|
|
55
|
-
options,
|
|
56
|
-
model,
|
|
57
|
-
operation: 'FindFirst',
|
|
58
|
-
});
|
|
59
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
60
|
-
content: (0, generateFindMany_1.generateFindManyFunction)({
|
|
61
|
-
model,
|
|
62
|
-
prismaImportStatement,
|
|
63
|
-
}),
|
|
64
|
-
options,
|
|
65
|
-
model,
|
|
66
|
-
operation: 'FindMany',
|
|
67
|
-
});
|
|
68
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
69
|
-
content: (0, generateCreate_1.generateCreateFunction)({
|
|
70
|
-
model,
|
|
71
|
-
prismaImportStatement,
|
|
72
|
-
}),
|
|
73
|
-
options,
|
|
74
|
-
model,
|
|
75
|
-
operation: 'Create',
|
|
76
|
-
});
|
|
77
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
78
|
-
content: (0, generateCreateMany_1.generateCreateManyFunction)({
|
|
79
|
-
model,
|
|
80
|
-
prismaImportStatement,
|
|
81
|
-
}),
|
|
82
|
-
options,
|
|
83
|
-
model,
|
|
84
|
-
operation: 'CreateMany',
|
|
85
|
-
});
|
|
86
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
87
|
-
content: (0, generateUpdate_1.generateUpdateFunction)({
|
|
88
|
-
model,
|
|
89
|
-
prismaImportStatement,
|
|
90
|
-
}),
|
|
91
|
-
options,
|
|
92
|
-
model,
|
|
93
|
-
operation: 'Update',
|
|
94
|
-
});
|
|
95
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
96
|
-
content: (0, generateUpdateMany_1.generateUpdateManyFunction)({
|
|
97
|
-
model,
|
|
98
|
-
prismaImportStatement,
|
|
99
|
-
}),
|
|
100
|
-
options,
|
|
101
|
-
model,
|
|
102
|
-
operation: 'UpdateMany',
|
|
103
|
-
});
|
|
104
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
105
|
-
content: (0, generateUpsert_1.generateUpsertFunction)({
|
|
106
|
-
model,
|
|
107
|
-
prismaImportStatement,
|
|
108
|
-
}),
|
|
109
|
-
options,
|
|
110
|
-
model,
|
|
111
|
-
operation: 'Upsert',
|
|
112
|
-
});
|
|
113
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
114
|
-
content: (0, generateDelete_1.generateDeleteFunction)({
|
|
115
|
-
model,
|
|
116
|
-
prismaImportStatement,
|
|
117
|
-
}),
|
|
118
|
-
options,
|
|
119
|
-
model,
|
|
120
|
-
operation: 'Delete',
|
|
121
|
-
});
|
|
122
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
123
|
-
content: (0, generateDeleteMany_1.generateDeleteManyFunction)({
|
|
124
|
-
model,
|
|
125
|
-
prismaImportStatement,
|
|
126
|
-
}),
|
|
127
|
-
options,
|
|
128
|
-
model,
|
|
129
|
-
operation: 'DeleteMany',
|
|
130
|
-
});
|
|
131
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
132
|
-
content: (0, generateAggregate_1.generateAggregateFunction)({
|
|
133
|
-
model,
|
|
134
|
-
prismaImportStatement,
|
|
135
|
-
}),
|
|
136
|
-
options,
|
|
137
|
-
model,
|
|
138
|
-
operation: 'Aggregate',
|
|
139
|
-
});
|
|
140
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
141
|
-
content: (0, generateCount_1.generateCountFunction)({
|
|
142
|
-
model,
|
|
143
|
-
prismaImportStatement,
|
|
144
|
-
}),
|
|
145
|
-
options,
|
|
146
|
-
model,
|
|
147
|
-
operation: 'Count',
|
|
148
|
-
});
|
|
149
|
-
await (0, writeFileSafely_1.writeFileSafely)({
|
|
150
|
-
content: (0, generateGroupBy_1.generateGroupByFunction)({
|
|
151
|
-
model,
|
|
152
|
-
prismaImportStatement,
|
|
153
|
-
}),
|
|
154
|
-
options,
|
|
155
|
-
model,
|
|
156
|
-
operation: 'GroupBy',
|
|
157
|
-
});
|
|
34
|
+
operation: cfg.operation,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
158
37
|
await (0, writeFileSafely_1.writeFileSafely)({
|
|
159
38
|
content: (0, generateRouteFile_1.generateRouterFunction)({ model }),
|
|
160
39
|
options,
|
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,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":";;AAAA,+DAA6E;AAC7E,qCAAoC;AACpC,2CAA4C;AAC5C,6DAAyD;AACzD,2FAAuF;AACvF,mEAAoE;AACpE,mEAA0F;AAC1F,iDAA6C;AAE7C,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,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACxD,IACE,KAAK,CAAC,aAAa;gBACnB,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,EAC7C,CAAC;gBACD,YAAM,CAAC,IAAI,CACT,iCAAiC,KAAK,CAAC,IAAI,wCAAwC,CACpF,CAAA;gBACD,SAAQ;YACV,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,qCAAiB,EAAE,CAAC;gBACpC,MAAM,IAAA,iCAAe,EAAC;oBACpB,OAAO,EAAE,IAAA,6CAAyB,EAAC,GAAG,EAAE,KAAK,EAAE,qBAAqB,CAAC;oBACrE,OAAO;oBACP,KAAK;oBACL,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAC,CAAA;YACJ,CAAC;YAED,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;QAED,MAAM,IAAA,qBAAS,EAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.generateImportPrismaStatement =
|
|
6
|
+
exports.generateImportPrismaStatement = generateImportPrismaStatement;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
function getImportGeneratorOptions(options) {
|
|
9
9
|
var _a, _b;
|
|
@@ -22,5 +22,4 @@ function generateImportPrismaStatement(generatorOptions) {
|
|
|
22
22
|
const options = getImportGeneratorOptions(generatorOptions);
|
|
23
23
|
return `import type { Prisma } from '${options.outputPath}';\nimport type { PrismaClient } from '${options.outputPath}';\n`;
|
|
24
24
|
}
|
|
25
|
-
exports.generateImportPrismaStatement = generateImportPrismaStatement;
|
|
26
25
|
//# sourceMappingURL=generateImportPrismaStatement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateImportPrismaStatement.js","sourceRoot":"","sources":["../../src/helpers/generateImportPrismaStatement.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generateImportPrismaStatement.js","sourceRoot":"","sources":["../../src/helpers/generateImportPrismaStatement.ts"],"names":[],"mappings":";;;;;AA+BA,sEAMC;AApCD,gDAAuB;AAMvB,SAAS,yBAAyB,CAChC,OAAyB;;IAEzB,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAClD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAC/B,CAAA;IAED,IAAI,CAAC,eAAe,IAAI,CAAC,CAAA,MAAA,eAAe,CAAC,MAAM,0CAAE,KAAK,CAAA,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAC5B,MAAA,OAAO,CAAC,SAAS,CAAC,MAAM,0CAAE,KAAM,EAChC,aAAa,CACd,CAAA;IACD,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAA;IAErD,MAAM,kBAAkB,GAAG,cAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;IAExE,OAAO;QACL,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAI,CAAC,KAAK,CAAC,GAAG,CAAC;KACpE,CAAA;AACH,CAAC;AAED,SAAgB,6BAA6B,CAC3C,gBAAkC;IAElC,MAAM,OAAO,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,CAAA;IAE3D,OAAO,gCAAgC,OAAO,CAAC,UAAU,0CAA0C,OAAO,CAAC,UAAU,MAAM,CAAA;AAC7H,CAAC"}
|