@autobe/compiler 0.3.23 → 0.4.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/AutoBeCompiler.d.ts +4 -5
- package/lib/AutoBeCompiler.js +5 -8
- package/lib/AutoBeCompiler.js.map +1 -1
- package/lib/AutoBePrismaCompiler.d.ts +3 -1
- package/lib/AutoBePrismaCompiler.js +12 -0
- package/lib/AutoBePrismaCompiler.js.map +1 -1
- package/lib/prisma/validatePrismaApplication.d.ts +2 -0
- package/lib/prisma/validatePrismaApplication.js +249 -0
- package/lib/prisma/validatePrismaApplication.js.map +1 -0
- package/lib/prisma/writePrismaApplication.d.ts +2 -0
- package/lib/prisma/writePrismaApplication.js +198 -0
- package/lib/prisma/writePrismaApplication.js.map +1 -0
- package/lib/utils/ArrayUtil.d.ts +1 -0
- package/lib/utils/ArrayUtil.js +13 -0
- package/lib/utils/ArrayUtil.js.map +1 -1
- package/lib/utils/MapUtil.d.ts +3 -0
- package/lib/utils/MapUtil.js +16 -0
- package/lib/utils/MapUtil.js.map +1 -0
- package/package.json +2 -2
- package/src/AutoBeCompiler.ts +9 -15
- package/src/AutoBePrismaCompiler.ts +17 -0
- package/src/prisma/validatePrismaApplication.ts +331 -0
- package/src/prisma/writePrismaApplication.ts +250 -0
- package/src/utils/ArrayUtil.ts +10 -0
- package/src/utils/MapUtil.ts +10 -0
package/lib/AutoBeCompiler.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { AutoBeOpenApi, IAutoBeCompiler,
|
|
1
|
+
import { AutoBeOpenApi, IAutoBeCompiler, IAutoBePrismaCompiler, IAutoBeTypeScriptCompilerProps, IAutoBeTypeScriptCompilerResult } from "@autobe/interface";
|
|
2
2
|
export declare class AutoBeCompiler implements IAutoBeCompiler {
|
|
3
|
-
|
|
4
|
-
private readonly interface_;
|
|
5
|
-
private readonly typescript_;
|
|
6
|
-
prisma(props: IAutoBePrismaCompilerProps): Promise<IAutoBePrismaCompilerResult>;
|
|
3
|
+
readonly prisma: IAutoBePrismaCompiler;
|
|
7
4
|
interface(document: AutoBeOpenApi.IDocument): Promise<Record<string, string>>;
|
|
8
5
|
typescript(props: IAutoBeTypeScriptCompilerProps): Promise<IAutoBeTypeScriptCompilerResult>;
|
|
6
|
+
private readonly interface_compiler_;
|
|
7
|
+
private readonly typescript_compiler_;
|
|
9
8
|
}
|
package/lib/AutoBeCompiler.js
CHANGED
|
@@ -6,18 +6,15 @@ const AutoBePrismaCompiler_1 = require("./AutoBePrismaCompiler");
|
|
|
6
6
|
const AutoBeTypeScriptCompiler_1 = require("./AutoBeTypeScriptCompiler");
|
|
7
7
|
class AutoBeCompiler {
|
|
8
8
|
constructor() {
|
|
9
|
-
this.
|
|
10
|
-
this.
|
|
11
|
-
this.
|
|
12
|
-
}
|
|
13
|
-
prisma(props) {
|
|
14
|
-
return this.prisma_.compile(props);
|
|
9
|
+
this.prisma = new AutoBePrismaCompiler_1.AutoBePrismaCompiler();
|
|
10
|
+
this.interface_compiler_ = new AutoBeInterfaceCompiler_1.AutoBeInterfaceCompiler();
|
|
11
|
+
this.typescript_compiler_ = new AutoBeTypeScriptCompiler_1.AutoBeTypeScriptCompiler();
|
|
15
12
|
}
|
|
16
13
|
interface(document) {
|
|
17
|
-
return this.
|
|
14
|
+
return this.interface_compiler_.compile(document);
|
|
18
15
|
}
|
|
19
16
|
typescript(props) {
|
|
20
|
-
return this.
|
|
17
|
+
return this.typescript_compiler_.compile(props);
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
20
|
exports.AutoBeCompiler = AutoBeCompiler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoBeCompiler.js","sourceRoot":"","sources":["../src/AutoBeCompiler.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AutoBeCompiler.js","sourceRoot":"","sources":["../src/AutoBeCompiler.ts"],"names":[],"mappings":";;;AAUA,uEAAoE;AACpE,iEAA8D;AAC9D,yEAAsE;AAEtE,MAAa,cAAc;IAA3B;QACkB,WAAM,GAA0B,IAAI,2CAAoB,EAAE,CAAC;QAc1D,wBAAmB,GAClC,IAAI,iDAAuB,EAAE,CAAC;QAEf,yBAAoB,GACnC,IAAI,mDAAwB,EAAE,CAAC;IACnC,CAAC;IAjBQ,SAAS,CACd,QAAiC;QAEjC,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEM,UAAU,CACf,KAAqC;QAErC,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;CAOF;AApBD,wCAoBC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { IAutoBePrismaCompiler, IAutoBePrismaCompilerProps, IAutoBePrismaCompilerResult } from "@autobe/interface";
|
|
1
|
+
import { AutoBePrisma, IAutoBePrismaCompiler, IAutoBePrismaCompilerProps, IAutoBePrismaCompilerResult, IAutoBePrismaValidation } from "@autobe/interface";
|
|
2
2
|
export declare class AutoBePrismaCompiler implements IAutoBePrismaCompiler {
|
|
3
3
|
compile(props: IAutoBePrismaCompilerProps): Promise<IAutoBePrismaCompilerResult>;
|
|
4
|
+
validate(app: AutoBePrisma.IApplication): Promise<IAutoBePrismaValidation>;
|
|
5
|
+
write(app: AutoBePrisma.IApplication): Promise<Record<string, string>>;
|
|
4
6
|
}
|
|
@@ -11,6 +11,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.AutoBePrismaCompiler = void 0;
|
|
13
13
|
const embed_prisma_1 = require("embed-prisma");
|
|
14
|
+
const validatePrismaApplication_1 = require("./prisma/validatePrismaApplication");
|
|
15
|
+
const writePrismaApplication_1 = require("./prisma/writePrismaApplication");
|
|
14
16
|
class AutoBePrismaCompiler {
|
|
15
17
|
compile(props) {
|
|
16
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -18,6 +20,16 @@ class AutoBePrismaCompiler {
|
|
|
18
20
|
return compiler.compile(props.files);
|
|
19
21
|
});
|
|
20
22
|
}
|
|
23
|
+
validate(app) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return (0, validatePrismaApplication_1.validatePrismaApplication)(app);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
write(app) {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
return (0, writePrismaApplication_1.writePrismaApplication)(app);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
21
33
|
}
|
|
22
34
|
exports.AutoBePrismaCompiler = AutoBePrismaCompiler;
|
|
23
35
|
//# sourceMappingURL=AutoBePrismaCompiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoBePrismaCompiler.js","sourceRoot":"","sources":["../src/AutoBePrismaCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"AutoBePrismaCompiler.js","sourceRoot":"","sources":["../src/AutoBePrismaCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,+CAA2C;AAE3C,kFAA+E;AAC/E,4EAAyE;AAEzE,MAAa,oBAAoB;IAClB,OAAO,CAClB,KAAiC;;YAEjC,MAAM,QAAQ,GAAgB,IAAI,0BAAW,EAAE,CAAC;YAChD,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;KAAA;IAEY,QAAQ,CACnB,GAA8B;;YAE9B,OAAO,IAAA,qDAAyB,EAAC,GAAG,CAAC,CAAC;QACxC,CAAC;KAAA;IAEY,KAAK,CAChB,GAA8B;;YAE9B,OAAO,IAAA,+CAAsB,EAAC,GAAG,CAAC,CAAC;QACrC,CAAC;KAAA;CACF;AAnBD,oDAmBC"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validatePrismaApplication = validatePrismaApplication;
|
|
4
|
+
const tstl_1 = require("tstl");
|
|
5
|
+
const MapUtil_1 = require("../utils/MapUtil");
|
|
6
|
+
function validatePrismaApplication(application) {
|
|
7
|
+
const dict = new Map(application.files
|
|
8
|
+
.map((file) => file.models)
|
|
9
|
+
.flat()
|
|
10
|
+
.map((model) => [model.name, model]));
|
|
11
|
+
const errors = [
|
|
12
|
+
...validateDuplicatedFiles(application),
|
|
13
|
+
...validateDuplicatedModels(application),
|
|
14
|
+
...application.files
|
|
15
|
+
.map((file, fi) => file.models.map((model, mi) => {
|
|
16
|
+
const accessor = `application.files[${fi}].models[${mi}]`;
|
|
17
|
+
return [
|
|
18
|
+
...validateDuplicatedFields(model, accessor),
|
|
19
|
+
...validateDuplicatedIndexes(model, accessor),
|
|
20
|
+
...validateIndexes(model, accessor),
|
|
21
|
+
...validateReferences(model, accessor, dict),
|
|
22
|
+
];
|
|
23
|
+
}))
|
|
24
|
+
.flat(2),
|
|
25
|
+
];
|
|
26
|
+
return errors.length === 0
|
|
27
|
+
? { success: true, data: application }
|
|
28
|
+
: { success: false, data: application, errors };
|
|
29
|
+
}
|
|
30
|
+
/* -----------------------------------------------------------
|
|
31
|
+
DUPLICATES
|
|
32
|
+
----------------------------------------------------------- */
|
|
33
|
+
function validateDuplicatedFiles(app) {
|
|
34
|
+
const group = new Map();
|
|
35
|
+
app.files.forEach((file, fileIndex) => {
|
|
36
|
+
const container = { file, index: fileIndex };
|
|
37
|
+
MapUtil_1.MapUtil.take(group, file.filename, () => []).push(container);
|
|
38
|
+
});
|
|
39
|
+
const errors = [];
|
|
40
|
+
for (const array of group.values())
|
|
41
|
+
if (array.length !== 1)
|
|
42
|
+
array.forEach((container, i) => {
|
|
43
|
+
errors.push({
|
|
44
|
+
path: `application.files[${container.index}]`,
|
|
45
|
+
table: null,
|
|
46
|
+
field: null,
|
|
47
|
+
message: [
|
|
48
|
+
`File ${container.file.filename} is duplicated.`,
|
|
49
|
+
"",
|
|
50
|
+
"Accessors of the other duplicated files are:",
|
|
51
|
+
"",
|
|
52
|
+
...array
|
|
53
|
+
.filter((_oppo, j) => i !== j)
|
|
54
|
+
.map((oppo) => `- application.files[${oppo.index}]`),
|
|
55
|
+
].join("\n"),
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
return errors;
|
|
59
|
+
}
|
|
60
|
+
function validateDuplicatedModels(app) {
|
|
61
|
+
const modelContainers = new Map();
|
|
62
|
+
app.files.forEach((file, fileIndex) => {
|
|
63
|
+
file.models.forEach((model, modelIndex) => {
|
|
64
|
+
const container = {
|
|
65
|
+
file,
|
|
66
|
+
model,
|
|
67
|
+
fileIndex,
|
|
68
|
+
modelIndex,
|
|
69
|
+
};
|
|
70
|
+
MapUtil_1.MapUtil.take(modelContainers, model.name, () => []).push(container);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
const errors = [];
|
|
74
|
+
for (const array of modelContainers.values())
|
|
75
|
+
if (array.length !== 1)
|
|
76
|
+
array.forEach((container, i) => {
|
|
77
|
+
errors.push({
|
|
78
|
+
path: `application.files[${container.fileIndex}].models[${container.modelIndex}]`,
|
|
79
|
+
table: container.model.name,
|
|
80
|
+
field: null,
|
|
81
|
+
message: [
|
|
82
|
+
`Model ${container.model.name} is duplicated.`,
|
|
83
|
+
"",
|
|
84
|
+
"Accessors of the other duplicated models are:",
|
|
85
|
+
"",
|
|
86
|
+
...array
|
|
87
|
+
.filter((_oppo, j) => i !== j)
|
|
88
|
+
.map((oppo) => `- application.files[${oppo.fileIndex}].models[${oppo.modelIndex}]`),
|
|
89
|
+
].join("\n"),
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
return errors;
|
|
93
|
+
}
|
|
94
|
+
function validateDuplicatedFields(model, accessor) {
|
|
95
|
+
const group = new Map();
|
|
96
|
+
MapUtil_1.MapUtil.take(group, model.primaryField.name, () => []).push(`${accessor}.primaryField.name`);
|
|
97
|
+
model.foreignFields.forEach((field, i) => MapUtil_1.MapUtil.take(group, field.name, () => []).push(`${accessor}.foreignFields[${i}].name`));
|
|
98
|
+
model.plainFields.forEach((field, i) => MapUtil_1.MapUtil.take(group, field.name, () => []).push(`${accessor}.plainFields[${i}].name`));
|
|
99
|
+
const errors = [];
|
|
100
|
+
for (const [field, array] of group)
|
|
101
|
+
if (array.length !== 1)
|
|
102
|
+
array.forEach((path, i) => {
|
|
103
|
+
errors.push({
|
|
104
|
+
path,
|
|
105
|
+
table: model.name,
|
|
106
|
+
field,
|
|
107
|
+
message: [
|
|
108
|
+
`Field ${field} is duplicated.`,
|
|
109
|
+
"",
|
|
110
|
+
"Accessors of the other duplicated fields are:",
|
|
111
|
+
"",
|
|
112
|
+
...array.filter((_oppo, j) => i !== j).map((a) => `- ${a}`),
|
|
113
|
+
].join("\n"),
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
return errors;
|
|
117
|
+
}
|
|
118
|
+
function validateDuplicatedIndexes(model, accessor) {
|
|
119
|
+
const group = new tstl_1.HashMap((x) => (0, tstl_1.hash)(...x), (x, y) => x.length === y.length && x.every((v, i) => v === y[i]));
|
|
120
|
+
model.uniqueIndexes.forEach((unique, i) => group
|
|
121
|
+
.take(unique.fieldNames, () => [])
|
|
122
|
+
.push(`${accessor}.uniqueIndexes[${i}].fieldNames`));
|
|
123
|
+
model.plainIndexes.forEach((plain, i) => group
|
|
124
|
+
.take(plain.fieldNames, () => [])
|
|
125
|
+
.push(`${accessor}.plainIndexes[${i}].fieldNames`));
|
|
126
|
+
const errors = [];
|
|
127
|
+
for (const { first: fieldNames, second: array } of group)
|
|
128
|
+
if (array.length !== 1)
|
|
129
|
+
array.forEach((path, i) => {
|
|
130
|
+
errors.push({
|
|
131
|
+
path,
|
|
132
|
+
table: model.name,
|
|
133
|
+
field: null,
|
|
134
|
+
message: [
|
|
135
|
+
`Duplicated index found (${fieldNames.join(", ")})`,
|
|
136
|
+
"",
|
|
137
|
+
"Accessors of the other duplicated indexes are:",
|
|
138
|
+
"",
|
|
139
|
+
...array.filter((_oppo, j) => i !== j).map((a) => `- ${a}`),
|
|
140
|
+
].join("\n"),
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
if (model.ginIndexes.length !==
|
|
144
|
+
new Set(model.ginIndexes.map((g) => g.fieldName)).size)
|
|
145
|
+
errors.push({
|
|
146
|
+
path: `${accessor}.ginIndexes[].fieldName`,
|
|
147
|
+
table: model.name,
|
|
148
|
+
field: null,
|
|
149
|
+
message: [
|
|
150
|
+
"Duplicated GIN index found.",
|
|
151
|
+
"",
|
|
152
|
+
"GIN index can only be used once per field.",
|
|
153
|
+
"Please remove the duplicated GIN indexes.",
|
|
154
|
+
].join("\n"),
|
|
155
|
+
});
|
|
156
|
+
return errors;
|
|
157
|
+
}
|
|
158
|
+
/* -----------------------------------------------------------
|
|
159
|
+
VALIDATIONS
|
|
160
|
+
----------------------------------------------------------- */
|
|
161
|
+
function validateIndexes(model, accessor) {
|
|
162
|
+
// EMENSION
|
|
163
|
+
model.uniqueIndexes = model.uniqueIndexes.filter((unique) => unique.fieldNames.length !== 0 &&
|
|
164
|
+
unique.fieldNames[0] !== model.primaryField.name);
|
|
165
|
+
model.plainIndexes = model.plainIndexes.filter((plain) => plain.fieldNames.length !== 0 &&
|
|
166
|
+
plain.fieldNames[0] !== model.primaryField.name);
|
|
167
|
+
const errors = [];
|
|
168
|
+
const columnNames = new Set([
|
|
169
|
+
model.primaryField.name,
|
|
170
|
+
...model.foreignFields.map((field) => field.name),
|
|
171
|
+
...model.plainFields.map((field) => field.name),
|
|
172
|
+
]);
|
|
173
|
+
// COLUMN LEVEL VALIDATION
|
|
174
|
+
const validate = (props) => {
|
|
175
|
+
props.indexes.forEach((idx, i) => {
|
|
176
|
+
// FIND TARGET FIELD
|
|
177
|
+
props.fieldNames(idx).forEach((name, j) => {
|
|
178
|
+
if (!columnNames.has(name))
|
|
179
|
+
errors.push({
|
|
180
|
+
path: `${accessor}.${props.accessor(i, j)}`,
|
|
181
|
+
table: model.name,
|
|
182
|
+
field: null,
|
|
183
|
+
message: `Field ${name} does not exist in model ${model.name}.`,
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
validate({
|
|
189
|
+
title: "unique index",
|
|
190
|
+
indexes: model.uniqueIndexes,
|
|
191
|
+
fieldNames: (idx) => idx.fieldNames,
|
|
192
|
+
accessor: (i, j) => `uniqueIndexes[${i}].fieldNames[${j}]`,
|
|
193
|
+
});
|
|
194
|
+
validate({
|
|
195
|
+
title: "index",
|
|
196
|
+
indexes: model.plainIndexes,
|
|
197
|
+
fieldNames: (idx) => idx.fieldNames,
|
|
198
|
+
accessor: (i, j) => `plainIndexes[${i}].fieldNames[${j}]`,
|
|
199
|
+
});
|
|
200
|
+
validate({
|
|
201
|
+
title: "index",
|
|
202
|
+
indexes: model.ginIndexes,
|
|
203
|
+
fieldNames: (idx) => [idx.fieldName],
|
|
204
|
+
accessor: (i) => `ginIndexes[${i}].fieldName`,
|
|
205
|
+
additional: (gin, i) => {
|
|
206
|
+
const pIndex = model.plainFields.findIndex((plain) => plain.name === gin.fieldName);
|
|
207
|
+
if (pIndex === -1)
|
|
208
|
+
errors.push({
|
|
209
|
+
path: `${accessor}.ginIndexes[${i}].fieldName`,
|
|
210
|
+
table: model.name,
|
|
211
|
+
field: null,
|
|
212
|
+
message: [
|
|
213
|
+
"GIN index can only be used on string typed field.",
|
|
214
|
+
`However, the target field ${gin.fieldName} does not exist",
|
|
215
|
+
"in the {@link plainFields}.`,
|
|
216
|
+
].join("\n"),
|
|
217
|
+
});
|
|
218
|
+
else if (model.plainFields[pIndex].type !== "string")
|
|
219
|
+
errors.push({
|
|
220
|
+
path: `${accessor}.ginIndexes[${i}].fieldName`,
|
|
221
|
+
table: model.name,
|
|
222
|
+
field: model.plainFields[pIndex].name,
|
|
223
|
+
message: [
|
|
224
|
+
"GIN index can only be used on string typed field.",
|
|
225
|
+
`However, the target field ${gin.fieldName} is not string,`,
|
|
226
|
+
`but ${model.plainFields[pIndex].type}.`,
|
|
227
|
+
"",
|
|
228
|
+
`- accessor of the wrong typed field: ${`${accessor}.plainFields[${pIndex}].type`}`,
|
|
229
|
+
].join("\n"),
|
|
230
|
+
});
|
|
231
|
+
},
|
|
232
|
+
});
|
|
233
|
+
return errors;
|
|
234
|
+
}
|
|
235
|
+
function validateReferences(model, accessor, dict) {
|
|
236
|
+
const errors = [];
|
|
237
|
+
model.foreignFields.forEach((field, i) => {
|
|
238
|
+
const target = dict.get(field.relation.targetModel);
|
|
239
|
+
if (target === undefined)
|
|
240
|
+
errors.push({
|
|
241
|
+
path: `${accessor}.foreignFields[${i}].relation.targetModel`,
|
|
242
|
+
table: model.name,
|
|
243
|
+
field: field.name,
|
|
244
|
+
message: `Target model ${field.relation.targetModel} does not exist.`,
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
return errors;
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=validatePrismaApplication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatePrismaApplication.js","sourceRoot":"","sources":["../../src/prisma/validatePrismaApplication.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.writePrismaApplication = writePrismaApplication;
|
|
4
|
+
const ArrayUtil_1 = require("../utils/ArrayUtil");
|
|
5
|
+
const MapUtil_1 = require("../utils/MapUtil");
|
|
6
|
+
function writePrismaApplication(app) {
|
|
7
|
+
for (const file of app.files)
|
|
8
|
+
for (const model of file.models)
|
|
9
|
+
fillMappingName(model);
|
|
10
|
+
return Object.assign(Object.assign({}, Object.fromEntries(app.files
|
|
11
|
+
.filter((file) => file.filename !== "main.prisma")
|
|
12
|
+
.map((file) => [file.filename, writeFile(app, file)]))), { "main.prisma": MAIN_FILE });
|
|
13
|
+
}
|
|
14
|
+
function writeFile(app, file) {
|
|
15
|
+
return file.models.map((model) => writeModel(app, file, model)).join("\n\n");
|
|
16
|
+
}
|
|
17
|
+
function writeModel(app, file, model) {
|
|
18
|
+
return [
|
|
19
|
+
writeComment([
|
|
20
|
+
model.description,
|
|
21
|
+
"",
|
|
22
|
+
...(model.material ? [] : [`@namespace ${file.namespace}`]),
|
|
23
|
+
"@author AutoBE - https://github.com/wrtnlabs/autobe",
|
|
24
|
+
].join("\n")),
|
|
25
|
+
`model ${model.name} {`,
|
|
26
|
+
indent(ArrayUtil_1.ArrayUtil.paddle([writeColumns(model), writeRelations(app, model)]).join("\n")),
|
|
27
|
+
"}",
|
|
28
|
+
].join("\n");
|
|
29
|
+
}
|
|
30
|
+
function fillMappingName(model) {
|
|
31
|
+
const group = new Map();
|
|
32
|
+
for (const ff of model.foreignFields) {
|
|
33
|
+
MapUtil_1.MapUtil.take(group, ff.relation.targetModel, () => []).push(ff);
|
|
34
|
+
if (ff.relation.targetModel == model.name)
|
|
35
|
+
ff.relation.mappingName = "recursive";
|
|
36
|
+
}
|
|
37
|
+
for (const array of group.values())
|
|
38
|
+
if (array.length !== 1)
|
|
39
|
+
for (const ff of array) {
|
|
40
|
+
ff.relation.mappingName = `${model.name}_of_${ff.name}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/* -----------------------------------------------------------
|
|
44
|
+
COLUMNS
|
|
45
|
+
----------------------------------------------------------- */
|
|
46
|
+
function writeColumns(model) {
|
|
47
|
+
return [
|
|
48
|
+
"//----",
|
|
49
|
+
"// COLUMNS",
|
|
50
|
+
"//----",
|
|
51
|
+
writePrimary(model.primaryField),
|
|
52
|
+
...model.foreignFields.map((x) => ["", writeField(x)]).flat(),
|
|
53
|
+
...model.plainFields.map((x) => ["", writeField(x)]).flat(),
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
function writePrimary(field) {
|
|
57
|
+
return [
|
|
58
|
+
writeComment(field.description),
|
|
59
|
+
`${field.name} String @id @db.Uuid`,
|
|
60
|
+
].join("\n");
|
|
61
|
+
}
|
|
62
|
+
function writeField(field) {
|
|
63
|
+
const logical = LOGICAL_TYPES[field.type];
|
|
64
|
+
const physical = PHYSICAL_TYPES[field.type];
|
|
65
|
+
return [
|
|
66
|
+
writeComment(field.description),
|
|
67
|
+
[
|
|
68
|
+
field.name,
|
|
69
|
+
`${logical}${field.nullable ? "?" : ""}`,
|
|
70
|
+
...(physical ? [physical] : []),
|
|
71
|
+
].join(" "),
|
|
72
|
+
].join("\n");
|
|
73
|
+
}
|
|
74
|
+
/* -----------------------------------------------------------
|
|
75
|
+
RELATIONS
|
|
76
|
+
----------------------------------------------------------- */
|
|
77
|
+
function writeRelations(app, model) {
|
|
78
|
+
const hasRelationships = app.files
|
|
79
|
+
.map((otherFile) => otherFile.models.map((otherModel) => otherModel.foreignFields
|
|
80
|
+
.filter((otherForeign) => otherForeign.relation.targetModel === model.name)
|
|
81
|
+
.map((otherForeign) => ({
|
|
82
|
+
modelName: otherModel.name,
|
|
83
|
+
unique: otherForeign.unique,
|
|
84
|
+
mappingName: otherForeign.relation.mappingName,
|
|
85
|
+
}))))
|
|
86
|
+
.flat(2);
|
|
87
|
+
const foreignIndexes = model.foreignFields.filter((f) => model.uniqueIndexes.every((u) => u.fieldNames[0] !== f.name) &&
|
|
88
|
+
model.plainIndexes.every((p) => p.fieldNames[0] !== f.name));
|
|
89
|
+
const contents = [
|
|
90
|
+
model.foreignFields.map(writeConstraint),
|
|
91
|
+
hasRelationships.map((r) => {
|
|
92
|
+
var _a;
|
|
93
|
+
return [
|
|
94
|
+
(_a = r.mappingName) !== null && _a !== void 0 ? _a : r.modelName,
|
|
95
|
+
`${r.modelName}${r.unique ? "?" : "[]"}`,
|
|
96
|
+
...(r.mappingName ? [`@relation("${r.mappingName}")`] : []),
|
|
97
|
+
].join(" ");
|
|
98
|
+
}),
|
|
99
|
+
foreignIndexes.map(writeForeignIndex),
|
|
100
|
+
[
|
|
101
|
+
...model.uniqueIndexes.map(writeUniqueIndex),
|
|
102
|
+
...model.plainIndexes.map(writePlainIndex),
|
|
103
|
+
...model.ginIndexes.map(writeGinIndex),
|
|
104
|
+
],
|
|
105
|
+
];
|
|
106
|
+
if (contents.every((c) => c.length === 0))
|
|
107
|
+
return [];
|
|
108
|
+
return [
|
|
109
|
+
"//----",
|
|
110
|
+
"// RELATIONS",
|
|
111
|
+
"//----",
|
|
112
|
+
// paddled content
|
|
113
|
+
...ArrayUtil_1.ArrayUtil.paddle(contents),
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
function writeConstraint(field) {
|
|
117
|
+
return [
|
|
118
|
+
field.relation.name,
|
|
119
|
+
`${field.relation.targetModel}${field.nullable ? "?" : ""}`,
|
|
120
|
+
`@relation(${[
|
|
121
|
+
...(field.relation.mappingName
|
|
122
|
+
? [`"${field.relation.mappingName}"`]
|
|
123
|
+
: []),
|
|
124
|
+
`fields: [${field.name}]`,
|
|
125
|
+
`references: [id]`,
|
|
126
|
+
`onDelete: Cascade`,
|
|
127
|
+
].join(", ")})`,
|
|
128
|
+
].join(" ");
|
|
129
|
+
}
|
|
130
|
+
function writeForeignIndex(field) {
|
|
131
|
+
return `@@${field.unique ? "unique" : "index"}([${field.name}])`;
|
|
132
|
+
}
|
|
133
|
+
function writeUniqueIndex(field) {
|
|
134
|
+
return `@@unique([${field.fieldNames.join(", ")}])`;
|
|
135
|
+
}
|
|
136
|
+
function writePlainIndex(field) {
|
|
137
|
+
return `@@index([${field.fieldNames.join(", ")}])`;
|
|
138
|
+
}
|
|
139
|
+
function writeGinIndex(field) {
|
|
140
|
+
return `@@index([${field.fieldName}(ops: raw("gin_trgm_ops"))], type: Gin)`;
|
|
141
|
+
}
|
|
142
|
+
/* -----------------------------------------------------------
|
|
143
|
+
BACKGROUND
|
|
144
|
+
----------------------------------------------------------- */
|
|
145
|
+
function writeComment(content) {
|
|
146
|
+
return content
|
|
147
|
+
.split("\r\n")
|
|
148
|
+
.join("\n")
|
|
149
|
+
.split("\n")
|
|
150
|
+
.map((str) => `///${str.length ? ` ${str}` : ""}`)
|
|
151
|
+
.join("\n")
|
|
152
|
+
.trim();
|
|
153
|
+
}
|
|
154
|
+
function indent(content) {
|
|
155
|
+
return content
|
|
156
|
+
.split("\r\n")
|
|
157
|
+
.join("\n")
|
|
158
|
+
.split("\n")
|
|
159
|
+
.map((str) => ` ${str}`)
|
|
160
|
+
.join("\n");
|
|
161
|
+
}
|
|
162
|
+
const LOGICAL_TYPES = {
|
|
163
|
+
// native types
|
|
164
|
+
boolean: "Boolean",
|
|
165
|
+
int: "Int",
|
|
166
|
+
double: "Float",
|
|
167
|
+
string: "String",
|
|
168
|
+
// formats
|
|
169
|
+
datetime: "DateTime",
|
|
170
|
+
uuid: "String",
|
|
171
|
+
uri: "String",
|
|
172
|
+
};
|
|
173
|
+
const PHYSICAL_TYPES = {
|
|
174
|
+
int: "@db.Integer",
|
|
175
|
+
double: "@db.DoublePrecision",
|
|
176
|
+
uuid: "@db.Uuid",
|
|
177
|
+
datetime: "@db.Timestamptz",
|
|
178
|
+
uri: "@db.VarChar(80000)",
|
|
179
|
+
};
|
|
180
|
+
const MAIN_FILE = `
|
|
181
|
+
generator client {
|
|
182
|
+
provider = "prisma-client-js"
|
|
183
|
+
previewFeatures = ["postgresqlExtensions", "views"]
|
|
184
|
+
binaryTargets = ["native"]
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
datasource db {
|
|
188
|
+
provider = "postgresql"
|
|
189
|
+
url = env("DATABASE_URL")
|
|
190
|
+
extensions = []
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
generator markdown {
|
|
194
|
+
provider = "prisma-markdown"
|
|
195
|
+
output = "../docs/ERD.md"
|
|
196
|
+
}
|
|
197
|
+
`.trim();
|
|
198
|
+
//# sourceMappingURL=writePrismaApplication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writePrismaApplication.js","sourceRoot":"","sources":["../../src/prisma/writePrismaApplication.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/ArrayUtil.d.ts
CHANGED
package/lib/utils/ArrayUtil.js
CHANGED
|
@@ -21,5 +21,18 @@ var ArrayUtil;
|
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
ArrayUtil.asyncMap = asyncMap;
|
|
24
|
+
function paddle(contents) {
|
|
25
|
+
const output = [];
|
|
26
|
+
contents.forEach((c) => {
|
|
27
|
+
if (c.length === 0)
|
|
28
|
+
return;
|
|
29
|
+
else if (output.length === 0)
|
|
30
|
+
output.push(...c);
|
|
31
|
+
else
|
|
32
|
+
output.push("", ...c);
|
|
33
|
+
});
|
|
34
|
+
return output;
|
|
35
|
+
}
|
|
36
|
+
ArrayUtil.paddle = paddle;
|
|
24
37
|
})(ArrayUtil || (exports.ArrayUtil = ArrayUtil = {}));
|
|
25
38
|
//# sourceMappingURL=ArrayUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayUtil.js","sourceRoot":"","sources":["../../src/utils/ArrayUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,IAAiB,SAAS,
|
|
1
|
+
{"version":3,"file":"ArrayUtil.js","sourceRoot":"","sources":["../../src/utils/ArrayUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,IAAiB,SAAS,CAoBzB;AApBD,WAAiB,SAAS;IACxB,SAAsB,QAAQ,CAC5B,KAAU,EACV,QAA6D;;YAE7D,MAAM,MAAM,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBACnC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IARqB,kBAAQ,WAQ7B,CAAA;IAED,SAAgB,MAAM,CAAC,QAAoB;QACzC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;iBACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;gBAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IARe,gBAAM,SAQrB,CAAA;AACH,CAAC,EApBgB,SAAS,yBAAT,SAAS,QAoBzB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MapUtil = void 0;
|
|
4
|
+
var MapUtil;
|
|
5
|
+
(function (MapUtil) {
|
|
6
|
+
function take(map, key, value) {
|
|
7
|
+
if (map.has(key)) {
|
|
8
|
+
return map.get(key);
|
|
9
|
+
}
|
|
10
|
+
const newValue = value();
|
|
11
|
+
map.set(key, newValue);
|
|
12
|
+
return newValue;
|
|
13
|
+
}
|
|
14
|
+
MapUtil.take = take;
|
|
15
|
+
})(MapUtil || (exports.MapUtil = MapUtil = {}));
|
|
16
|
+
//# sourceMappingURL=MapUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapUtil.js","sourceRoot":"","sources":["../../src/utils/MapUtil.ts"],"names":[],"mappings":";;;AAAA,IAAiB,OAAO,CASvB;AATD,WAAiB,OAAO;IACtB,SAAgB,IAAI,CAAO,GAAc,EAAE,GAAM,EAAE,KAAc;QAC/D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QAC3B,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAPe,YAAI,OAOnB,CAAA;AACH,CAAC,EATgB,OAAO,uBAAP,OAAO,QASvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autobe/compiler",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "AI backend server code generator",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"author": "Wrtn Technologies",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"prisma-markdown": "^3.0.0",
|
|
26
26
|
"tstl": "^3.0.0",
|
|
27
27
|
"typia": "^9.3.1",
|
|
28
|
-
"@autobe/interface": "^0.
|
|
28
|
+
"@autobe/interface": "^0.4.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^22.15.3",
|