@autobe/compiler 0.5.1 → 0.5.2

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.
@@ -1,6 +1,6 @@
1
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>;
4
+ validate(app: AutoBePrisma.IApplication, previous?: AutoBePrisma.IApplication | undefined): Promise<IAutoBePrismaValidation>;
5
5
  write(app: AutoBePrisma.IApplication): Promise<Record<string, string>>;
6
6
  }
@@ -20,9 +20,9 @@ class AutoBePrismaCompiler {
20
20
  return compiler.compile(props.files);
21
21
  });
22
22
  }
23
- validate(app) {
23
+ validate(app, previous) {
24
24
  return __awaiter(this, void 0, void 0, function* () {
25
- return (0, validatePrismaApplication_1.validatePrismaApplication)(app);
25
+ return (0, validatePrismaApplication_1.validatePrismaApplication)(app, previous);
26
26
  });
27
27
  }
28
28
  write(app) {
@@ -1 +1 @@
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"}
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,EAC9B,QAAgD;;YAEhD,OAAO,IAAA,qDAAyB,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;KAAA;IAEY,KAAK,CAChB,GAA8B;;YAE9B,OAAO,IAAA,+CAAsB,EAAC,GAAG,CAAC,CAAC;QACrC,CAAC;KAAA;CACF;AApBD,oDAoBC"}
@@ -1,2 +1,2 @@
1
1
  import { AutoBePrisma, IAutoBePrismaValidation } from "@autobe/interface";
2
- export declare function validatePrismaApplication(application: AutoBePrisma.IApplication): IAutoBePrismaValidation;
2
+ export declare function validatePrismaApplication(application: AutoBePrisma.IApplication, previous?: AutoBePrisma.IApplication | undefined): IAutoBePrismaValidation;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validatePrismaApplication = validatePrismaApplication;
4
4
  const tstl_1 = require("tstl");
5
5
  const MapUtil_1 = require("../utils/MapUtil");
6
- function validatePrismaApplication(application) {
6
+ function validatePrismaApplication(application, previous) {
7
7
  const dict = new Map(application.files
8
8
  .map((file) => file.models)
9
9
  .flat()
@@ -15,18 +15,27 @@ function validatePrismaApplication(application) {
15
15
  .map((file, fi) => file.models.map((model, mi) => {
16
16
  const accessor = `application.files[${fi}].models[${mi}]`;
17
17
  return [
18
- ...validateDuplicatedFields(model, accessor),
18
+ ...validateDuplicatedFields(dict, model, accessor),
19
19
  ...validateDuplicatedIndexes(model, accessor),
20
20
  ...validateIndexes(model, accessor),
21
21
  ...validateReferences(model, accessor, dict),
22
22
  ];
23
23
  }))
24
24
  .flat(2),
25
+ ...(previous ? validateOmissions(application, previous) : []),
25
26
  ];
26
27
  return errors.length === 0
27
28
  ? { success: true, data: application }
28
29
  : { success: false, data: application, errors };
29
30
  }
31
+ /* -----------------------------------------------------------
32
+ OMISSIONS
33
+ ----------------------------------------------------------- */
34
+ function validateOmissions(app, prev) {
35
+ app;
36
+ prev;
37
+ return [];
38
+ }
30
39
  /* -----------------------------------------------------------
31
40
  DUPLICATES
32
41
  ----------------------------------------------------------- */
@@ -91,12 +100,13 @@ function validateDuplicatedModels(app) {
91
100
  });
92
101
  return errors;
93
102
  }
94
- function validateDuplicatedFields(model, accessor) {
103
+ function validateDuplicatedFields(dict, model, accessor) {
104
+ const errors = [];
105
+ // FIND DUPLICATED FIELDS
95
106
  const group = new Map();
96
107
  MapUtil_1.MapUtil.take(group, model.primaryField.name, () => []).push(`${accessor}.primaryField.name`);
97
108
  model.foreignFields.forEach((field, i) => MapUtil_1.MapUtil.take(group, field.name, () => []).push(`${accessor}.foreignFields[${i}].name`));
98
109
  model.plainFields.forEach((field, i) => MapUtil_1.MapUtil.take(group, field.name, () => []).push(`${accessor}.plainFields[${i}].name`));
99
- const errors = [];
100
110
  for (const [field, array] of group)
101
111
  if (array.length !== 1)
102
112
  array.forEach((path, i) => {
@@ -113,9 +123,28 @@ function validateDuplicatedFields(model, accessor) {
113
123
  ].join("\n"),
114
124
  });
115
125
  });
126
+ // FIND TABLE NAMED FIELDS
127
+ model.plainFields.forEach((field, i) => {
128
+ if (dict.has(field.name) === true)
129
+ errors.push({
130
+ path: `${accessor}.plainFields[${i}].name`,
131
+ table: model.name,
132
+ field: field.name,
133
+ message: [
134
+ `There's a same named table in the application.`,
135
+ "",
136
+ "Check whether the field has been designed for denormalization",
137
+ "like pre-calculation. If do so, remove the field.",
138
+ "",
139
+ "Otherwise, change the field name to something else.",
140
+ ].join("\n"),
141
+ });
142
+ });
116
143
  return errors;
117
144
  }
118
145
  function validateDuplicatedIndexes(model, accessor) {
146
+ const errors = [];
147
+ // FIND DUPLICATED INDEXES
119
148
  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
149
  model.uniqueIndexes.forEach((unique, i) => group
121
150
  .take(unique.fieldNames, () => [])
@@ -126,7 +155,6 @@ function validateDuplicatedIndexes(model, accessor) {
126
155
  model.ginIndexes.forEach((gin, i) => group
127
156
  .take([gin.fieldName], () => [])
128
157
  .push(`${accessor}.ginIndexes[${i}].fieldName`));
129
- const errors = [];
130
158
  for (const { first: fieldNames, second: array } of group)
131
159
  if (array.length !== 1)
132
160
  array.forEach((path, i) => {
@@ -135,7 +163,7 @@ function validateDuplicatedIndexes(model, accessor) {
135
163
  table: model.name,
136
164
  field: null,
137
165
  message: [
138
- `Duplicated index found (${fieldNames.join(", ")})`,
166
+ `Duplicated index found (${fieldNames.join(", ")}).`,
139
167
  "",
140
168
  "Accessors of the other duplicated indexes are:",
141
169
  "",
@@ -143,6 +171,71 @@ function validateDuplicatedIndexes(model, accessor) {
143
171
  ].join("\n"),
144
172
  });
145
173
  });
174
+ // SUBSET RELATIONS
175
+ model.uniqueIndexes.forEach((unique, i) => {
176
+ if (unique.fieldNames.length <= 1)
177
+ return;
178
+ unique.fieldNames.forEach((_, j, array) => {
179
+ if (j === array.length - 1)
180
+ return;
181
+ const subset = unique.fieldNames.slice(0, j);
182
+ if (j === 0 &&
183
+ model.foreignFields.some((f) => f.name === subset[0] && f.unique === true))
184
+ errors.push({
185
+ path: `${accessor}.uniqueIndexes[${i}].fieldNames[0]`,
186
+ table: model.name,
187
+ field: null,
188
+ message: [
189
+ `Duplicated unique index found (${subset[0]}).`,
190
+ "",
191
+ "You have defined an unique index that is already included",
192
+ "in the foreign field with unique constraint.",
193
+ "",
194
+ "Remove this unique index to avoid the duplication.",
195
+ ].join("\n"),
196
+ });
197
+ const cIndex = model.uniqueIndexes.findIndex((u) => u.fieldNames.length === subset.length &&
198
+ u.fieldNames.every((name, k) => name === subset[k]));
199
+ if (cIndex !== -1)
200
+ errors.push({
201
+ path: `${accessor}.uniqueIndexes[${i}].fieldNames`,
202
+ table: model.name,
203
+ field: null,
204
+ message: [
205
+ `Subset unique index found (${subset.join(", ")}).`,
206
+ "",
207
+ "You have defined an unique index with multiple fields,",
208
+ "but its subset is already defined as an unique index.",
209
+ "",
210
+ "Consider to change the unique index to a plain index,",
211
+ "or drop the redundant unique index please.",
212
+ ].join("\n"),
213
+ });
214
+ });
215
+ });
216
+ // SUPERSET RELATIONS
217
+ model.plainIndexes.forEach((x, i) => {
218
+ model.plainIndexes.forEach((y, j) => {
219
+ if (i === j)
220
+ return;
221
+ else if (x.fieldNames.length < y.fieldNames.length &&
222
+ x.fieldNames.every((n, z) => y.fieldNames[z] === n))
223
+ errors.push({
224
+ path: `${accessor}.plainIndexes[${i}].fieldNames`,
225
+ table: model.name,
226
+ field: null,
227
+ message: [
228
+ `Superset plain index found (${y.fieldNames.join(", ")}).`,
229
+ "",
230
+ "You have defined a plain index with multiple fields,",
231
+ "but its superset is already defined as another plain index.",
232
+ "",
233
+ "As subset index is vulnerable, drop this plain index please.",
234
+ ].join("\n"),
235
+ });
236
+ });
237
+ });
238
+ // CONSIDER GIN INDEXES
146
239
  if (model.ginIndexes.length !==
147
240
  new Set(model.ginIndexes.map((g) => g.fieldName)).size)
148
241
  errors.push({
@@ -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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"}
@@ -85,7 +85,8 @@ function writeRelations(app, model) {
85
85
  }))))
86
86
  .flat(2);
87
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));
88
+ (f.unique === true ||
89
+ model.plainIndexes.every((p) => p.fieldNames[0] !== f.name)));
89
90
  const contents = [
90
91
  model.foreignFields.map(writeConstraint),
91
92
  hasRelationships.map((r) => {
@@ -128,7 +129,7 @@ function writeConstraint(field) {
128
129
  ].join(" ");
129
130
  }
130
131
  function writeForeignIndex(field) {
131
- return `@@${field.unique ? "unique" : "index"}([${field.name}])`;
132
+ return `@@${field.unique === true ? "unique" : "index"}([${field.name}])`;
132
133
  }
133
134
  function writeUniqueIndex(field) {
134
135
  return `@@unique([${field.fieldNames.join(", ")}])`;
@@ -1 +1 @@
1
- {"version":3,"file":"writePrismaApplication.js","sourceRoot":"","sources":["../../src/prisma/writePrismaApplication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writePrismaApplication.js","sourceRoot":"","sources":["../../src/prisma/writePrismaApplication.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autobe/compiler",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
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.5.1"
28
+ "@autobe/interface": "^0.5.2"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/node": "^22.15.3",
@@ -20,8 +20,9 @@ export class AutoBePrismaCompiler implements IAutoBePrismaCompiler {
20
20
 
21
21
  public async validate(
22
22
  app: AutoBePrisma.IApplication,
23
+ previous?: AutoBePrisma.IApplication | undefined,
23
24
  ): Promise<IAutoBePrismaValidation> {
24
- return validatePrismaApplication(app);
25
+ return validatePrismaApplication(app, previous);
25
26
  }
26
27
 
27
28
  public async write(
@@ -5,6 +5,7 @@ import { MapUtil } from "../utils/MapUtil";
5
5
 
6
6
  export function validatePrismaApplication(
7
7
  application: AutoBePrisma.IApplication,
8
+ previous?: AutoBePrisma.IApplication | undefined,
8
9
  ): IAutoBePrismaValidation {
9
10
  const dict: Map<string, AutoBePrisma.IModel> = new Map(
10
11
  application.files
@@ -20,7 +21,7 @@ export function validatePrismaApplication(
20
21
  file.models.map((model, mi) => {
21
22
  const accessor: string = `application.files[${fi}].models[${mi}]`;
22
23
  return [
23
- ...validateDuplicatedFields(model, accessor),
24
+ ...validateDuplicatedFields(dict, model, accessor),
24
25
  ...validateDuplicatedIndexes(model, accessor),
25
26
  ...validateIndexes(model, accessor),
26
27
  ...validateReferences(model, accessor, dict),
@@ -28,12 +29,25 @@ export function validatePrismaApplication(
28
29
  }),
29
30
  )
30
31
  .flat(2),
32
+ ...(previous ? validateOmissions(application, previous) : []),
31
33
  ];
32
34
  return errors.length === 0
33
35
  ? { success: true, data: application }
34
36
  : { success: false, data: application, errors };
35
37
  }
36
38
 
39
+ /* -----------------------------------------------------------
40
+ OMISSIONS
41
+ ----------------------------------------------------------- */
42
+ function validateOmissions(
43
+ app: AutoBePrisma.IApplication,
44
+ prev: AutoBePrisma.IApplication,
45
+ ): IAutoBePrismaValidation.IError[] {
46
+ app;
47
+ prev;
48
+ return [];
49
+ }
50
+
37
51
  /* -----------------------------------------------------------
38
52
  DUPLICATES
39
53
  ----------------------------------------------------------- */
@@ -120,9 +134,13 @@ function validateDuplicatedModels(
120
134
  }
121
135
 
122
136
  function validateDuplicatedFields(
137
+ dict: Map<string, AutoBePrisma.IModel>,
123
138
  model: AutoBePrisma.IModel,
124
139
  accessor: string,
125
140
  ): IAutoBePrismaValidation.IError[] {
141
+ const errors: IAutoBePrismaValidation.IError[] = [];
142
+
143
+ // FIND DUPLICATED FIELDS
126
144
  const group: Map<string, string[]> = new Map();
127
145
  MapUtil.take(group, model.primaryField.name, () => []).push(
128
146
  `${accessor}.primaryField.name`,
@@ -137,8 +155,6 @@ function validateDuplicatedFields(
137
155
  `${accessor}.plainFields[${i}].name`,
138
156
  ),
139
157
  );
140
-
141
- const errors: IAutoBePrismaValidation.IError[] = [];
142
158
  for (const [field, array] of group)
143
159
  if (array.length !== 1)
144
160
  array.forEach((path, i) => {
@@ -155,6 +171,24 @@ function validateDuplicatedFields(
155
171
  ].join("\n"),
156
172
  });
157
173
  });
174
+
175
+ // FIND TABLE NAMED FIELDS
176
+ model.plainFields.forEach((field, i) => {
177
+ if (dict.has(field.name) === true)
178
+ errors.push({
179
+ path: `${accessor}.plainFields[${i}].name`,
180
+ table: model.name,
181
+ field: field.name,
182
+ message: [
183
+ `There's a same named table in the application.`,
184
+ "",
185
+ "Check whether the field has been designed for denormalization",
186
+ "like pre-calculation. If do so, remove the field.",
187
+ "",
188
+ "Otherwise, change the field name to something else.",
189
+ ].join("\n"),
190
+ });
191
+ });
158
192
  return errors;
159
193
  }
160
194
 
@@ -162,6 +196,9 @@ function validateDuplicatedIndexes(
162
196
  model: AutoBePrisma.IModel,
163
197
  accessor: string,
164
198
  ): IAutoBePrismaValidation.IError[] {
199
+ const errors: IAutoBePrismaValidation.IError[] = [];
200
+
201
+ // FIND DUPLICATED INDEXES
165
202
  const group: HashMap<string[], string[]> = new HashMap(
166
203
  (x) => hash(...x),
167
204
  (x, y) => x.length === y.length && x.every((v, i) => v === y[i]),
@@ -181,8 +218,6 @@ function validateDuplicatedIndexes(
181
218
  .take([gin.fieldName], () => [])
182
219
  .push(`${accessor}.ginIndexes[${i}].fieldName`),
183
220
  );
184
-
185
- const errors: IAutoBePrismaValidation.IError[] = [];
186
221
  for (const { first: fieldNames, second: array } of group)
187
222
  if (array.length !== 1)
188
223
  array.forEach((path, i) => {
@@ -191,7 +226,7 @@ function validateDuplicatedIndexes(
191
226
  table: model.name,
192
227
  field: null,
193
228
  message: [
194
- `Duplicated index found (${fieldNames.join(", ")})`,
229
+ `Duplicated index found (${fieldNames.join(", ")}).`,
195
230
  "",
196
231
  "Accessors of the other duplicated indexes are:",
197
232
  "",
@@ -200,6 +235,79 @@ function validateDuplicatedIndexes(
200
235
  });
201
236
  });
202
237
 
238
+ // SUBSET RELATIONS
239
+ model.uniqueIndexes.forEach((unique, i) => {
240
+ if (unique.fieldNames.length <= 1) return;
241
+ unique.fieldNames.forEach((_, j, array) => {
242
+ if (j === array.length - 1) return;
243
+ const subset: string[] = unique.fieldNames.slice(0, j);
244
+ if (
245
+ j === 0 &&
246
+ model.foreignFields.some(
247
+ (f) => f.name === subset[0] && f.unique === true,
248
+ )
249
+ )
250
+ errors.push({
251
+ path: `${accessor}.uniqueIndexes[${i}].fieldNames[0]`,
252
+ table: model.name,
253
+ field: null,
254
+ message: [
255
+ `Duplicated unique index found (${subset[0]}).`,
256
+ "",
257
+ "You have defined an unique index that is already included",
258
+ "in the foreign field with unique constraint.",
259
+ "",
260
+ "Remove this unique index to avoid the duplication.",
261
+ ].join("\n"),
262
+ });
263
+ const cIndex: number = model.uniqueIndexes.findIndex(
264
+ (u) =>
265
+ u.fieldNames.length === subset.length &&
266
+ u.fieldNames.every((name, k) => name === subset[k]),
267
+ );
268
+ if (cIndex !== -1)
269
+ errors.push({
270
+ path: `${accessor}.uniqueIndexes[${i}].fieldNames`,
271
+ table: model.name,
272
+ field: null,
273
+ message: [
274
+ `Subset unique index found (${subset.join(", ")}).`,
275
+ "",
276
+ "You have defined an unique index with multiple fields,",
277
+ "but its subset is already defined as an unique index.",
278
+ "",
279
+ "Consider to change the unique index to a plain index,",
280
+ "or drop the redundant unique index please.",
281
+ ].join("\n"),
282
+ });
283
+ });
284
+ });
285
+
286
+ // SUPERSET RELATIONS
287
+ model.plainIndexes.forEach((x, i) => {
288
+ model.plainIndexes.forEach((y, j) => {
289
+ if (i === j) return;
290
+ else if (
291
+ x.fieldNames.length < y.fieldNames.length &&
292
+ x.fieldNames.every((n, z) => y.fieldNames[z] === n)
293
+ )
294
+ errors.push({
295
+ path: `${accessor}.plainIndexes[${i}].fieldNames`,
296
+ table: model.name,
297
+ field: null,
298
+ message: [
299
+ `Superset plain index found (${y.fieldNames.join(", ")}).`,
300
+ "",
301
+ "You have defined a plain index with multiple fields,",
302
+ "but its superset is already defined as another plain index.",
303
+ "",
304
+ "As subset index is vulnerable, drop this plain index please.",
305
+ ].join("\n"),
306
+ });
307
+ });
308
+ });
309
+
310
+ // CONSIDER GIN INDEXES
203
311
  if (
204
312
  model.ginIndexes.length !==
205
313
  new Set(model.ginIndexes.map((g) => g.fieldName)).size
@@ -129,7 +129,8 @@ function writeRelations(
129
129
  model.foreignFields.filter(
130
130
  (f) =>
131
131
  model.uniqueIndexes.every((u) => u.fieldNames[0] !== f.name) &&
132
- model.plainIndexes.every((p) => p.fieldNames[0] !== f.name),
132
+ (f.unique === true ||
133
+ model.plainIndexes.every((p) => p.fieldNames[0] !== f.name)),
133
134
  );
134
135
  const contents: string[][] = [
135
136
  model.foreignFields.map(writeConstraint),
@@ -173,7 +174,7 @@ function writeConstraint(field: AutoBePrisma.IForeignField): string {
173
174
  }
174
175
 
175
176
  function writeForeignIndex(field: AutoBePrisma.IForeignField): string {
176
- return `@@${field.unique ? "unique" : "index"}([${field.name}])`;
177
+ return `@@${field.unique === true ? "unique" : "index"}([${field.name}])`;
177
178
  }
178
179
 
179
180
  function writeUniqueIndex(field: AutoBePrisma.IUniqueIndex): string {