@rapidd/build 2.1.0 → 2.1.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/dist/src/commands/build.js +1 -1
- package/dist/src/commands/build.js.map +1 -1
- package/dist/src/generators/index.d.ts +1 -1
- package/dist/src/generators/index.d.ts.map +1 -1
- package/dist/src/generators/index.js +3 -1
- package/dist/src/generators/index.js.map +1 -1
- package/dist/src/generators/routeGenerator.d.ts +24 -4
- package/dist/src/generators/routeGenerator.d.ts.map +1 -1
- package/dist/src/generators/routeGenerator.js +395 -17
- package/dist/src/generators/routeGenerator.js.map +1 -1
- package/dist/src/parsers/prismaParser.d.ts.map +1 -1
- package/dist/src/parsers/prismaParser.js +22 -7
- package/dist/src/parsers/prismaParser.js.map +1 -1
- package/dist/src/parsers/types.d.ts +1 -0
- package/dist/src/parsers/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -124,7 +124,7 @@ async function buildModels(options) {
|
|
|
124
124
|
}
|
|
125
125
|
// Generate routes
|
|
126
126
|
if (shouldGenerate.route) {
|
|
127
|
-
(0, routeGenerator_1.generateAllRoutes)(filteredModels, routesDir);
|
|
127
|
+
(0, routeGenerator_1.generateAllRoutes)(filteredModels, routesDir, models);
|
|
128
128
|
}
|
|
129
129
|
return { models, enums };
|
|
130
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { generateModelFile, generateAllModels } from './modelGenerator';
|
|
2
|
-
export { generateRouteFile, generateAllRoutes } from './routeGenerator';
|
|
2
|
+
export { generateRouteFile, generateParentRouteFile, generateSubRouteFile, generateAllRoutes } from './routeGenerator';
|
|
3
3
|
export { generateACL } from './aclGenerator';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateACL = exports.generateAllRoutes = exports.generateRouteFile = exports.generateAllModels = exports.generateModelFile = void 0;
|
|
3
|
+
exports.generateACL = exports.generateAllRoutes = exports.generateSubRouteFile = exports.generateParentRouteFile = exports.generateRouteFile = exports.generateAllModels = exports.generateModelFile = void 0;
|
|
4
4
|
// Re-export all generators
|
|
5
5
|
var modelGenerator_1 = require("./modelGenerator");
|
|
6
6
|
Object.defineProperty(exports, "generateModelFile", { enumerable: true, get: function () { return modelGenerator_1.generateModelFile; } });
|
|
7
7
|
Object.defineProperty(exports, "generateAllModels", { enumerable: true, get: function () { return modelGenerator_1.generateAllModels; } });
|
|
8
8
|
var routeGenerator_1 = require("./routeGenerator");
|
|
9
9
|
Object.defineProperty(exports, "generateRouteFile", { enumerable: true, get: function () { return routeGenerator_1.generateRouteFile; } });
|
|
10
|
+
Object.defineProperty(exports, "generateParentRouteFile", { enumerable: true, get: function () { return routeGenerator_1.generateParentRouteFile; } });
|
|
11
|
+
Object.defineProperty(exports, "generateSubRouteFile", { enumerable: true, get: function () { return routeGenerator_1.generateSubRouteFile; } });
|
|
10
12
|
Object.defineProperty(exports, "generateAllRoutes", { enumerable: true, get: function () { return routeGenerator_1.generateAllRoutes; } });
|
|
11
13
|
var aclGenerator_1 = require("./aclGenerator");
|
|
12
14
|
Object.defineProperty(exports, "generateACL", { enumerable: true, get: function () { return aclGenerator_1.generateACL; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/index.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AAC3B,mDAAwE;AAA/D,mHAAA,iBAAiB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC7C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/index.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AAC3B,mDAAwE;AAA/D,mHAAA,iBAAiB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC7C,mDAAuH;AAA9G,mHAAA,iBAAiB,OAAA;AAAE,yHAAA,uBAAuB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC5F,+CAA6C;AAApC,2GAAA,WAAW,OAAA"}
|
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
import type { ModelInfo } from '../parsers/types';
|
|
2
|
+
export interface SubRouteInfo {
|
|
3
|
+
junctionModelName: string;
|
|
4
|
+
junctionModelInfo: ModelInfo;
|
|
5
|
+
subRouteName: string;
|
|
6
|
+
fkFieldToParent: string;
|
|
7
|
+
otherFkField: string;
|
|
8
|
+
}
|
|
2
9
|
/**
|
|
3
|
-
* Generate Fastify route for a
|
|
10
|
+
* Generate Fastify route for a standalone model (TypeScript)
|
|
4
11
|
*/
|
|
5
|
-
export declare function generateRouteFile(modelName: string): string;
|
|
12
|
+
export declare function generateRouteFile(modelName: string, modelInfo: ModelInfo, importPathPrefix?: string): string;
|
|
6
13
|
/**
|
|
7
|
-
* Generate
|
|
14
|
+
* Generate Fastify route for a parent model that has sub-routes (TypeScript)
|
|
8
15
|
*/
|
|
9
|
-
export declare function
|
|
16
|
+
export declare function generateParentRouteFile(modelName: string, modelInfo: ModelInfo, subRoutes: SubRouteInfo[]): string;
|
|
17
|
+
/**
|
|
18
|
+
* Generate Fastify sub-route for a junction table (TypeScript).
|
|
19
|
+
* Uses composite key { fkFieldToParent: parentId, otherFkField: subId }
|
|
20
|
+
* for get, update, and delete operations.
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateSubRouteFile(junctionModelName: string, junctionModelInfo: ModelInfo, parentModelInfo: ModelInfo, fkFieldToParent: string, otherFkField: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Generate all route files with junction-table-aware nested structure.
|
|
25
|
+
* @param models Models to generate routes for (may be filtered by --model)
|
|
26
|
+
* @param routesDir Output directory (e.g. routes/api/v1)
|
|
27
|
+
* @param allModels Full models map for junction detection (defaults to models)
|
|
28
|
+
*/
|
|
29
|
+
export declare function generateAllRoutes(models: Record<string, ModelInfo>, routesDir: string, allModels?: Record<string, ModelInfo>): void;
|
|
10
30
|
//# sourceMappingURL=routeGenerator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/routeGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"routeGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/routeGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAkHlD,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,SAAS,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAkDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,SAAwB,GAAG,MAAM,CAqF3H;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAiGlH;AAUD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,SAAS,EAC5B,eAAe,EAAE,SAAS,EAC1B,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GACnB,MAAM,CAoGR;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,IAAI,CAsEN"}
|
|
@@ -34,6 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.generateRouteFile = generateRouteFile;
|
|
37
|
+
exports.generateParentRouteFile = generateParentRouteFile;
|
|
38
|
+
exports.generateSubRouteFile = generateSubRouteFile;
|
|
37
39
|
exports.generateAllRoutes = generateAllRoutes;
|
|
38
40
|
const fs = __importStar(require("fs"));
|
|
39
41
|
const path = __importStar(require("path"));
|
|
@@ -47,13 +49,134 @@ function toClassName(modelName) {
|
|
|
47
49
|
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
48
50
|
.join('');
|
|
49
51
|
}
|
|
52
|
+
const numericTypes = ['Int', 'Float', 'Decimal', 'BigInt'];
|
|
50
53
|
/**
|
|
51
|
-
*
|
|
54
|
+
* Detect if the primary key field is numeric
|
|
52
55
|
*/
|
|
53
|
-
function
|
|
56
|
+
function isNumericId(modelInfo) {
|
|
57
|
+
for (const field of Object.values(modelInfo.fields)) {
|
|
58
|
+
if (field.isId && numericTypes.includes(field.type)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
// ─── Junction table detection ────────────────────────────────────────
|
|
65
|
+
const AUDIT_FK_FIELDS = ['createdBy', 'updatedBy'];
|
|
66
|
+
/**
|
|
67
|
+
* Detect if a model is a junction (n:m) table.
|
|
68
|
+
* A junction table has exactly 2 non-audit, non-self FK relations
|
|
69
|
+
* AND a composite primary key or compound unique constraint covering both FK fields.
|
|
70
|
+
*/
|
|
71
|
+
function detectJunctionTable(modelName, modelInfo) {
|
|
72
|
+
const parentRelations = [];
|
|
73
|
+
for (const rel of modelInfo.relations) {
|
|
74
|
+
if (!rel.relationFromFields || rel.relationFromFields.length === 0)
|
|
75
|
+
continue;
|
|
76
|
+
if (rel.type === modelName)
|
|
77
|
+
continue;
|
|
78
|
+
const isAudit = rel.relationFromFields.every(f => AUDIT_FK_FIELDS.includes(f));
|
|
79
|
+
if (isAudit)
|
|
80
|
+
continue;
|
|
81
|
+
parentRelations.push({
|
|
82
|
+
fkField: rel.relationFromFields[0],
|
|
83
|
+
parentModel: rel.type,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
if (parentRelations.length !== 2) {
|
|
87
|
+
return { isJunction: false, parentRelations };
|
|
88
|
+
}
|
|
89
|
+
// Require a composite key or compound unique constraint that includes both FK fields
|
|
90
|
+
const fkFields = parentRelations.map(r => r.fkField);
|
|
91
|
+
const hasCompositePK = modelInfo.compositeKey !== null &&
|
|
92
|
+
fkFields.every(f => modelInfo.compositeKey.includes(f));
|
|
93
|
+
const hasCompoundUnique = modelInfo.uniqueFields.some(uf => fkFields.every(f => uf.includes(f)));
|
|
94
|
+
return {
|
|
95
|
+
isJunction: hasCompositePK || hasCompoundUnique,
|
|
96
|
+
parentRelations,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Normalise a word for prefix comparison (strip trailing plural 's'/'es').
|
|
101
|
+
*/
|
|
102
|
+
function singularize(word) {
|
|
103
|
+
if (word.endsWith('ies'))
|
|
104
|
+
return word.slice(0, -3) + 'y';
|
|
105
|
+
if (word.endsWith('ses') || word.endsWith('xes') || word.endsWith('zes') || word.endsWith('ches') || word.endsWith('shes'))
|
|
106
|
+
return word.slice(0, -2);
|
|
107
|
+
if (word.endsWith('s') && !word.endsWith('ss'))
|
|
108
|
+
return word.slice(0, -1);
|
|
109
|
+
return word;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Derive sub-route name by stripping the common leading word(s)
|
|
113
|
+
* between parent model name and junction table name.
|
|
114
|
+
* Handles plural/singular differences (e.g. "messages" vs "message_attachments").
|
|
115
|
+
*/
|
|
116
|
+
function computeSubRouteName(parentName, junctionName) {
|
|
117
|
+
const parentWords = parentName.split('_');
|
|
118
|
+
const junctionWords = junctionName.split('_');
|
|
119
|
+
let commonCount = 0;
|
|
120
|
+
for (let i = 0; i < Math.min(parentWords.length, junctionWords.length); i++) {
|
|
121
|
+
if (singularize(parentWords[i]) === singularize(junctionWords[i])) {
|
|
122
|
+
commonCount++;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (commonCount > 0 && commonCount < junctionWords.length) {
|
|
129
|
+
return junctionWords.slice(commonCount).join('_');
|
|
130
|
+
}
|
|
131
|
+
return junctionName;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Analyse all models and build the junction / parent-sub-route map.
|
|
135
|
+
*/
|
|
136
|
+
function buildJunctionMap(models) {
|
|
137
|
+
const junctionModels = new Set();
|
|
138
|
+
const parentSubRoutes = new Map();
|
|
139
|
+
for (const [modelName, modelInfo] of Object.entries(models)) {
|
|
140
|
+
const junction = detectJunctionTable(modelName, modelInfo);
|
|
141
|
+
if (!junction.isJunction)
|
|
142
|
+
continue;
|
|
143
|
+
junctionModels.add(modelName);
|
|
144
|
+
for (let i = 0; i < junction.parentRelations.length; i++) {
|
|
145
|
+
const parentRel = junction.parentRelations[i];
|
|
146
|
+
const otherRel = junction.parentRelations[1 - i];
|
|
147
|
+
if (!models[parentRel.parentModel])
|
|
148
|
+
continue;
|
|
149
|
+
if (!parentSubRoutes.has(parentRel.parentModel)) {
|
|
150
|
+
parentSubRoutes.set(parentRel.parentModel, []);
|
|
151
|
+
}
|
|
152
|
+
parentSubRoutes.get(parentRel.parentModel).push({
|
|
153
|
+
junctionModelName: modelName,
|
|
154
|
+
junctionModelInfo: modelInfo,
|
|
155
|
+
subRouteName: computeSubRouteName(parentRel.parentModel, modelName),
|
|
156
|
+
fkFieldToParent: parentRel.fkField,
|
|
157
|
+
otherFkField: otherRel.fkField,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Remove sub-route entries where the parent is itself a junction table
|
|
162
|
+
for (const parentModel of parentSubRoutes.keys()) {
|
|
163
|
+
if (junctionModels.has(parentModel)) {
|
|
164
|
+
parentSubRoutes.delete(parentModel);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return { junctionModels, parentSubRoutes };
|
|
168
|
+
}
|
|
169
|
+
// ─── Route file generators ──────────────────────────────────────────
|
|
170
|
+
/**
|
|
171
|
+
* Generate Fastify route for a standalone model (TypeScript)
|
|
172
|
+
*/
|
|
173
|
+
function generateRouteFile(modelName, modelInfo, importPathPrefix = '../../../src/models') {
|
|
54
174
|
const className = toClassName(modelName);
|
|
175
|
+
const numeric = isNumericId(modelInfo);
|
|
176
|
+
const idType = numeric ? 'number' : 'string';
|
|
177
|
+
const idCast = numeric ? 'Number(rawId)' : 'rawId';
|
|
55
178
|
return `import { FastifyPluginAsync, FastifyRequest, FastifyReply } from 'fastify';
|
|
56
|
-
import { ${className}, QueryBuilder } from '
|
|
179
|
+
import { ${className}, QueryBuilder } from '${importPathPrefix}/${className}';
|
|
57
180
|
|
|
58
181
|
const ${modelName}Routes: FastifyPluginAsync = async (fastify) => {
|
|
59
182
|
fastify.addHook('preHandler', async (request, reply) => {
|
|
@@ -77,7 +200,8 @@ const ${modelName}Routes: FastifyPluginAsync = async (fastify) => {
|
|
|
77
200
|
|
|
78
201
|
fastify.get('/:id', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
79
202
|
try {
|
|
80
|
-
const { id } = request.params as { id: string };
|
|
203
|
+
const { id: rawId } = request.params as { id: string };
|
|
204
|
+
const id: ${idType} = ${idCast};
|
|
81
205
|
const { include = '' } = request.query as { include?: string };
|
|
82
206
|
const model = (request as any).${className} as ${className};
|
|
83
207
|
const response = await model.get(id, include);
|
|
@@ -101,7 +225,8 @@ const ${modelName}Routes: FastifyPluginAsync = async (fastify) => {
|
|
|
101
225
|
});
|
|
102
226
|
|
|
103
227
|
fastify.patch('/:id', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
104
|
-
const { id } = request.params as { id: string };
|
|
228
|
+
const { id: rawId } = request.params as { id: string };
|
|
229
|
+
const id: ${idType} = ${idCast};
|
|
105
230
|
const payload = request.body as Record<string, unknown>;
|
|
106
231
|
try {
|
|
107
232
|
const model = (request as any).${className} as ${className};
|
|
@@ -115,7 +240,8 @@ const ${modelName}Routes: FastifyPluginAsync = async (fastify) => {
|
|
|
115
240
|
|
|
116
241
|
fastify.delete('/:id', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
117
242
|
try {
|
|
118
|
-
const { id } = request.params as { id: string };
|
|
243
|
+
const { id: rawId } = request.params as { id: string };
|
|
244
|
+
const id: ${idType} = ${idCast};
|
|
119
245
|
const model = (request as any).${className} as ${className};
|
|
120
246
|
await model.delete(id);
|
|
121
247
|
return reply.sendResponse(200, 'object_deleted_successfully', { modelName: '${className}' });
|
|
@@ -130,23 +256,275 @@ export default ${modelName}Routes;
|
|
|
130
256
|
`;
|
|
131
257
|
}
|
|
132
258
|
/**
|
|
133
|
-
* Generate
|
|
259
|
+
* Generate Fastify route for a parent model that has sub-routes (TypeScript)
|
|
134
260
|
*/
|
|
135
|
-
function
|
|
136
|
-
|
|
261
|
+
function generateParentRouteFile(modelName, modelInfo, subRoutes) {
|
|
262
|
+
const className = toClassName(modelName);
|
|
263
|
+
const numeric = isNumericId(modelInfo);
|
|
264
|
+
const idType = numeric ? 'number' : 'string';
|
|
265
|
+
const idCast = numeric ? 'Number(rawId)' : 'rawId';
|
|
266
|
+
const importPath = '../../../../src/models';
|
|
267
|
+
const subRouteImports = subRoutes.map(sr => `import ${sr.subRouteName}Routes from './_${sr.subRouteName}';`).join('\n');
|
|
268
|
+
const subRouteRegistrations = subRoutes.map(sr => ` fastify.register(${sr.subRouteName}Routes, { prefix: '/:id/${sr.subRouteName}' });`).join('\n');
|
|
269
|
+
return `import { FastifyPluginAsync, FastifyRequest, FastifyReply } from 'fastify';
|
|
270
|
+
import { ${className}, QueryBuilder } from '${importPath}/${className}';
|
|
271
|
+
${subRouteImports}
|
|
272
|
+
|
|
273
|
+
const ${modelName}Routes: FastifyPluginAsync = async (fastify) => {
|
|
274
|
+
fastify.addHook('preHandler', async (request, reply) => {
|
|
275
|
+
if (!request.user) {
|
|
276
|
+
return reply.sendError(401, 'no_valid_session');
|
|
277
|
+
}
|
|
278
|
+
(request as any).${className} = new ${className}({ user: request.user });
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
${subRouteRegistrations}
|
|
282
|
+
|
|
283
|
+
fastify.get('/', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
284
|
+
try {
|
|
285
|
+
const { q = {}, include = '', limit = '25', offset = '0', sortBy = 'id', sortOrder = 'asc' } = request.query as Record<string, string>;
|
|
286
|
+
const model = (request as any).${className} as ${className};
|
|
287
|
+
const results = await model.getMany(q, include, Number(limit), Number(offset), sortBy, sortOrder as 'asc' | 'desc');
|
|
288
|
+
return reply.sendList(results.data, results.meta);
|
|
289
|
+
} catch (error: any) {
|
|
290
|
+
const response = QueryBuilder.errorHandler(error);
|
|
291
|
+
return reply.code(response.status_code).send(response);
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
fastify.get('/:id', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
296
|
+
try {
|
|
297
|
+
const { id: rawId } = request.params as { id: string };
|
|
298
|
+
const id: ${idType} = ${idCast};
|
|
299
|
+
const { include = '' } = request.query as { include?: string };
|
|
300
|
+
const model = (request as any).${className} as ${className};
|
|
301
|
+
const response = await model.get(id, include);
|
|
302
|
+
return reply.send(response);
|
|
303
|
+
} catch (error: any) {
|
|
304
|
+
const response = QueryBuilder.errorHandler(error);
|
|
305
|
+
return reply.code(response.status_code).send(response);
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
fastify.post('/', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
310
|
+
const payload = request.body as Record<string, unknown>;
|
|
311
|
+
try {
|
|
312
|
+
const model = (request as any).${className} as ${className};
|
|
313
|
+
const response = await model.create(payload);
|
|
314
|
+
return reply.code(201).send(response);
|
|
315
|
+
} catch (error: any) {
|
|
316
|
+
const response = QueryBuilder.errorHandler(error, payload);
|
|
317
|
+
return reply.code(response.status_code).send(response);
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
fastify.patch('/:id', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
322
|
+
const { id: rawId } = request.params as { id: string };
|
|
323
|
+
const id: ${idType} = ${idCast};
|
|
324
|
+
const payload = request.body as Record<string, unknown>;
|
|
325
|
+
try {
|
|
326
|
+
const model = (request as any).${className} as ${className};
|
|
327
|
+
const response = await model.update(id, payload);
|
|
328
|
+
return reply.send(response);
|
|
329
|
+
} catch (error: any) {
|
|
330
|
+
const response = QueryBuilder.errorHandler(error, payload);
|
|
331
|
+
return reply.code(response.status_code).send(response);
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
fastify.delete('/:id', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
336
|
+
try {
|
|
337
|
+
const { id: rawId } = request.params as { id: string };
|
|
338
|
+
const id: ${idType} = ${idCast};
|
|
339
|
+
const model = (request as any).${className} as ${className};
|
|
340
|
+
await model.delete(id);
|
|
341
|
+
return reply.sendResponse(200, 'object_deleted_successfully', { modelName: '${className}' });
|
|
342
|
+
} catch (error: any) {
|
|
343
|
+
const response = QueryBuilder.errorHandler(error);
|
|
344
|
+
return reply.code(response.status_code).send(response);
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
export default ${modelName}Routes;
|
|
350
|
+
`;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Check if a specific field in a model is numeric
|
|
354
|
+
*/
|
|
355
|
+
function isFieldNumeric(modelInfo, fieldName) {
|
|
356
|
+
const field = modelInfo.fields[fieldName];
|
|
357
|
+
return !!field && numericTypes.includes(field.type);
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Generate Fastify sub-route for a junction table (TypeScript).
|
|
361
|
+
* Uses composite key { fkFieldToParent: parentId, otherFkField: subId }
|
|
362
|
+
* for get, update, and delete operations.
|
|
363
|
+
*/
|
|
364
|
+
function generateSubRouteFile(junctionModelName, junctionModelInfo, parentModelInfo, fkFieldToParent, otherFkField) {
|
|
365
|
+
const className = toClassName(junctionModelName);
|
|
366
|
+
const numericParentId = isNumericId(parentModelInfo);
|
|
367
|
+
const numericOtherFk = isFieldNumeric(junctionModelInfo, otherFkField);
|
|
368
|
+
const parentIdType = numericParentId ? 'number' : 'string';
|
|
369
|
+
const otherFkType = numericOtherFk ? 'number' : 'string';
|
|
370
|
+
const parentIdCast = numericParentId ? 'Number(rawParentId)' : 'rawParentId';
|
|
371
|
+
const otherFkCast = numericOtherFk ? 'Number(rawSubId)' : 'rawSubId';
|
|
372
|
+
const importPath = '../../../../src/models';
|
|
373
|
+
return `import { FastifyPluginAsync, FastifyRequest, FastifyReply } from 'fastify';
|
|
374
|
+
import { ${className}, QueryBuilder } from '${importPath}/${className}';
|
|
375
|
+
|
|
376
|
+
const ${junctionModelName}Routes: FastifyPluginAsync = async (fastify) => {
|
|
377
|
+
fastify.addHook('preHandler', async (request, reply) => {
|
|
378
|
+
if (!request.user) {
|
|
379
|
+
return reply.sendError(401, 'no_valid_session');
|
|
380
|
+
}
|
|
381
|
+
(request as any).${className} = new ${className}({ user: request.user });
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
fastify.get('/', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
385
|
+
try {
|
|
386
|
+
const { id: rawParentId } = request.params as { id: string };
|
|
387
|
+
const parentId: ${parentIdType} = ${parentIdCast};
|
|
388
|
+
const { q = {}, include = '', limit = '25', offset = '0', sortBy = 'id', sortOrder = 'asc' } = request.query as Record<string, string>;
|
|
389
|
+
const filter = typeof q === 'object' ? { ...q, ${fkFieldToParent}: parentId } : { ${fkFieldToParent}: parentId };
|
|
390
|
+
const model = (request as any).${className} as ${className};
|
|
391
|
+
const results = await model.getMany(filter, include, Number(limit), Number(offset), sortBy, sortOrder as 'asc' | 'desc');
|
|
392
|
+
return reply.sendList(results.data, results.meta);
|
|
393
|
+
} catch (error: any) {
|
|
394
|
+
const response = QueryBuilder.errorHandler(error);
|
|
395
|
+
return reply.code(response.status_code).send(response);
|
|
396
|
+
}
|
|
397
|
+
});
|
|
398
|
+
|
|
399
|
+
fastify.get('/:subId', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
400
|
+
try {
|
|
401
|
+
const { id: rawParentId, subId: rawSubId } = request.params as { id: string; subId: string };
|
|
402
|
+
const parentId: ${parentIdType} = ${parentIdCast};
|
|
403
|
+
const ${otherFkField}: ${otherFkType} = ${otherFkCast};
|
|
404
|
+
const compositeId = { ${fkFieldToParent}: parentId, ${otherFkField} };
|
|
405
|
+
const { include = '' } = request.query as { include?: string };
|
|
406
|
+
const model = (request as any).${className} as ${className};
|
|
407
|
+
const response = await model.get(compositeId, include);
|
|
408
|
+
return reply.send(response);
|
|
409
|
+
} catch (error: any) {
|
|
410
|
+
const response = QueryBuilder.errorHandler(error);
|
|
411
|
+
return reply.code(response.status_code).send(response);
|
|
412
|
+
}
|
|
413
|
+
});
|
|
414
|
+
|
|
415
|
+
fastify.post('/', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
416
|
+
const { id: rawParentId } = request.params as { id: string };
|
|
417
|
+
const parentId: ${parentIdType} = ${parentIdCast};
|
|
418
|
+
const payload = { ...(request.body as Record<string, unknown>), ${fkFieldToParent}: parentId };
|
|
419
|
+
try {
|
|
420
|
+
const model = (request as any).${className} as ${className};
|
|
421
|
+
const response = await model.create(payload);
|
|
422
|
+
return reply.code(201).send(response);
|
|
423
|
+
} catch (error: any) {
|
|
424
|
+
const response = QueryBuilder.errorHandler(error, payload);
|
|
425
|
+
return reply.code(response.status_code).send(response);
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
|
|
429
|
+
fastify.patch('/:subId', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
430
|
+
const { id: rawParentId, subId: rawSubId } = request.params as { id: string; subId: string };
|
|
431
|
+
const parentId: ${parentIdType} = ${parentIdCast};
|
|
432
|
+
const ${otherFkField}: ${otherFkType} = ${otherFkCast};
|
|
433
|
+
const compositeId = { ${fkFieldToParent}: parentId, ${otherFkField} };
|
|
434
|
+
const payload = request.body as Record<string, unknown>;
|
|
435
|
+
try {
|
|
436
|
+
const model = (request as any).${className} as ${className};
|
|
437
|
+
const response = await model.update(compositeId, payload);
|
|
438
|
+
return reply.send(response);
|
|
439
|
+
} catch (error: any) {
|
|
440
|
+
const response = QueryBuilder.errorHandler(error, payload);
|
|
441
|
+
return reply.code(response.status_code).send(response);
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
fastify.delete('/:subId', async (request: FastifyRequest, reply: FastifyReply) => {
|
|
446
|
+
try {
|
|
447
|
+
const { id: rawParentId, subId: rawSubId } = request.params as { id: string; subId: string };
|
|
448
|
+
const parentId: ${parentIdType} = ${parentIdCast};
|
|
449
|
+
const ${otherFkField}: ${otherFkType} = ${otherFkCast};
|
|
450
|
+
const compositeId = { ${fkFieldToParent}: parentId, ${otherFkField} };
|
|
451
|
+
const model = (request as any).${className} as ${className};
|
|
452
|
+
await model.delete(compositeId);
|
|
453
|
+
return reply.sendResponse(200, 'object_deleted_successfully', { modelName: '${className}' });
|
|
454
|
+
} catch (error: any) {
|
|
455
|
+
const response = QueryBuilder.errorHandler(error);
|
|
456
|
+
return reply.code(response.status_code).send(response);
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
};
|
|
460
|
+
|
|
461
|
+
export default ${junctionModelName}Routes;
|
|
462
|
+
`;
|
|
463
|
+
}
|
|
464
|
+
// ─── Main generation orchestrator ───────────────────────────────────
|
|
465
|
+
/**
|
|
466
|
+
* Generate all route files with junction-table-aware nested structure.
|
|
467
|
+
* @param models Models to generate routes for (may be filtered by --model)
|
|
468
|
+
* @param routesDir Output directory (e.g. routes/api/v1)
|
|
469
|
+
* @param allModels Full models map for junction detection (defaults to models)
|
|
470
|
+
*/
|
|
471
|
+
function generateAllRoutes(models, routesDir, allModels) {
|
|
137
472
|
if (!fs.existsSync(routesDir)) {
|
|
138
473
|
fs.mkdirSync(routesDir, { recursive: true });
|
|
139
474
|
}
|
|
140
|
-
|
|
141
|
-
for (const modelName of Object.
|
|
142
|
-
|
|
143
|
-
if (
|
|
144
|
-
console.log(`Skipped route (
|
|
475
|
+
const { junctionModels, parentSubRoutes } = buildJunctionMap(allModels ?? models);
|
|
476
|
+
for (const [modelName, modelInfo] of Object.entries(models)) {
|
|
477
|
+
// Skip junction tables – they become sub-routes, not standalone files
|
|
478
|
+
if (junctionModels.has(modelName)) {
|
|
479
|
+
console.log(`Skipped route (junction table): ${modelName}`);
|
|
145
480
|
continue;
|
|
146
481
|
}
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
482
|
+
const subRoutes = parentSubRoutes.get(modelName);
|
|
483
|
+
if (subRoutes && subRoutes.length > 0) {
|
|
484
|
+
// ── Parent model with sub-routes → directory structure ──
|
|
485
|
+
const parentDir = path.join(routesDir, modelName);
|
|
486
|
+
const indexPath = path.join(parentDir, 'index.ts');
|
|
487
|
+
// If a legacy flat file exists, skip entirely (never overwrite)
|
|
488
|
+
const legacyFlatPath = path.join(routesDir, `${modelName}.ts`);
|
|
489
|
+
if (fs.existsSync(legacyFlatPath)) {
|
|
490
|
+
console.log(`Skipped route (legacy flat file exists): ${modelName}.ts`);
|
|
491
|
+
continue;
|
|
492
|
+
}
|
|
493
|
+
if (!fs.existsSync(parentDir)) {
|
|
494
|
+
fs.mkdirSync(parentDir, { recursive: true });
|
|
495
|
+
}
|
|
496
|
+
// Generate parent index.ts
|
|
497
|
+
if (fs.existsSync(indexPath)) {
|
|
498
|
+
console.log(`Skipped route (exists): ${modelName}/index.ts`);
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
const parentCode = generateParentRouteFile(modelName, modelInfo, subRoutes);
|
|
502
|
+
fs.writeFileSync(indexPath, parentCode);
|
|
503
|
+
console.log(`Generated route: ${modelName}/index.ts`);
|
|
504
|
+
}
|
|
505
|
+
// Generate each sub-route file
|
|
506
|
+
for (const sr of subRoutes) {
|
|
507
|
+
const subRoutePath = path.join(parentDir, `_${sr.subRouteName}.ts`);
|
|
508
|
+
if (fs.existsSync(subRoutePath)) {
|
|
509
|
+
console.log(`Skipped sub-route (exists): ${modelName}/_${sr.subRouteName}.ts`);
|
|
510
|
+
continue;
|
|
511
|
+
}
|
|
512
|
+
const subRouteCode = generateSubRouteFile(sr.junctionModelName, sr.junctionModelInfo, modelInfo, sr.fkFieldToParent, sr.otherFkField);
|
|
513
|
+
fs.writeFileSync(subRoutePath, subRouteCode);
|
|
514
|
+
console.log(`Generated sub-route: ${modelName}/_${sr.subRouteName}.ts`);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
else {
|
|
518
|
+
// ── Standalone model → flat file (unchanged behaviour) ──
|
|
519
|
+
const routePath = path.join(routesDir, `${modelName}.ts`);
|
|
520
|
+
if (fs.existsSync(routePath)) {
|
|
521
|
+
console.log(`Skipped route (exists): ${modelName}.ts`);
|
|
522
|
+
continue;
|
|
523
|
+
}
|
|
524
|
+
const routeCode = generateRouteFile(modelName, modelInfo);
|
|
525
|
+
fs.writeFileSync(routePath, routeCode);
|
|
526
|
+
console.log(`Generated route: ${modelName}.ts`);
|
|
527
|
+
}
|
|
150
528
|
}
|
|
151
529
|
}
|
|
152
530
|
//# sourceMappingURL=routeGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeGenerator.js","sourceRoot":"","sources":["../../../src/generators/routeGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,8CA+EC;AAKD,8CAiBC;AAvHD,uCAAyB;AACzB,2CAA6B;AAG7B;;GAEG;AACH,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,SAAS;SACb,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAEzC,OAAO;WACE,SAAS,8CAA8C,SAAS;;QAEnE,SAAS;;;;;2BAKU,SAAS,UAAU,SAAS;;;;;;6CAMV,SAAS,OAAO,SAAS;;;;;;;;;;;;;6CAazB,SAAS,OAAO,SAAS;;;;;;;;;;;;6CAYzB,SAAS,OAAO,SAAS;;;;;;;;;;;;;6CAazB,SAAS,OAAO,SAAS;;;;;;;;;;;;6CAYzB,SAAS,OAAO,SAAS;;0FAEoB,SAAS;;;;;;;;iBAQlF,SAAS;CACzB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAiC,EAAE,SAAiB;IACpF,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,KAAK,CAAC,CAAC;YACvD,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,KAAK,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"routeGenerator.js","sourceRoot":"","sources":["../../../src/generators/routeGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prismaParser.d.ts","sourceRoot":"","sources":["../../../src/parsers/prismaParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAA6B,MAAM,SAAS,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACjC;AA8BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"prismaParser.d.ts","sourceRoot":"","sources":["../../../src/parsers/prismaParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAA6B,MAAM,SAAS,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACjC;AA8BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAsClE;AAwID;;GAEG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAsEtF"}
|
|
@@ -86,6 +86,7 @@ function parsePrismaSchema(schemaPath) {
|
|
|
86
86
|
fields,
|
|
87
87
|
relations: parseModelRelations(body),
|
|
88
88
|
compositeKey: compositeKeyFields,
|
|
89
|
+
uniqueFields: parseUniqueFields(body),
|
|
89
90
|
dbName: dbName || name.toLowerCase() // Default to lowercase model name
|
|
90
91
|
};
|
|
91
92
|
}
|
|
@@ -112,6 +113,20 @@ function parseCompositeKey(modelBody) {
|
|
|
112
113
|
}
|
|
113
114
|
return null;
|
|
114
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Parse @@unique directives to get compound unique constraints
|
|
118
|
+
*/
|
|
119
|
+
function parseUniqueFields(modelBody) {
|
|
120
|
+
const result = [];
|
|
121
|
+
const lines = modelBody.split('\n').map(line => line.trim());
|
|
122
|
+
for (const line of lines) {
|
|
123
|
+
const match = line.match(/^@@unique\(\[([^\]]+)\]\)/);
|
|
124
|
+
if (match) {
|
|
125
|
+
result.push(match[1].split(',').map(f => f.trim()));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
115
130
|
/**
|
|
116
131
|
* Parse @@map directive to get database table name
|
|
117
132
|
*/
|
|
@@ -200,14 +215,11 @@ function parseEnumValues(enumBody) {
|
|
|
200
215
|
*/
|
|
201
216
|
async function parsePrismaDMMF(schemaPath) {
|
|
202
217
|
try {
|
|
203
|
-
const { getDMMF
|
|
204
|
-
//
|
|
205
|
-
const
|
|
206
|
-
schemaPath: { cliProvidedPath: schemaPath }
|
|
207
|
-
});
|
|
208
|
-
// Pass schemas as [filePath, content] tuples for Prisma 7 compatibility
|
|
218
|
+
const { getDMMF } = require('@prisma/internals');
|
|
219
|
+
// Read schema directly to avoid getSchemaWithPath merging with prisma.config.ts
|
|
220
|
+
const schemaContent = fs.readFileSync(schemaPath, 'utf-8');
|
|
209
221
|
const dmmf = await getDMMF({
|
|
210
|
-
datamodel:
|
|
222
|
+
datamodel: [[schemaPath, schemaContent]]
|
|
211
223
|
});
|
|
212
224
|
const models = {};
|
|
213
225
|
for (const model of dmmf.datamodel.models) {
|
|
@@ -215,11 +227,14 @@ async function parsePrismaDMMF(schemaPath) {
|
|
|
215
227
|
const compositeKey = model.primaryKey && model.primaryKey.fields && model.primaryKey.fields.length > 1
|
|
216
228
|
? model.primaryKey.fields
|
|
217
229
|
: null;
|
|
230
|
+
// Extract compound unique constraints
|
|
231
|
+
const uniqueFields = Array.isArray(model.uniqueFields) ? model.uniqueFields : [];
|
|
218
232
|
models[model.name] = {
|
|
219
233
|
name: model.name,
|
|
220
234
|
fields: {},
|
|
221
235
|
relations: [],
|
|
222
236
|
compositeKey,
|
|
237
|
+
uniqueFields,
|
|
223
238
|
dbName: model.dbName || model.name.toLowerCase() // Use dbName from DMMF or default to lowercase
|
|
224
239
|
};
|
|
225
240
|
for (const field of model.fields) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prismaParser.js","sourceRoot":"","sources":["../../../src/parsers/prismaParser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,
|
|
1
|
+
{"version":3,"file":"prismaParser.js","sourceRoot":"","sources":["../../../src/parsers/prismaParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/parsers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/parsers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
package/package.json
CHANGED