typesql-cli 0.6.1 → 0.6.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.
Files changed (46) hide show
  1. package/code-generator.d.ts +3 -0
  2. package/code-generator.d.ts.map +1 -1
  3. package/code-generator.js +86 -10
  4. package/code-generator.js.map +1 -1
  5. package/describe-nested-query.d.ts +29 -0
  6. package/describe-nested-query.d.ts.map +1 -0
  7. package/describe-nested-query.js +154 -0
  8. package/describe-nested-query.js.map +1 -0
  9. package/describe-query.d.ts +1 -0
  10. package/describe-query.d.ts.map +1 -1
  11. package/describe-query.js +18 -18
  12. package/describe-query.js.map +1 -1
  13. package/mysql-mapping.d.ts +1 -1
  14. package/mysql-mapping.d.ts.map +1 -1
  15. package/mysql-mapping.js +1 -1
  16. package/mysql-mapping.js.map +1 -1
  17. package/mysql-query-analyzer/collect-constraints.d.ts +2 -1
  18. package/mysql-query-analyzer/collect-constraints.d.ts.map +1 -1
  19. package/mysql-query-analyzer/collect-constraints.js +18 -5
  20. package/mysql-query-analyzer/collect-constraints.js.map +1 -1
  21. package/mysql-query-analyzer/infer-column-nullability.d.ts.map +1 -1
  22. package/mysql-query-analyzer/infer-column-nullability.js +6 -1
  23. package/mysql-query-analyzer/infer-column-nullability.js.map +1 -1
  24. package/mysql-query-analyzer/parse.d.ts.map +1 -1
  25. package/mysql-query-analyzer/parse.js +13 -3
  26. package/mysql-query-analyzer/parse.js.map +1 -1
  27. package/mysql-query-analyzer/select-columns.d.ts +1 -0
  28. package/mysql-query-analyzer/select-columns.d.ts.map +1 -1
  29. package/mysql-query-analyzer/select-columns.js +9 -3
  30. package/mysql-query-analyzer/select-columns.js.map +1 -1
  31. package/mysql-query-analyzer/traverse.d.ts +0 -1
  32. package/mysql-query-analyzer/traverse.d.ts.map +1 -1
  33. package/mysql-query-analyzer/traverse.js +31 -23
  34. package/mysql-query-analyzer/traverse.js.map +1 -1
  35. package/mysql-query-analyzer/types.d.ts +6 -1
  36. package/mysql-query-analyzer/types.d.ts.map +1 -1
  37. package/mysql-query-analyzer/unify.d.ts.map +1 -1
  38. package/mysql-query-analyzer/unify.js +2 -3
  39. package/mysql-query-analyzer/unify.js.map +1 -1
  40. package/package.json +2 -2
  41. package/ts-nested-descriptor.d.ts +26 -0
  42. package/ts-nested-descriptor.d.ts.map +1 -0
  43. package/ts-nested-descriptor.js +73 -0
  44. package/ts-nested-descriptor.js.map +1 -0
  45. package/types.d.ts +11 -7
  46. package/types.d.ts.map +1 -1
@@ -1,5 +1,6 @@
1
1
  import { SchemaDef, CamelCaseName, TsFieldDescriptor, ParameterDef } from "./types";
2
2
  import { DbClient } from "./queryExectutor";
3
+ import { NestedTsDescriptor } from "./ts-nested-descriptor";
3
4
  export declare function generateTsCode(tsDescriptor: TsDescriptor, fileName: string, target: 'node' | 'deno'): string;
4
5
  export declare function generateTsDescriptor(queryInfo: SchemaDef): TsDescriptor;
5
6
  export declare function removeDuplicatedParameters(parameters: ParameterDef[]): ParameterDef[];
@@ -9,6 +10,7 @@ export declare function replaceOrderByParam(sql: string): string;
9
10
  export declare function writeFile(filePath: string, tsContent: string): void;
10
11
  export declare function convertToCamelCaseName(name: string): CamelCaseName;
11
12
  export declare function generateTsFile(client: DbClient, sqlFile: string, target: 'node' | 'deno'): Promise<void>;
13
+ export declare function generateTsFileFromContent(client: DbClient, filePath: string, queryName: string, sqlContent: string, target: 'node' | 'deno'): Promise<string>;
12
14
  export type TsDescriptor = {
13
15
  sql: string;
14
16
  queryType: 'Select' | 'Insert' | 'Update' | 'Delete';
@@ -18,5 +20,6 @@ export type TsDescriptor = {
18
20
  parameters: TsFieldDescriptor[];
19
21
  data?: TsFieldDescriptor[];
20
22
  orderByColumns?: string[];
23
+ nestedDescriptor?: NestedTsDescriptor;
21
24
  };
22
25
  //# sourceMappingURL=code-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../src/code-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAa,MAAM,SAAS,CAAC;AAG/F,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQ5C,wBAAgB,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAsF5G;AAsBD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CA8CvE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAerF;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAelE;AAOD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,UAMtD;AAkBD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,UAI9C;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAE5D;AAOD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAGlE;AAGD,wBAAsB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,iBAmB9F;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAA"}
1
+ {"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../src/code-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGpF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAO5C,OAAO,EAAE,kBAAkB,EAA4B,MAAM,wBAAwB,CAAC;AAEtF,wBAAgB,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAoJ5G;AA0BD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAmDvE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAerF;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAelE;AAOD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,UAMtD;AAkBD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,UAI9C;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAE5D;AAOD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAGlE;AAGD,wBAAsB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,iBAa9F;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,mBAWjJ;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAA"}
package/code-generator.js CHANGED
@@ -35,7 +35,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.generateTsFile = exports.convertToCamelCaseName = exports.writeFile = exports.replaceOrderByParam = exports.escapeInvalidTsField = exports.renameInvalidNames = exports.removeDuplicatedParameters = exports.generateTsDescriptor = exports.generateTsCode = void 0;
38
+ exports.generateTsFileFromContent = exports.generateTsFile = exports.convertToCamelCaseName = exports.writeFile = exports.replaceOrderByParam = exports.escapeInvalidTsField = exports.renameInvalidNames = exports.removeDuplicatedParameters = exports.generateTsDescriptor = exports.generateTsCode = void 0;
39
39
  const fs_1 = __importDefault(require("fs"));
40
40
  const path_1 = __importStar(require("path"));
41
41
  const camelcase_1 = __importDefault(require("camelcase"));
@@ -44,6 +44,7 @@ const Option_1 = require("fp-ts/lib/Option");
44
44
  const mysql_mapping_1 = require("./mysql-mapping");
45
45
  const describe_query_1 = require("./describe-query");
46
46
  const code_block_writer_1 = __importDefault(require("code-block-writer"));
47
+ const ts_nested_descriptor_1 = require("./ts-nested-descriptor");
47
48
  function generateTsCode(tsDescriptor, fileName, target) {
48
49
  var _a, _b;
49
50
  const writer = new code_block_writer_1.default();
@@ -59,6 +60,9 @@ function generateTsCode(tsDescriptor, fileName, target) {
59
60
  writer.writeLine(`import { Client } from "https://deno.land/x/mysql/mod.ts";`);
60
61
  }
61
62
  else {
63
+ if (tsDescriptor.nestedDescriptor) {
64
+ writer.writeLine(`import groupBy from 'lodash.groupby';`);
65
+ }
62
66
  writer.writeLine(`import type { Connection } from 'mysql2/promise';`);
63
67
  }
64
68
  writer.blankLine();
@@ -116,9 +120,69 @@ function generateTsCode(tsDescriptor, fileName, target) {
116
120
  writer.writeLine(`return orderBy.map( order => \`\\\`\${order.column}\\\` \${order.direction == 'desc' ? 'desc' : 'asc' }\`).join(', ');`);
117
121
  });
118
122
  }
123
+ if (tsDescriptor.nestedDescriptor) {
124
+ const relations = tsDescriptor.nestedDescriptor.relations;
125
+ relations.forEach((relation) => {
126
+ const relationType = generateRelationType(capitalizedName, relation.name);
127
+ writer.blankLine();
128
+ writer.write(`export type ${relationType} = `).block(() => {
129
+ relation.fields.forEach(field => {
130
+ if (field.type == 'field') {
131
+ writer.writeLine(`${field.name}: ${field.tsType};`);
132
+ }
133
+ if (field.type == 'relation') {
134
+ const nestedRelationType = generateRelationType(capitalizedName, field.tsType);
135
+ writer.writeLine(`${field.name}: ${nestedRelationType};`);
136
+ }
137
+ });
138
+ });
139
+ });
140
+ relations.forEach((relation, index) => {
141
+ const relationType = generateRelationType(capitalizedName, relation.name);
142
+ if (index == 0) { //first
143
+ writer.blankLine();
144
+ writer.write(`export async function ${camelCaseName}Nested(${functionArguments}): Promise<${relationType}[]>`).block(() => {
145
+ const params = tsDescriptor.parameters.length > 0 ? ', params' : '';
146
+ writer.writeLine(`const selectResult = await ${camelCaseName}(connection${params});`);
147
+ writer.write('if (selectResult.length == 0)').block(() => {
148
+ writer.writeLine('return [];');
149
+ });
150
+ writer.writeLine(`return collect${relationType}(selectResult);`);
151
+ });
152
+ }
153
+ const collectFunctionName = `collect${relationType}`;
154
+ const mapFunctionName = `mapTo${relationType}`;
155
+ writer.blankLine();
156
+ writer.write(`function ${collectFunctionName}(selectResult: ${resultTypeName}[]): ${relationType}[]`).block(() => {
157
+ writer.writeLine(`const grouped = groupBy(selectResult.filter(r => r.${relation.fields[0].name} != null), r => r.${relation.fields[0].name});`);
158
+ writer.writeLine(`return Object.values(grouped).map(r => ${mapFunctionName}(r))`);
159
+ });
160
+ writer.blankLine();
161
+ writer.write(`function ${mapFunctionName}(selectResult: ${resultTypeName}[]): ${relationType}`).block(() => {
162
+ writer.writeLine(`const firstRow = selectResult[0];`);
163
+ writer.write(`const result: ${relationType} = `).block(() => {
164
+ relation.fields.forEach((field, index) => {
165
+ const separator = relation.fields.length > 1 && index != relation.fields.length - 1 ? ',' : '';
166
+ if (field.type == 'field') {
167
+ writer.writeLine(`${field.name}: firstRow.${field.name}!` + separator);
168
+ }
169
+ if (field.type == 'relation') {
170
+ const nestedRelationType = generateRelationType(capitalizedName, field.name);
171
+ const cardinality = field.list ? '' : '[0]';
172
+ writer.writeLine(`${field.name}: collect${nestedRelationType}(selectResult)${cardinality}` + separator);
173
+ }
174
+ });
175
+ });
176
+ writer.writeLine('return result;');
177
+ });
178
+ });
179
+ }
119
180
  return writer.toString();
120
181
  }
121
182
  exports.generateTsCode = generateTsCode;
183
+ function generateRelationType(capitalizedName, relationName) {
184
+ return capitalizedName + 'Nested' + relationName.toUpperCase();
185
+ }
122
186
  function writeTypeBlock(writer, fields, typeName, extraField) {
123
187
  const writeBlockCond = fields.length > 0 || extraField != null;
124
188
  if (writeBlockCond) {
@@ -138,11 +202,11 @@ function tsFieldToStr(tsField) {
138
202
  }
139
203
  function generateTsDescriptor(queryInfo) {
140
204
  var _a;
141
- const escapedColumnsNames = renameInvalidNames(queryInfo.columns.map(col => col.name));
205
+ const escapedColumnsNames = renameInvalidNames(queryInfo.columns.map(col => col.columnName));
142
206
  const columns = queryInfo.columns.map((col, columnIndex) => {
143
207
  const tsDesc = {
144
208
  name: escapedColumnsNames[columnIndex],
145
- tsType: mapColumnType(col.dbtype),
209
+ tsType: mapColumnType(col.type),
146
210
  notNull: col.notNull ? col.notNull : false
147
211
  };
148
212
  return tsDesc;
@@ -168,7 +232,7 @@ function generateTsDescriptor(queryInfo) {
168
232
  };
169
233
  return tsDesc;
170
234
  });
171
- return {
235
+ const result = {
172
236
  sql: queryInfo.sql,
173
237
  queryType: queryInfo.queryType,
174
238
  multipleRowsResult: queryInfo.multipleRowsResult,
@@ -176,8 +240,13 @@ function generateTsDescriptor(queryInfo) {
176
240
  orderByColumns: queryInfo.orderByColumns,
177
241
  parameterNames,
178
242
  parameters,
179
- data
243
+ data,
180
244
  };
245
+ if (queryInfo.nestedResultInfo) {
246
+ const nestedDescriptor = (0, ts_nested_descriptor_1.createNestedTsDescriptor)(queryInfo.columns, queryInfo.nestedResultInfo);
247
+ result.nestedDescriptor = nestedDescriptor;
248
+ }
249
+ return result;
181
250
  }
182
251
  exports.generateTsDescriptor = generateTsDescriptor;
183
252
  function removeDuplicatedParameters(parameters) {
@@ -188,7 +257,7 @@ function removeDuplicatedParameters(parameters) {
188
257
  if (param.notNull == false) {
189
258
  columnsCount.set(param.name, param);
190
259
  }
191
- return param;
260
+ // return param;
192
261
  }
193
262
  else {
194
263
  columnsCount.set(param.name, param);
@@ -261,20 +330,27 @@ exports.convertToCamelCaseName = convertToCamelCaseName;
261
330
  //TODO - pass dbSchema instead of connection
262
331
  function generateTsFile(client, sqlFile, target) {
263
332
  return __awaiter(this, void 0, void 0, function* () {
333
+ const sqlContent = fs_1.default.readFileSync(sqlFile, 'utf8');
264
334
  const fileName = (0, path_1.parse)(sqlFile).name;
265
335
  const dirPath = (0, path_1.parse)(sqlFile).dir;
266
336
  const queryName = convertToCamelCaseName(fileName);
337
+ const tsContent = yield generateTsFileFromContent(client, sqlFile, queryName, sqlContent, target);
267
338
  const tsFilePath = path_1.default.resolve(dirPath, fileName) + ".ts";
268
- const sqlContent = fs_1.default.readFileSync(sqlFile, 'utf8');
339
+ writeFile(tsFilePath, tsContent);
340
+ });
341
+ }
342
+ exports.generateTsFile = generateTsFile;
343
+ function generateTsFileFromContent(client, filePath, queryName, sqlContent, target) {
344
+ return __awaiter(this, void 0, void 0, function* () {
269
345
  const queryInfo = yield (0, describe_query_1.parseSql)(client, sqlContent);
270
346
  if ((0, Either_1.isLeft)(queryInfo)) {
271
347
  console.error('ERROR: ', queryInfo.left.description);
272
- console.error('at ', sqlFile);
348
+ console.error('at ', filePath);
273
349
  }
274
350
  const tsDescriptor = (0, Either_1.isLeft)(queryInfo) ? Option_1.none : (0, Option_1.some)(generateTsDescriptor(queryInfo.right));
275
351
  const tsContent = generateTsContent(tsDescriptor, queryName, target);
276
- writeFile(tsFilePath, tsContent);
352
+ return tsContent;
277
353
  });
278
354
  }
279
- exports.generateTsFile = generateTsFile;
355
+ exports.generateTsFileFromContent = generateTsFileFromContent;
280
356
  //# sourceMappingURL=code-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-generator.js","sourceRoot":"","sources":["../../src/code-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-generator.js","sourceRoot":"","sources":["../../src/code-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { QueryContext } from "ts-mysql-parser";
2
+ import { ColumnInfo, ColumnSchema } from "./mysql-query-analyzer/types";
3
+ export type NestedResultInfo = {
4
+ relations: RelationInfo[];
5
+ };
6
+ export type RelationInfo = {
7
+ name: string;
8
+ tableName: string;
9
+ tableAlias: string | '';
10
+ columns: ModelColumn[];
11
+ };
12
+ export type Cardinality = 'one' | 'many' | '';
13
+ export type ModelColumn = Field | RelationField;
14
+ export type Field = {
15
+ type: 'field';
16
+ name: string;
17
+ };
18
+ export type RelationField = {
19
+ type: 'relation';
20
+ name: string;
21
+ cardinality: Cardinality;
22
+ };
23
+ export type TableName = {
24
+ name: string;
25
+ alias: string | '';
26
+ };
27
+ export declare function describeNestedQuery(sql: string, dbSchema: ColumnSchema[]): NestedResultInfo;
28
+ export declare function generateNestedInfo(queryContext: QueryContext, dbSchema: ColumnSchema[], columns: ColumnInfo[]): NestedResultInfo;
29
+ //# sourceMappingURL=describe-nested-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-nested-query.d.ts","sourceRoot":"","sources":["../../src/describe-nested-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,YAAY,EAAyE,MAAM,iBAAiB,CAAC;AAGvJ,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAExE,MAAM,MAAM,gBAAgB,GAAG;IAC3B,SAAS,EAAE,YAAY,EAAE,CAAC;CAC7B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,EAAE,CAAC;IACxB,OAAO,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,aAAa,CAAC;AAEhD,MAAM,MAAM,KAAK,GAAG;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;CAC5B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC;CACtB,CAAA;AAGD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAK3F;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,gBAAgB,CA4BhI"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateNestedInfo = exports.describeNestedQuery = void 0;
4
+ const ts_mysql_parser_1 = require("ts-mysql-parser");
5
+ const parse_1 = require("./mysql-query-analyzer/parse");
6
+ const select_columns_1 = require("./mysql-query-analyzer/select-columns");
7
+ //utility for tests
8
+ function describeNestedQuery(sql, dbSchema) {
9
+ const queryContext = (0, parse_1.parse)(sql);
10
+ const queryInfo = (0, parse_1.extractQueryInfo)(sql, dbSchema);
11
+ const columns = queryInfo.kind == 'Select' ? queryInfo.columns : [];
12
+ return generateNestedInfo(queryContext, dbSchema, columns);
13
+ }
14
+ exports.describeNestedQuery = describeNestedQuery;
15
+ function generateNestedInfo(queryContext, dbSchema, columns) {
16
+ var _a, _b;
17
+ const selectStatement = (_a = queryContext.simpleStatement()) === null || _a === void 0 ? void 0 : _a.selectStatement();
18
+ if (selectStatement) {
19
+ const queryExpression = selectStatement.queryExpression();
20
+ if (queryExpression) {
21
+ const queryExpressionBody = queryExpression.queryExpressionBody();
22
+ if (queryExpressionBody) {
23
+ const querySpec = queryExpressionBody.querySpecification();
24
+ if (querySpec) {
25
+ const fromClause = querySpec.fromClause();
26
+ if (fromClause) {
27
+ const tableReferences = ((_b = fromClause.tableReferenceList()) === null || _b === void 0 ? void 0 : _b.tableReference()) || [];
28
+ const modelColumns = tableReferences.map(tableRef => {
29
+ const nestedResultInfo = {
30
+ relations: getResult(tableRef, dbSchema, columns)
31
+ };
32
+ return nestedResultInfo;
33
+ });
34
+ return modelColumns[0];
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+ throw Error('generateNestedInfo');
41
+ }
42
+ exports.generateNestedInfo = generateNestedInfo;
43
+ function getResult(tableRef, dbSchema, columns) {
44
+ const relations = getRelations(tableRef, dbSchema, columns);
45
+ return relations;
46
+ }
47
+ function getRelations(tableRef, dbSchema, columns) {
48
+ const relations = [];
49
+ const tableFactor = tableRef.tableFactor();
50
+ const parentList = [];
51
+ if (tableFactor != null) { //root
52
+ const tableName = getTableInfoFromTableFactor(tableFactor);
53
+ parentList.push(tableName);
54
+ }
55
+ const joinedTableList = tableRef.joinedTable();
56
+ joinedTableList.forEach(joined => {
57
+ const onClause = joined.expr();
58
+ const tableName = getTableInfoFromTableJoinedTable(joined);
59
+ const parentRelations = onClause ? getParentRelations(onClause, tableName, parentList) : [];
60
+ const cardinality = onClause ? verifyCardinality(onClause, dbSchema, tableName.name) : '';
61
+ parentList.push(tableName);
62
+ parentRelations.forEach(parent => {
63
+ relations.push({
64
+ parent: parent,
65
+ child: tableName,
66
+ cardinality
67
+ });
68
+ });
69
+ });
70
+ const result = parentList.map(r => {
71
+ const relationFields = relations.filter(r2 => r2.parent.name == r.name || r2.parent.alias == r.alias).map(f => {
72
+ const field = {
73
+ type: 'relation',
74
+ name: f.child.alias,
75
+ cardinality: f.cardinality,
76
+ };
77
+ return field;
78
+ });
79
+ const fields = columns.filter(field => field.table == r.name || field.table == r.alias).map(c => {
80
+ const f = {
81
+ type: 'field',
82
+ name: c.columnName
83
+ };
84
+ return f;
85
+ });
86
+ const relationInfo = {
87
+ name: r.alias,
88
+ tableName: r.name,
89
+ tableAlias: r.alias,
90
+ columns: fields.concat(relationFields)
91
+ };
92
+ return relationInfo;
93
+ });
94
+ return result;
95
+ }
96
+ function getParentRelations(onExpr, currentRelation, parentList) {
97
+ const result = [];
98
+ const tokens = getOnClauseTokens(onExpr);
99
+ for (const token of tokens) {
100
+ if (token instanceof ts_mysql_parser_1.SimpleExprColumnRefContext) {
101
+ const fieldName = (0, select_columns_1.splitName)(token.text);
102
+ if (fieldName.prefix != currentRelation.alias && fieldName.prefix != currentRelation.name) {
103
+ const ref = parentList.find(p => p.name == fieldName.prefix || p.alias == fieldName.prefix);
104
+ result.push(ref);
105
+ }
106
+ }
107
+ }
108
+ return result;
109
+ }
110
+ function getTableInfoFromTableJoinedTable(joinedTable) {
111
+ const onClause = joinedTable.expr();
112
+ const tableRef = joinedTable.tableReference();
113
+ if (tableRef) {
114
+ const tableFactor = tableRef.tableFactor();
115
+ if (tableFactor) {
116
+ const relationInfo = getTableInfoFromTableFactor(tableFactor);
117
+ return relationInfo;
118
+ }
119
+ }
120
+ throw Error('getTableInfoFromTableJoinedTable');
121
+ }
122
+ function getTableInfoFromTableFactor(tableFactor) {
123
+ var _a;
124
+ const singleTable = tableFactor.singleTable();
125
+ if (singleTable) {
126
+ const table = singleTable.tableRef().text;
127
+ const tableAlias = ((_a = singleTable === null || singleTable === void 0 ? void 0 : singleTable.tableAlias()) === null || _a === void 0 ? void 0 : _a.identifier().text) || '';
128
+ const tableName = (0, select_columns_1.splitName)(table);
129
+ const model = {
130
+ name: tableName.name,
131
+ alias: tableAlias
132
+ };
133
+ return model;
134
+ }
135
+ throw Error('createModelFromTableFactor');
136
+ }
137
+ function verifyCardinality(expr, dbSchema, tableName) {
138
+ const tokens = getOnClauseTokens(expr);
139
+ for (const token of tokens) {
140
+ if (token instanceof ts_mysql_parser_1.SimpleExprColumnRefContext) {
141
+ const fieldName = (0, select_columns_1.splitName)(token.text);
142
+ const column = (0, select_columns_1.findColumnSchema)(tableName, fieldName.name, dbSchema);
143
+ if (column != null && column.columnKey != 'PRI' && column.columnKey != 'UNI') {
144
+ return 'many';
145
+ }
146
+ }
147
+ }
148
+ return 'one';
149
+ }
150
+ function getOnClauseTokens(expr) {
151
+ const tokens = (0, select_columns_1.getSimpleExpressions)(expr);
152
+ return tokens;
153
+ }
154
+ //# sourceMappingURL=describe-nested-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-nested-query.js","sourceRoot":"","sources":["../../src/describe-nested-query.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,5 @@ export declare function describeSql(dbSchema: ColumnSchema[], sql: string): Sche
7
7
  export declare function verifyNotInferred(type: InferType): MySqlType | 'any';
8
8
  export declare function parseSql(client: DbClient, sql: string): Promise<Either<TypeSqlError, SchemaDef>>;
9
9
  export declare function preprocessSql(sql: string): PreprocessedSql;
10
+ export declare function generateNestedQueryResult(sql: string): boolean;
10
11
  //# sourceMappingURL=describe-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"describe-query.d.ts","sourceRoot":"","sources":["../../src/describe-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAgB,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE5F,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAmG5E;AAYD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,KAAK,CAIpE;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAuBtG;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,mBASxC"}
1
+ {"version":3,"file":"describe-query.d.ts","sourceRoot":"","sources":["../../src/describe-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEjF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CA8F5E;AAYD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,KAAK,CAIpE;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAuBtG;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,mBASxC;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,WAGpD"}
package/describe-query.js CHANGED
@@ -9,21 +9,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.preprocessSql = exports.parseSql = exports.verifyNotInferred = exports.describeSql = void 0;
12
+ exports.generateNestedQueryResult = exports.preprocessSql = exports.parseSql = exports.verifyNotInferred = exports.describeSql = void 0;
13
13
  const parse_1 = require("./mysql-query-analyzer/parse");
14
14
  const Either_1 = require("fp-ts/lib/Either");
15
15
  function describeSql(dbSchema, sql) {
16
16
  const { sql: processedSql, namedParameters } = preprocessSql(sql);
17
17
  const queryInfo = (0, parse_1.extractQueryInfo)(sql, dbSchema);
18
18
  if (queryInfo.kind == 'Select') {
19
- const columnDef = queryInfo.columns.map(colInfo => {
20
- const colDef = {
21
- name: colInfo.columnName,
22
- dbtype: colInfo.type,
23
- notNull: colInfo.notNull
24
- };
25
- return colDef;
26
- });
27
19
  const parametersDef = queryInfo.parameters.map((paramInfo, paramIndex) => {
28
20
  const paramDef = {
29
21
  name: namedParameters && namedParameters[paramIndex] ? namedParameters[paramIndex] : 'param' + (paramIndex + 1),
@@ -36,24 +28,27 @@ function describeSql(dbSchema, sql) {
36
28
  sql: processedSql,
37
29
  queryType: 'Select',
38
30
  multipleRowsResult: queryInfo.multipleRowsResult,
39
- columns: columnDef,
31
+ columns: queryInfo.columns,
40
32
  parameters: parametersDef,
41
33
  };
42
34
  if (queryInfo.orderByColumns && queryInfo.orderByColumns.length > 0) {
43
35
  schemaDef.orderByColumns = queryInfo.orderByColumns;
44
36
  }
37
+ if (queryInfo.nestedResultInfo) {
38
+ schemaDef.nestedResultInfo = queryInfo.nestedResultInfo;
39
+ }
45
40
  return schemaDef;
46
41
  }
47
42
  if (queryInfo.kind == 'Insert') {
48
43
  const resultColumns = [
49
44
  {
50
- name: 'affectedRows',
51
- dbtype: 'int',
45
+ columnName: 'affectedRows',
46
+ type: 'int',
52
47
  notNull: true
53
48
  },
54
49
  {
55
- name: 'insertId',
56
- dbtype: 'int',
50
+ columnName: 'insertId',
51
+ type: 'int',
57
52
  notNull: true
58
53
  }
59
54
  ];
@@ -71,8 +66,8 @@ function describeSql(dbSchema, sql) {
71
66
  if (queryInfo.kind == 'Update') {
72
67
  const resultColumns = [
73
68
  {
74
- name: 'affectedRows',
75
- dbtype: 'int',
69
+ columnName: 'affectedRows',
70
+ type: 'int',
76
71
  notNull: true
77
72
  }
78
73
  ];
@@ -89,8 +84,8 @@ function describeSql(dbSchema, sql) {
89
84
  if (queryInfo.kind == 'Delete') {
90
85
  const resultColumns = [
91
86
  {
92
- name: 'affectedRows',
93
- dbtype: 'int',
87
+ columnName: 'affectedRows',
88
+ type: 'int',
94
89
  notNull: true
95
90
  }
96
91
  ];
@@ -160,4 +155,9 @@ function preprocessSql(sql) {
160
155
  return processedSql;
161
156
  }
162
157
  exports.preprocessSql = preprocessSql;
158
+ function generateNestedQueryResult(sql) {
159
+ const regex = /-- @nested/g;
160
+ return sql.match(regex) != null;
161
+ }
162
+ exports.generateNestedQueryResult = generateNestedQueryResult;
163
163
  //# sourceMappingURL=describe-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"describe-query.js","sourceRoot":"","sources":["../../src/describe-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"describe-query.js","sourceRoot":"","sources":["../../src/describe-query.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export declare enum FlagEnum {
8
8
  export type InferType = MySqlType | '?' | 'number' | 'any';
9
9
  export type MySqlType = 'decimal' | 'decimal[]' | 'tinyint' | 'tinyint[]' | 'smallint' | 'smallint[]' | 'int' | 'int[]' | 'float' | 'float[]' | 'double' | 'double[]' | 'null' | 'timestamp' | 'bigint' | 'bigint[]' | 'mediumint' | 'mediumint[]' | 'date' | 'time' | 'datetime' | 'year' | 'year[]' | 'newdate' | 'varchar' | 'varchar[]' | 'bit' | 'bit[]' | 'timestamp2' | 'datetime2' | 'time2' | 'json' | `enum(${string})` | 'set' | 'tinyblob' | 'mediumblob' | 'longblob' | 'blob' | 'tinytext' | 'mediumtext' | 'longtext' | 'text' | 'varbinary' | 'binary' | 'char' | 'char[]' | 'geometry';
10
10
  export type TsType = 'string' | 'string[]' | 'number' | 'number[]' | 'boolean' | 'boolean[]' | 'Date' | 'Date[]' | 'Object' | 'Object[]' | 'Buffer' | 'any' | 'null';
11
- export declare function converToTsType(mySqlType: MySqlType): TsType | string;
11
+ export declare function converToTsType(mySqlType: MySqlType | 'any'): TsType;
12
12
  export declare function checkFlag(flags: number, flag: FlagEnum): boolean;
13
13
  export declare function convertTypeCodeToMysqlType(typeCode: number, flags: FlagEnum, columnLength: number): MySqlType | string;
14
14
  type MySqlTypeHash = {
@@ -1 +1 @@
1
- {"version":3,"file":"mysql-mapping.d.ts","sourceRoot":"","sources":["../../src/mysql-mapping.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAChB,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,WAAW,MAAM;IACjB,SAAS,MAAM;IACf,QAAQ,OAAO;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC;AAG3D,MAAM,MAAM,SAAS,GACf,SAAS,GAAG,WAAW,GACvB,SAAS,GAAG,WAAW,GACvB,UAAU,GAAG,YAAY,GACzB,KAAK,GAAG,OAAO,GACf,OAAO,GAAG,SAAS,GACnB,QAAQ,GAAG,UAAU,GACrB,MAAM,GACN,WAAW,GACX,QAAQ,GAAG,UAAU,GACrB,WAAW,GAAG,aAAa,GAC3B,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GAAG,QAAQ,GACjB,SAAS,GACT,SAAS,GAAG,WAAW,GACvB,KAAK,GAAG,OAAO,GACf,YAAY,GACZ,WAAW,GACX,OAAO,GACP,MAAM,GACN,QAAQ,MAAM,GAAG,GACjB,KAAK,GACL,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,WAAW,GACX,QAAQ,GACR,MAAM,GAAG,QAAQ,GACjB,UAAU,CAAA;AAEhB,MAAM,MAAM,MAAM,GACZ,QAAQ,GAAG,UAAU,GACrB,QAAQ,GAAG,UAAU,GACrB,SAAS,GAAG,WAAW,GACvB,MAAM,GAAG,QAAQ,GACjB,QAAQ,GAAG,UAAU,GACrB,QAAQ,GACR,KAAK,GACL,MAAM,CAAA;AAGZ,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAuEpE;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,WAEtD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CA6BtH;AAID,KAAK,aAAa,GAAG;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,aAgC1B,CAAA"}
1
+ {"version":3,"file":"mysql-mapping.d.ts","sourceRoot":"","sources":["../../src/mysql-mapping.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAChB,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,WAAW,MAAM;IACjB,SAAS,MAAM;IACf,QAAQ,OAAO;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC;AAG3D,MAAM,MAAM,SAAS,GACf,SAAS,GAAG,WAAW,GACvB,SAAS,GAAG,WAAW,GACvB,UAAU,GAAG,YAAY,GACzB,KAAK,GAAG,OAAO,GACf,OAAO,GAAG,SAAS,GACnB,QAAQ,GAAG,UAAU,GACrB,MAAM,GACN,WAAW,GACX,QAAQ,GAAG,UAAU,GACrB,WAAW,GAAG,aAAa,GAC3B,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GAAG,QAAQ,GACjB,SAAS,GACT,SAAS,GAAG,WAAW,GACvB,KAAK,GAAG,OAAO,GACf,YAAY,GACZ,WAAW,GACX,OAAO,GACP,MAAM,GACN,QAAQ,MAAM,GAAG,GACjB,KAAK,GACL,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,UAAU,GACV,YAAY,GACZ,UAAU,GACV,MAAM,GACN,WAAW,GACX,QAAQ,GACR,MAAM,GAAG,QAAQ,GACjB,UAAU,CAAA;AAEhB,MAAM,MAAM,MAAM,GACZ,QAAQ,GAAG,UAAU,GACrB,QAAQ,GAAG,UAAU,GACrB,SAAS,GAAG,WAAW,GACvB,MAAM,GAAG,QAAQ,GACjB,QAAQ,GAAG,UAAU,GACrB,QAAQ,GACR,KAAK,GACL,MAAM,CAAA;AAGZ,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,CAuEnE;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,WAEtD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CA6BtH;AAID,KAAK,aAAa,GAAG;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,aAgC1B,CAAA"}
package/mysql-mapping.js CHANGED
@@ -73,7 +73,7 @@ function converToTsType(mySqlType) {
73
73
  default:
74
74
  if (mySqlType.startsWith("enum(")) {
75
75
  const enumValues = mySqlType.substring(mySqlType.indexOf("(") + 1, mySqlType.indexOf(")"));
76
- return enumValues.split(",").join(" |");
76
+ return enumValues.split(",").join(" | ");
77
77
  }
78
78
  return 'any';
79
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mysql-mapping.js","sourceRoot":"","sources":["../../src/mysql-mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysql-mapping.js","sourceRoot":"","sources":["../../src/mysql-mapping.ts"],"names":[],"mappings":"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"}