@autobe/compiler 0.18.0 → 0.20.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/lib/AutoBeTypeScriptCompiler.js +7 -8
- package/lib/AutoBeTypeScriptCompiler.js.map +1 -1
- package/lib/interface/AutoBeInterfaceCompiler.js +2 -2
- package/lib/interface/AutoBeInterfaceCompiler.js.map +1 -1
- package/lib/prisma/validatePrismaApplication.js +259 -73
- package/lib/prisma/validatePrismaApplication.js.map +1 -1
- package/lib/prisma/writePrismaApplication.js +1 -2
- package/lib/prisma/writePrismaApplication.js.map +1 -1
- package/lib/raw/AutoBeCompilerRealizeTemplate.js +4 -3
- package/lib/raw/AutoBeCompilerRealizeTemplate.js.map +1 -1
- package/lib/raw/AutoBeCompilerTestTemplate.js +1 -1
- package/lib/raw/nestjs.json +7 -7
- package/lib/raw/test.json +2 -2
- package/lib/realize/writeRealizeControllers.js +10 -3
- package/lib/realize/writeRealizeControllers.js.map +1 -1
- package/lib/test/AutoBeTestCompiler.js +7 -8
- package/lib/test/AutoBeTestCompiler.js.map +1 -1
- package/lib/utils/FilePrinter.js +11 -11
- package/lib/utils/FilePrinter.js.map +1 -1
- package/lib/utils/shrinkCompileResult.d.ts +3 -0
- package/lib/utils/shrinkCompileResult.js +17 -0
- package/lib/utils/shrinkCompileResult.js.map +1 -0
- package/package.json +14 -9
- package/src/AutoBeTypeScriptCompiler.ts +12 -13
- package/src/interface/AutoBeInterfaceCompiler.ts +3 -3
- package/src/prisma/validatePrismaApplication.ts +265 -79
- package/src/prisma/writePrismaApplication.ts +1 -2
- package/src/raw/AutoBeCompilerRealizeTemplate.ts +4 -3
- package/src/raw/AutoBeCompilerTestTemplate.ts +1 -1
- package/src/raw/nestjs.json +7 -7
- package/src/raw/test.json +2 -2
- package/src/realize/writeRealizeControllers.ts +38 -4
- package/src/test/AutoBeTestCompiler.ts +7 -8
- package/src/utils/FilePrinter.ts +10 -9
- package/src/utils/shrinkCompileResult.ts +16 -0
- package/lib/interface/createMigrateApplication.d.ts +0 -3
- package/lib/interface/createMigrateApplication.js +0 -15
- package/lib/interface/createMigrateApplication.js.map +0 -1
- package/lib/utils/MapUtil.d.ts +0 -3
- package/lib/utils/MapUtil.js +0 -16
- package/lib/utils/MapUtil.js.map +0 -1
- package/src/interface/createMigrateApplication.ts +0 -18
- package/src/utils/MapUtil.ts +0 -10
|
@@ -14,11 +14,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.AutoBeTypeScriptCompiler = void 0;
|
|
16
16
|
const transform_1 = __importDefault(require("@nestia/core/lib/transform"));
|
|
17
|
-
const
|
|
17
|
+
const embed_eslint_1 = require("embed-eslint");
|
|
18
18
|
const typescript_1 = __importDefault(require("typescript"));
|
|
19
19
|
const transform_2 = __importDefault(require("typia/lib/transform"));
|
|
20
20
|
const nestjs_json_1 = __importDefault(require("./raw/nestjs.json"));
|
|
21
21
|
const FilePrinter_1 = require("./utils/FilePrinter");
|
|
22
|
+
const shrinkCompileResult_1 = require("./utils/shrinkCompileResult");
|
|
22
23
|
/**
|
|
23
24
|
* Official TypeScript compiler for final code validation and quality assurance.
|
|
24
25
|
*
|
|
@@ -49,7 +50,7 @@ class AutoBeTypeScriptCompiler {
|
|
|
49
50
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
51
|
var _a, _b;
|
|
51
52
|
const alias = (_a = props.package) !== null && _a !== void 0 ? _a : "@ORGANIZATION/PROJECT-api";
|
|
52
|
-
const compiler = new
|
|
53
|
+
const compiler = new embed_eslint_1.EmbedEsLint({
|
|
53
54
|
external: nestjs_json_1.default,
|
|
54
55
|
compilerOptions: {
|
|
55
56
|
target: typescript_1.default.ScriptTarget.ESNext,
|
|
@@ -77,13 +78,11 @@ class AutoBeTypeScriptCompiler {
|
|
|
77
78
|
}),
|
|
78
79
|
],
|
|
79
80
|
}),
|
|
81
|
+
rules: {
|
|
82
|
+
"no-floating-promises": "error",
|
|
83
|
+
},
|
|
80
84
|
});
|
|
81
|
-
|
|
82
|
-
return result.type === "success"
|
|
83
|
-
? { type: "success" }
|
|
84
|
-
: result.type === "failure"
|
|
85
|
-
? { type: "failure", diagnostics: result.diagnostics }
|
|
86
|
-
: { type: "exception", error: result.error };
|
|
85
|
+
return (0, shrinkCompileResult_1.shrinkCompileResult)(compiler.compile(Object.assign(Object.assign({}, props.files), ((_b = props.prisma) !== null && _b !== void 0 ? _b : {}))));
|
|
87
86
|
});
|
|
88
87
|
}
|
|
89
88
|
getExternal(location) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoBeTypeScriptCompiler.js","sourceRoot":"","sources":["../src/AutoBeTypeScriptCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,2EAA6D;AAC7D
|
|
1
|
+
{"version":3,"file":"AutoBeTypeScriptCompiler.js","sourceRoot":"","sources":["../src/AutoBeTypeScriptCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,2EAA6D;AAC7D,+CAA2C;AAC3C,4DAA4B;AAC5B,oEAAiD;AAEjD,oEAA+C;AAC/C,qDAAkD;AAClD,qEAAkE;AAElE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,wBAAwB;IACtB,OAAO,CAClB,KAAoC;;;YAEpC,MAAM,KAAK,GAAW,MAAA,KAAK,CAAC,OAAO,mCAAI,2BAA2B,CAAC;YACnE,MAAM,QAAQ,GAAgB,IAAI,0BAAW,CAAC;gBAC5C,QAAQ,EAAE,qBAAwC;gBAClD,eAAe,EAAE;oBACf,MAAM,EAAE,oBAAE,CAAC,YAAY,CAAC,MAAM;oBAC9B,MAAM,EAAE,oBAAE,CAAC,UAAU,CAAC,QAAQ;oBAC9B,kBAAkB,EAAE,IAAI;oBACxB,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE;wBACL,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC;wBACtB,CAAC,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC;qBACpC;oBACD,MAAM,EAAE,IAAI;oBACZ,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,IAAI;oBACrB,sBAAsB,EAAE,IAAI;oBAC5B,qBAAqB,EAAE,IAAI;oBAC3B,iBAAiB,EAAE,IAAI;iBACxB;gBACD,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;oBACvC,MAAM,EAAE;wBACN,IAAA,mBAAc,EACZ,OAAO,EACP,EAAE,EACF;4BACE,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;yBAClD,CACF;wBACD,IAAA,mBAAmB,EACjB,OAAO,EACP,EAAE,EACF;4BACE,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;yBAClD,CACF;qBACF;iBACF,CAAC;gBACF,KAAK,EAAE;oBACL,sBAAsB,EAAE,OAAO;iBAChC;aACF,CAAC,CAAC;YACH,OAAO,IAAA,yCAAmB,EACxB,QAAQ,CAAC,OAAO,iCACX,KAAK,CAAC,KAAK,GACX,CAAC,MAAA,KAAK,CAAC,MAAM,mCAAI,EAAE,CAAC,EACvB,CACH,CAAC;QACJ,CAAC;KAAA;IAEY,WAAW,CAAC,QAAgB;;;YACvC,OAAO,MAAC,qBAAyC,CAAC,QAAQ,CAAC,mCAAI,SAAS,CAAC;QAC3E,CAAC;KAAA;IAEM,QAAQ,CAAC,MAAc;QAC5B,OAAO,yBAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AA5DD,4DA4DC"}
|
|
@@ -11,10 +11,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.AutoBeInterfaceCompiler = void 0;
|
|
13
13
|
const utils_1 = require("@autobe/utils");
|
|
14
|
+
const migrate_1 = require("@nestia/migrate");
|
|
14
15
|
const AutoBeCompilerInterfaceTemplate_1 = require("../raw/AutoBeCompilerInterfaceTemplate");
|
|
15
16
|
const ArrayUtil_1 = require("../utils/ArrayUtil");
|
|
16
17
|
const FilePrinter_1 = require("../utils/FilePrinter");
|
|
17
|
-
const createMigrateApplication_1 = require("./createMigrateApplication");
|
|
18
18
|
/**
|
|
19
19
|
* Custom Interface compiler that handles API specification and NestJS
|
|
20
20
|
* application generation.
|
|
@@ -41,7 +41,7 @@ const createMigrateApplication_1 = require("./createMigrateApplication");
|
|
|
41
41
|
class AutoBeInterfaceCompiler {
|
|
42
42
|
write(document) {
|
|
43
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
const migrate = (0,
|
|
44
|
+
const migrate = new migrate_1.NestiaMigrateApplication((0, utils_1.transformOpenApiDocument)(document));
|
|
45
45
|
const files = migrate.nest({
|
|
46
46
|
keyword: true,
|
|
47
47
|
simulate: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoBeInterfaceCompiler.js","sourceRoot":"","sources":["../../src/interface/AutoBeInterfaceCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,yCAAgF;
|
|
1
|
+
{"version":3,"file":"AutoBeInterfaceCompiler.js","sourceRoot":"","sources":["../../src/interface/AutoBeInterfaceCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,yCAAgF;AAChF,6CAA2D;AAG3D,4FAAyF;AACzF,kDAA+C;AAC/C,sDAAmD;AAEnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAa,uBAAuB;IACrB,KAAK,CAChB,QAAiC;;YAEjC,MAAM,OAAO,GAA6B,IAAI,kCAAwB,CACpE,IAAA,gCAAwB,EAAC,QAAQ,CAAC,CACnC,CAAC;YACF,MAAM,KAAK,GAA2B,OAAO,CAAC,IAAI,CAAC;gBACjD,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;gBACd,GAAG,EAAE,IAAI;gBACT,MAAM,EAAE;oBACN,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,0DAA0D;iBAClE;aACF,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,WAAW,CAAC;gBACxB,GAAG,CAAC,MAAM,qBAAS,CAAC,QAAQ,CAC1B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EACrB,KAAqB,EAAE,0CAAhB,CAAC,GAAG,EAAE,KAAK,CAAC;oBAAK,OAAA;wBACtB,GAAG;wBACH,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK;4BACpD,CAAC,CAAC,MAAM,yBAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;4BACnC,CAAC,CAAC,KAAK;qBACV,CAAA;kBAAA,CACF,CAAC;gBACF;oBACE,2BAA2B;oBAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtD;gBACD,GAAG,MAAM,CAAC,OAAO,CAAC,iEAA+B,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;KAAA;IAEY,SAAS,CACpB,QAAiC;;YAEjC,OAAO,IAAA,gCAAwB,EAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEY,MAAM,CACjB,QAA2B;;YAE3B,OAAO,IAAA,6BAAqB,EAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;KAAA;IAEY,WAAW;;YACtB,OAAO,iEAA+B,CAAC;QACzC,CAAC;KAAA;CACF;AAjDD,0DAiDC"}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.validatePrismaApplication = validatePrismaApplication;
|
|
4
4
|
const utils_1 = require("@autobe/utils");
|
|
5
5
|
const tstl_1 = require("tstl");
|
|
6
|
-
const MapUtil_1 = require("../utils/MapUtil");
|
|
7
6
|
function validatePrismaApplication(application) {
|
|
8
7
|
const dict = new Map(application.files
|
|
9
8
|
.map((file, fi) => file.models.map((model, mi) => [
|
|
@@ -49,7 +48,7 @@ function validateDuplicatedFiles(app) {
|
|
|
49
48
|
const group = new Map();
|
|
50
49
|
app.files.forEach((file, fileIndex) => {
|
|
51
50
|
const container = { file, index: fileIndex };
|
|
52
|
-
|
|
51
|
+
utils_1.MapUtil.take(group, file.filename, () => []).push(container);
|
|
53
52
|
});
|
|
54
53
|
const errors = [];
|
|
55
54
|
for (const array of group.values())
|
|
@@ -59,15 +58,16 @@ function validateDuplicatedFiles(app) {
|
|
|
59
58
|
path: `application.files[${container.index}]`,
|
|
60
59
|
table: null,
|
|
61
60
|
field: null,
|
|
62
|
-
message:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
61
|
+
message: utils_1.StringUtil.trim `
|
|
62
|
+
File ${container.file.filename} is duplicated.
|
|
63
|
+
|
|
64
|
+
Accessors of the other duplicated files are:
|
|
65
|
+
|
|
66
|
+
${array
|
|
67
|
+
.filter((_oppo, j) => i !== j)
|
|
68
|
+
.map((oppo) => `- application.files[${oppo.index}]`)
|
|
69
|
+
.join("\n")},
|
|
70
|
+
`,
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
73
|
return errors;
|
|
@@ -82,7 +82,7 @@ function validateDuplicatedModels(app) {
|
|
|
82
82
|
fileIndex,
|
|
83
83
|
modelIndex,
|
|
84
84
|
};
|
|
85
|
-
|
|
85
|
+
utils_1.MapUtil.take(modelContainers, model.name, () => []).push(container);
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
88
|
const errors = [];
|
|
@@ -93,15 +93,16 @@ function validateDuplicatedModels(app) {
|
|
|
93
93
|
path: `application.files[${container.fileIndex}].models[${container.modelIndex}]`,
|
|
94
94
|
table: container.model.name,
|
|
95
95
|
field: null,
|
|
96
|
-
message:
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
96
|
+
message: utils_1.StringUtil.trim `
|
|
97
|
+
Model ${container.model.name} is duplicated.
|
|
98
|
+
|
|
99
|
+
Accessors of the other duplicated models are:
|
|
100
|
+
|
|
101
|
+
${array
|
|
102
|
+
.filter((_oppo, j) => i !== j)
|
|
103
|
+
.map((oppo) => `- application.files[${oppo.fileIndex}].models[${oppo.modelIndex}]`)
|
|
104
|
+
.join("\n")},
|
|
105
|
+
`,
|
|
105
106
|
});
|
|
106
107
|
});
|
|
107
108
|
return errors;
|
|
@@ -110,9 +111,12 @@ function validateDuplicatedFields(dict, model, accessor) {
|
|
|
110
111
|
const errors = [];
|
|
111
112
|
// FIND DUPLICATED FIELDS
|
|
112
113
|
const group = new Map();
|
|
113
|
-
|
|
114
|
-
model.foreignFields.forEach((field, i) =>
|
|
115
|
-
|
|
114
|
+
utils_1.MapUtil.take(group, model.primaryField.name, () => []).push(`${accessor}.primaryField.name`);
|
|
115
|
+
model.foreignFields.forEach((field, i) => {
|
|
116
|
+
utils_1.MapUtil.take(group, field.name, () => []).push(`${accessor}.foreignFields[${i}].name`);
|
|
117
|
+
utils_1.MapUtil.take(group, field.relation.name, () => []).push(`${accessor}.foreignFields[${i}].relation.name`);
|
|
118
|
+
});
|
|
119
|
+
model.plainFields.forEach((field, i) => utils_1.MapUtil.take(group, field.name, () => []).push(`${accessor}.plainFields[${i}].name`));
|
|
116
120
|
for (const [field, array] of group)
|
|
117
121
|
if (array.length !== 1)
|
|
118
122
|
array.forEach((path, i) => {
|
|
@@ -120,13 +124,16 @@ function validateDuplicatedFields(dict, model, accessor) {
|
|
|
120
124
|
path,
|
|
121
125
|
table: model.name,
|
|
122
126
|
field,
|
|
123
|
-
message:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
message: utils_1.StringUtil.trim `
|
|
128
|
+
Field ${field} is duplicated.
|
|
129
|
+
|
|
130
|
+
Accessors of the other duplicated fields are:
|
|
131
|
+
|
|
132
|
+
${array
|
|
133
|
+
.filter((_oppo, j) => i !== j)
|
|
134
|
+
.map((a) => `- ${a}`)
|
|
135
|
+
.join("\n")},
|
|
136
|
+
`,
|
|
130
137
|
});
|
|
131
138
|
});
|
|
132
139
|
// FIND TABLE NAMED FIELDS
|
|
@@ -137,12 +144,37 @@ function validateDuplicatedFields(dict, model, accessor) {
|
|
|
137
144
|
table: model.name,
|
|
138
145
|
field: field.name,
|
|
139
146
|
message: utils_1.StringUtil.trim `
|
|
140
|
-
|
|
147
|
+
Field name conflicts with an existing table name.
|
|
148
|
+
|
|
149
|
+
**What happened?**
|
|
150
|
+
The field "${field.name}" in model "${model.name}" has the same name as another table "${field.name}".
|
|
151
|
+
This can cause confusion and potential issues in the generated code.
|
|
141
152
|
|
|
142
|
-
|
|
143
|
-
|
|
153
|
+
**Why is this a problem?**
|
|
154
|
+
- Naming conflicts can lead to ambiguous references in your code
|
|
155
|
+
- It may cause issues with Prisma's relation inference
|
|
156
|
+
- It makes the schema harder to understand and maintain
|
|
144
157
|
|
|
145
|
-
|
|
158
|
+
**How to fix this:**
|
|
159
|
+
|
|
160
|
+
1. **If this is a denormalization field (pre-calculated value):**
|
|
161
|
+
- Consider if this field is really necessary
|
|
162
|
+
- If it's storing aggregated data from the related table, it might be better to calculate it dynamically
|
|
163
|
+
- Remove the field if it's redundant
|
|
164
|
+
|
|
165
|
+
2. **If this is a legitimate field:**
|
|
166
|
+
- Rename the field to be more descriptive
|
|
167
|
+
- Good naming examples:
|
|
168
|
+
- Instead of "user", use "user_name" or "user_id"
|
|
169
|
+
- Instead of "order", use "order_status" or "order_count"
|
|
170
|
+
- Instead of "product", use "product_name" or "product_code"
|
|
171
|
+
|
|
172
|
+
3. **Naming best practices:**
|
|
173
|
+
- Use specific, descriptive names that indicate the field's purpose
|
|
174
|
+
- Avoid using table names as field names
|
|
175
|
+
- Consider adding a suffix or prefix to clarify the field's role
|
|
176
|
+
|
|
177
|
+
Please rename the field or remove it if unnecessary.
|
|
146
178
|
`,
|
|
147
179
|
});
|
|
148
180
|
});
|
|
@@ -168,13 +200,16 @@ function validateDuplicatedIndexes(model, accessor) {
|
|
|
168
200
|
path,
|
|
169
201
|
table: model.name,
|
|
170
202
|
field: null,
|
|
171
|
-
message:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
203
|
+
message: utils_1.StringUtil.trim `
|
|
204
|
+
Duplicated index found (${fieldNames.join(", ")}).
|
|
205
|
+
|
|
206
|
+
Accessors of the other duplicated indexes are:
|
|
207
|
+
|
|
208
|
+
${array
|
|
209
|
+
.filter((_oppo, j) => i !== j)
|
|
210
|
+
.map((a) => `- ${a}`)
|
|
211
|
+
.join("\n")},
|
|
212
|
+
`,
|
|
178
213
|
});
|
|
179
214
|
});
|
|
180
215
|
// SUBSET RELATIONS
|
|
@@ -208,13 +243,44 @@ function validateDuplicatedIndexes(model, accessor) {
|
|
|
208
243
|
table: model.name,
|
|
209
244
|
field: null,
|
|
210
245
|
message: utils_1.StringUtil.trim `
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
246
|
+
Redundant subset unique index detected.
|
|
247
|
+
|
|
248
|
+
**What is a subset unique index problem?**
|
|
249
|
+
When you have a unique index on multiple fields, any subset of those fields is automatically unique too.
|
|
250
|
+
This is a fundamental property of unique constraints in databases.
|
|
251
|
+
|
|
252
|
+
**Current situation:**
|
|
253
|
+
- You have a unique index on: (${unique.fieldNames.join(", ")})
|
|
254
|
+
- But there's already a unique index on its subset: (${subset.join(", ")})
|
|
255
|
+
- This makes the larger unique index redundant for uniqueness purposes
|
|
256
|
+
|
|
257
|
+
**Why is this a problem?**
|
|
258
|
+
1. **Logical redundancy**: If (A) is unique, then (A, B) is automatically unique
|
|
259
|
+
2. **Performance overhead**: Maintaining unnecessary indexes slows down write operations
|
|
260
|
+
3. **Storage waste**: Each index consumes disk space
|
|
261
|
+
4. **Confusion**: It's unclear which uniqueness constraint is the intended one
|
|
262
|
+
|
|
263
|
+
**Example to illustrate:**
|
|
264
|
+
If email is unique, then (email, name) is automatically unique because:
|
|
265
|
+
- No two records can have the same email
|
|
266
|
+
- Therefore, no two records can have the same (email, name) combination
|
|
267
|
+
|
|
268
|
+
**How to fix:**
|
|
269
|
+
Choose one of these solutions based on your needs:
|
|
270
|
+
|
|
271
|
+
1. **If you need uniqueness only:**
|
|
272
|
+
- Keep just the subset unique index: (${subset.join(", ")})
|
|
273
|
+
- Remove the larger unique index
|
|
274
|
+
|
|
275
|
+
2. **If you need the multi-field index for query performance:**
|
|
276
|
+
- Keep the subset as unique index: (${subset.join(", ")})
|
|
277
|
+
- Change the larger index to a plain (non-unique) index for performance
|
|
278
|
+
|
|
279
|
+
3. **If the subset unique was added by mistake:**
|
|
280
|
+
- Remove the subset unique index
|
|
281
|
+
- Keep the multi-field unique index
|
|
282
|
+
|
|
283
|
+
Please review your uniqueness requirements and adjust accordingly.
|
|
218
284
|
`,
|
|
219
285
|
});
|
|
220
286
|
});
|
|
@@ -231,12 +297,42 @@ function validateDuplicatedIndexes(model, accessor) {
|
|
|
231
297
|
table: model.name,
|
|
232
298
|
field: null,
|
|
233
299
|
message: utils_1.StringUtil.trim `
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
300
|
+
Inefficient subset index detected - superset index exists.
|
|
301
|
+
|
|
302
|
+
**What is a subset/superset index problem?**
|
|
303
|
+
In database indexing, when you have an index on (A, B, C), it can efficiently serve queries
|
|
304
|
+
that filter by A, or by (A, B), or by (A, B, C). This is called index prefix matching.
|
|
305
|
+
|
|
306
|
+
**Current situation:**
|
|
307
|
+
- You have a plain index on: (${x.fieldNames.join(", ")})
|
|
308
|
+
- But there's already a plain index on its superset: (${y.fieldNames.join(", ")})
|
|
309
|
+
- The subset index is redundant because the superset can handle the same queries
|
|
310
|
+
|
|
311
|
+
**Why is this a problem?**
|
|
312
|
+
1. **Query efficiency**: The superset index can handle all queries the subset can
|
|
313
|
+
2. **Storage waste**: You're maintaining two indexes where one would suffice
|
|
314
|
+
3. **Write performance**: Each index slows down INSERT, UPDATE, and DELETE operations
|
|
315
|
+
4. **Maintenance overhead**: More indexes mean more work for the database
|
|
316
|
+
|
|
317
|
+
**How indexes work (example):**
|
|
318
|
+
If you have an index on (country, city, street):
|
|
319
|
+
- ✅ Can efficiently find by country
|
|
320
|
+
- ✅ Can efficiently find by country + city
|
|
321
|
+
- ✅ Can efficiently find by country + city + street
|
|
322
|
+
- ❌ Cannot efficiently find by city alone
|
|
323
|
+
- ❌ Cannot efficiently find by street alone
|
|
324
|
+
|
|
325
|
+
**How to fix:**
|
|
326
|
+
Remove the subset index (${x.fieldNames.join(", ")}) because:
|
|
327
|
+
- The superset index (${y.fieldNames.join(", ")}) already covers these queries
|
|
328
|
+
- You'll save storage space and improve write performance
|
|
329
|
+
- Query performance will remain the same
|
|
330
|
+
|
|
331
|
+
**When to keep both indexes:**
|
|
332
|
+
Only if the subset index is UNIQUE (which it isn't in this case), as unique
|
|
333
|
+
constraints serve a different purpose than performance optimization.
|
|
334
|
+
|
|
335
|
+
Please remove the redundant subset index.
|
|
240
336
|
`,
|
|
241
337
|
});
|
|
242
338
|
});
|
|
@@ -315,9 +411,37 @@ function validateIndexes(model, accessor) {
|
|
|
315
411
|
table: model.name,
|
|
316
412
|
field: null,
|
|
317
413
|
message: utils_1.StringUtil.trim `
|
|
318
|
-
GIN index
|
|
319
|
-
|
|
320
|
-
|
|
414
|
+
GIN index cannot be applied to this field.
|
|
415
|
+
|
|
416
|
+
**What is a GIN index?**
|
|
417
|
+
GIN (Generalized Inverted Index) is a special index type in PostgreSQL designed for
|
|
418
|
+
full-text search and operations on complex data types. In AutoBE, GIN indexes are
|
|
419
|
+
used exclusively for string fields to enable efficient text searching.
|
|
420
|
+
|
|
421
|
+
**Current problem:**
|
|
422
|
+
The field "${gin.fieldName}" specified for GIN index does not exist in the plain fields
|
|
423
|
+
of model "${model.name}".
|
|
424
|
+
|
|
425
|
+
**Possible causes:**
|
|
426
|
+
1. The field name is misspelled
|
|
427
|
+
2. The field is a foreign key field (not a plain field)
|
|
428
|
+
3. The field was removed but the index definition remained
|
|
429
|
+
|
|
430
|
+
**How to fix:**
|
|
431
|
+
1. Check if the field name is correct
|
|
432
|
+
2. Ensure the field exists in the plainFields array
|
|
433
|
+
3. Make sure the field is of type "string" (GIN indexes only work with strings)
|
|
434
|
+
4. If the field doesn't exist, either:
|
|
435
|
+
- Add the missing string field to plainFields
|
|
436
|
+
- Remove this GIN index definition
|
|
437
|
+
|
|
438
|
+
**Example of correct GIN index usage:**
|
|
439
|
+
plainFields: [
|
|
440
|
+
{ name: "content", type: "string" } // ✓ Can use GIN index
|
|
441
|
+
]
|
|
442
|
+
ginIndexes: [
|
|
443
|
+
{ fieldName: "content" } // ✓ Correct
|
|
444
|
+
]
|
|
321
445
|
`,
|
|
322
446
|
});
|
|
323
447
|
else if (model.plainFields[pIndex].type !== "string")
|
|
@@ -326,11 +450,43 @@ function validateIndexes(model, accessor) {
|
|
|
326
450
|
table: model.name,
|
|
327
451
|
field: model.plainFields[pIndex].name,
|
|
328
452
|
message: utils_1.StringUtil.trim `
|
|
329
|
-
GIN index
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
453
|
+
GIN index type mismatch - requires string field.
|
|
454
|
+
|
|
455
|
+
**What is a GIN index?**
|
|
456
|
+
GIN (Generalized Inverted Index) is PostgreSQL's specialized index for full-text search.
|
|
457
|
+
It's designed to efficiently search within text content, making it perfect for features like:
|
|
458
|
+
- Search functionality in articles or posts
|
|
459
|
+
- Finding keywords in product descriptions
|
|
460
|
+
- Filtering by text content
|
|
461
|
+
|
|
462
|
+
**Current problem:**
|
|
463
|
+
You're trying to apply a GIN index to field "${gin.fieldName}" which is of type "${model.plainFields[pIndex].type}".
|
|
464
|
+
GIN indexes can ONLY be applied to "string" type fields.
|
|
465
|
+
|
|
466
|
+
**Why string fields only?**
|
|
467
|
+
GIN indexes work by breaking down text into searchable tokens (words, phrases).
|
|
468
|
+
Other data types like numbers, booleans, or dates don't have this text structure.
|
|
469
|
+
|
|
470
|
+
**How to fix:**
|
|
471
|
+
|
|
472
|
+
1. **If you need text search on this field:**
|
|
473
|
+
- Change the field type to "string"
|
|
474
|
+
- Example: If storing a product code as number, consider storing as string instead
|
|
475
|
+
|
|
476
|
+
2. **If the field should remain as ${model.plainFields[pIndex].type}:**
|
|
477
|
+
- Remove the GIN index for this field
|
|
478
|
+
- Use a regular index instead (plainIndexes)
|
|
479
|
+
- Consider if you really need an index on this field
|
|
480
|
+
|
|
481
|
+
3. **Alternative indexing strategies:**
|
|
482
|
+
- For ${model.plainFields[pIndex].type} fields, use plainIndexes for general performance
|
|
483
|
+
- For unique ${model.plainFields[pIndex].type} values, use uniqueIndexes
|
|
484
|
+
- GIN indexes should be reserved for text search scenarios only
|
|
485
|
+
|
|
486
|
+
**Location of the field:**
|
|
487
|
+
- Field definition: ${`${accessor}.plainFields[${pIndex}]`}
|
|
488
|
+
|
|
489
|
+
Please either change the field type to "string" or remove the GIN index.
|
|
334
490
|
`,
|
|
335
491
|
});
|
|
336
492
|
},
|
|
@@ -340,6 +496,7 @@ function validateIndexes(model, accessor) {
|
|
|
340
496
|
function validateReferences(model, accessor, dict) {
|
|
341
497
|
const errors = [];
|
|
342
498
|
model.foreignFields.forEach((field, i) => {
|
|
499
|
+
// DUPLICATED NAME
|
|
343
500
|
const target = dict.get(field.relation.targetModel);
|
|
344
501
|
if (target === undefined) {
|
|
345
502
|
// CHECK EXISTENCE
|
|
@@ -361,22 +518,51 @@ function validateReferences(model, accessor, dict) {
|
|
|
361
518
|
message: utils_1.StringUtil.trim `
|
|
362
519
|
Cross-reference dependency detected between models.
|
|
363
520
|
|
|
364
|
-
|
|
521
|
+
**What is Cross-reference dependency?**
|
|
522
|
+
A cross-reference dependency (also known as circular dependency) occurs when two models
|
|
523
|
+
reference each other through foreign key fields. This creates a circular relationship
|
|
524
|
+
where Model A references Model B, and Model B also references Model A.
|
|
525
|
+
|
|
526
|
+
**Current situation:**
|
|
527
|
+
- ${model.name} model has a foreign key field "${field.name}" that references ${field.relation.targetModel}
|
|
528
|
+
- ${field.relation.targetModel} model also has a foreign key field that references ${model.name}
|
|
529
|
+
- Location of opposite reference: application.files[${target.fileIndex}].models[${target.modelIndex}].foreignFields[${j}].relation.targetModel
|
|
530
|
+
|
|
531
|
+
**Why is this a problem?**
|
|
532
|
+
Circular dependencies can cause issues with:
|
|
533
|
+
- Database initialization (which table to create first?)
|
|
534
|
+
- Data insertion (which record to insert first?)
|
|
535
|
+
- Cascading updates and deletes
|
|
536
|
+
- Query performance and complexity
|
|
365
537
|
|
|
366
|
-
|
|
538
|
+
**How to fix this:**
|
|
539
|
+
You need to remove one of the foreign key relationships. Here's how to decide:
|
|
367
540
|
|
|
368
|
-
|
|
541
|
+
1. **Identify the primary relationship direction**
|
|
542
|
+
- Which model is the "parent" and which is the "child"?
|
|
543
|
+
- Which relationship is essential for your business logic?
|
|
544
|
+
- Example: In User ↔ Profile, User is typically the parent
|
|
369
545
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
546
|
+
2. **Remove the redundant foreign key**
|
|
547
|
+
- Keep the foreign key in the child model pointing to the parent
|
|
548
|
+
- Remove the foreign key in the parent model pointing to the child
|
|
549
|
+
- You can still access the reverse relationship through Prisma's implicit relations
|
|
373
550
|
|
|
374
|
-
|
|
551
|
+
3. **Update any affected indexes**
|
|
552
|
+
- Remove indexes that include the deleted foreign key field
|
|
553
|
+
- Update composite indexes if necessary
|
|
375
554
|
|
|
376
|
-
|
|
377
|
-
|
|
555
|
+
**Example solution:**
|
|
556
|
+
If you have:
|
|
557
|
+
- User model with profileId foreign key
|
|
558
|
+
- Profile model with userId foreign key
|
|
559
|
+
|
|
560
|
+
You should:
|
|
561
|
+
- Keep userId in Profile (child references parent)
|
|
562
|
+
- Remove profileId from User
|
|
563
|
+
- Access user's profile through: user.profile (Prisma will handle this)
|
|
378
564
|
|
|
379
|
-
Please eliminate the circular dependency and
|
|
565
|
+
Please eliminate the circular dependency and regenerate the schema.`,
|
|
380
566
|
});
|
|
381
567
|
}
|
|
382
568
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validatePrismaApplication.js","sourceRoot":"","sources":["../../src/prisma/validatePrismaApplication.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validatePrismaApplication.js","sourceRoot":"","sources":["../../src/prisma/validatePrismaApplication.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,6 @@ exports.writePrismaApplication = writePrismaApplication;
|
|
|
7
7
|
const utils_1 = require("@autobe/utils");
|
|
8
8
|
const crypto_1 = __importDefault(require("crypto"));
|
|
9
9
|
const ArrayUtil_1 = require("../utils/ArrayUtil");
|
|
10
|
-
const MapUtil_1 = require("../utils/MapUtil");
|
|
11
10
|
function writePrismaApplication(props) {
|
|
12
11
|
for (const file of props.application.files)
|
|
13
12
|
for (const model of file.models)
|
|
@@ -40,7 +39,7 @@ function writeModel(props) {
|
|
|
40
39
|
function fillMappingName(model) {
|
|
41
40
|
const group = new Map();
|
|
42
41
|
for (const ff of model.foreignFields) {
|
|
43
|
-
|
|
42
|
+
utils_1.MapUtil.take(group, ff.relation.targetModel, () => []).push(ff);
|
|
44
43
|
if (ff.relation.targetModel == model.name)
|
|
45
44
|
ff.relation.mappingName = "recursive";
|
|
46
45
|
}
|