typesql-cli 0.6.20 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/code-generator.d.ts +2 -0
  2. package/code-generator.d.ts.map +1 -1
  3. package/code-generator.js +237 -20
  4. package/code-generator.js.map +1 -1
  5. package/describe-dynamic-query.d.ts +3 -0
  6. package/describe-dynamic-query.d.ts.map +1 -0
  7. package/describe-dynamic-query.js +88 -0
  8. package/describe-dynamic-query.js.map +1 -0
  9. package/describe-query.d.ts +1 -1
  10. package/describe-query.d.ts.map +1 -1
  11. package/describe-query.js +9 -5
  12. package/describe-query.js.map +1 -1
  13. package/mysql-query-analyzer/infer-column-nullability.d.ts.map +1 -1
  14. package/mysql-query-analyzer/infer-column-nullability.js +3 -0
  15. package/mysql-query-analyzer/infer-column-nullability.js.map +1 -1
  16. package/mysql-query-analyzer/parse.d.ts.map +1 -1
  17. package/mysql-query-analyzer/parse.js +7 -1
  18. package/mysql-query-analyzer/parse.js.map +1 -1
  19. package/mysql-query-analyzer/select-columns.d.ts +13 -1
  20. package/mysql-query-analyzer/select-columns.d.ts.map +1 -1
  21. package/mysql-query-analyzer/select-columns.js +121 -6
  22. package/mysql-query-analyzer/select-columns.js.map +1 -1
  23. package/mysql-query-analyzer/traverse.d.ts +7 -6
  24. package/mysql-query-analyzer/traverse.d.ts.map +1 -1
  25. package/mysql-query-analyzer/traverse.js +411 -237
  26. package/mysql-query-analyzer/traverse.js.map +1 -1
  27. package/mysql-query-analyzer/types.d.ts +48 -0
  28. package/mysql-query-analyzer/types.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/ts-dynamic-query-descriptor.d.ts +5 -0
  31. package/ts-dynamic-query-descriptor.d.ts.map +1 -0
  32. package/ts-dynamic-query-descriptor.js +37 -0
  33. package/ts-dynamic-query-descriptor.js.map +1 -0
  34. package/types.d.ts +2 -1
  35. package/types.d.ts.map +1 -1
@@ -1,6 +1,7 @@
1
1
  import { SchemaDef, CamelCaseName, TsFieldDescriptor, ParameterDef } from "./types";
2
2
  import { DbClient } from "./queryExectutor";
3
3
  import { NestedTsDescriptor } from "./ts-nested-descriptor";
4
+ import { DynamicSqlInfoResult } from "./mysql-query-analyzer/types";
4
5
  export declare function generateTsCode(tsDescriptor: TsDescriptor, fileName: string, target: 'node' | 'deno', crud?: boolean): string;
5
6
  export declare function generateTsDescriptor(queryInfo: SchemaDef): TsDescriptor;
6
7
  export declare function removeDuplicatedParameters(parameters: ParameterDef[]): ParameterDef[];
@@ -25,5 +26,6 @@ export type TsDescriptor = {
25
26
  data?: TsFieldDescriptor[];
26
27
  orderByColumns?: string[];
27
28
  nestedDescriptor?: NestedTsDescriptor;
29
+ dynamicQuery?: DynamicSqlInfoResult;
28
30
  };
29
31
  //# 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,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,EAAE,IAAI,GAAE,OAAe,GAAG,MAAM,CAoLnI;AA2CD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAyDvE;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;AAWD,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,EAAE,UAAU,EAAE,OAAO,iBAanH;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,EAAE,IAAI,GAAE,OAAe,mBAWxK;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACnB,CAAA;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,SAAS,EAAE,CAAC;IAC5B,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"}
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,OAAO,EAAE,oBAAoB,EAAsB,MAAM,8BAA8B,CAAC;AAExF,wBAAgB,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,GAAE,OAAe,GAAG,MAAM,CA4WnI;AA2ED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CA6DvE;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;AAWD,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,EAAE,UAAU,EAAE,OAAO,iBAanH;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,EAAE,IAAI,GAAE,OAAe,mBAWxK;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACnB,CAAA;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,SAAS,EAAE,CAAC;IAC5B,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;IACtC,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACvC,CAAA"}
package/code-generator.js CHANGED
@@ -45,6 +45,7 @@ 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
47
  const ts_nested_descriptor_1 = require("./ts-nested-descriptor");
48
+ const ts_dynamic_query_descriptor_1 = require("./ts-dynamic-query-descriptor");
48
49
  function generateTsCode(tsDescriptor, fileName, target, crud = false) {
49
50
  var _a;
50
51
  const writer = new code_block_writer_1.default();
@@ -53,6 +54,9 @@ function generateTsCode(tsDescriptor, fileName, target, crud = false) {
53
54
  const dataTypeName = capitalizedName + 'Data';
54
55
  const paramsTypeName = capitalizedName + 'Params';
55
56
  const resultTypeName = capitalizedName + 'Result';
57
+ const dynamicParamsTypeName = capitalizedName + 'DynamicParams';
58
+ const selectColumnsTypeName = capitalizedName + 'Select';
59
+ const whereTypeName = capitalizedName + 'Where';
56
60
  const orderByTypeName = capitalizedName + 'OrderBy';
57
61
  const generateOrderBy = tsDescriptor.orderByColumns != null && tsDescriptor.orderByColumns.length > 0;
58
62
  // Import declarations
@@ -61,19 +65,57 @@ function generateTsCode(tsDescriptor, fileName, target, crud = false) {
61
65
  }
62
66
  else {
63
67
  writer.writeLine(`import type { Connection } from 'mysql2/promise';`);
68
+ if (tsDescriptor.dynamicQuery != null) {
69
+ writer.writeLine(`import { EOL } from 'os';`);
70
+ }
64
71
  }
65
72
  writer.blankLine();
66
73
  if (tsDescriptor.data) { //update
67
74
  writeTypeBlock(writer, tsDescriptor.data, dataTypeName, crud);
68
75
  }
69
76
  const orderByField = generateOrderBy ? `orderBy: [${orderByTypeName}, ...${orderByTypeName}[]]` : undefined;
70
- writeTypeBlock(writer, tsDescriptor.parameters, paramsTypeName, false, orderByField);
71
- writeTypeBlock(writer, tsDescriptor.columns, resultTypeName, false);
77
+ const paramsTypes = tsDescriptor.dynamicQuery == null ? tsDescriptor.parameters : (0, ts_dynamic_query_descriptor_1.mapToDynamicParams)(tsDescriptor.parameters);
78
+ if (tsDescriptor.dynamicQuery != null) {
79
+ writer.write(`export type ${dynamicParamsTypeName} = `).block(() => {
80
+ writer.writeLine(`select?: ${selectColumnsTypeName};`);
81
+ if (paramsTypes.length > 0) {
82
+ writer.writeLine(`params?: ${paramsTypeName};`);
83
+ }
84
+ writer.writeLine(`where?: ${whereTypeName}[];`);
85
+ });
86
+ writer.blankLine();
87
+ }
88
+ writeTypeBlock(writer, paramsTypes, paramsTypeName, false, orderByField);
89
+ const resultTypes = tsDescriptor.dynamicQuery == null ? tsDescriptor.columns : (0, ts_dynamic_query_descriptor_1.mapToDynamicResultColumns)(tsDescriptor.columns);
90
+ writeTypeBlock(writer, resultTypes, resultTypeName, false);
91
+ if (tsDescriptor.dynamicQuery) {
92
+ const selectFields = (0, ts_dynamic_query_descriptor_1.mapToDynamicSelectColumns)(tsDescriptor.columns);
93
+ writeTypeBlock(writer, selectFields, selectColumnsTypeName, false);
94
+ writer.writeLine(`const NumericOperatorList = ['=', '<>', '>', '<', '>=', '<='] as const;`);
95
+ writer.writeLine(`type NumericOperator = typeof NumericOperatorList[number];`);
96
+ writer.writeLine(`type StringOperator = '=' | '<>' | '>' | '<' | '>=' | '<=' | 'LIKE';`);
97
+ writer.writeLine(`type SetOperator = 'IN' | 'NOT IN';`);
98
+ writer.writeLine(`type BetweenOperator = 'BETWEEN';`);
99
+ writer.blankLine();
100
+ writer.write(`export type ${whereTypeName} =`).indent(() => {
101
+ tsDescriptor.columns.forEach(col => {
102
+ writer.writeLine(`| ['${col.name}', ${getOperator(col.tsType)}, ${col.tsType} | null]`);
103
+ writer.writeLine(`| ['${col.name}', SetOperator, ${col.tsType}[]]`);
104
+ writer.writeLine(`| ['${col.name}', BetweenOperator, ${col.tsType} | null, ${col.tsType} | null]`);
105
+ });
106
+ });
107
+ writer.blankLine();
108
+ }
72
109
  let functionReturnType = resultTypeName;
73
110
  functionReturnType += tsDescriptor.multipleRowsResult ? '[]' : tsDescriptor.queryType == 'Select' ? ' | null' : '';
74
111
  let functionArguments = target == 'deno' ? 'client: Client' : 'connection: Connection';
75
112
  functionArguments += tsDescriptor.data && tsDescriptor.data.length > 0 ? ', data: ' + dataTypeName : '';
76
- functionArguments += tsDescriptor.parameters.length > 0 || generateOrderBy ? ', params: ' + paramsTypeName : '';
113
+ if (tsDescriptor.dynamicQuery == null) {
114
+ functionArguments += tsDescriptor.parameters.length > 0 || generateOrderBy ? ', params: ' + paramsTypeName : '';
115
+ }
116
+ else {
117
+ functionArguments += ', params?: ' + dynamicParamsTypeName;
118
+ }
77
119
  const allParameters = tsDescriptor.data ? tsDescriptor.data.map((field, index) => {
78
120
  //:nameIsSet, :name, :valueIsSet, :value....
79
121
  if (crud && index % 2 == 0) {
@@ -87,14 +129,64 @@ function generateTsCode(tsDescriptor, fileName, target, crud = false) {
87
129
  const escapedBackstick = scapeBackStick(tsDescriptor.sql);
88
130
  const processedSql = replaceOrderByParam(escapedBackstick);
89
131
  const sqlSplit = processedSql.split('\n');
90
- writer.write(`export async function ${camelCaseName}(${functionArguments}) : Promise<${functionReturnType}>`).block(() => {
91
- writer.writeLine('const sql = `');
92
- sqlSplit.forEach(sqlLine => {
93
- writer.indent().write(sqlLine);
94
- writer.newLine();
95
- });
96
- writer.indent().write('`');
97
- writer.blankLine();
132
+ writer.write(`export async function ${camelCaseName}(${functionArguments}): Promise<${functionReturnType}>`).block(() => {
133
+ if (tsDescriptor.dynamicQuery == null) {
134
+ writer.writeLine('const sql = `');
135
+ sqlSplit.forEach(sqlLine => {
136
+ writer.indent().write(sqlLine);
137
+ writer.newLine();
138
+ });
139
+ writer.indent().write('`');
140
+ writer.blankLine();
141
+ }
142
+ else {
143
+ writer.writeLine(`const where = whereConditionsToObject(params?.where);`);
144
+ writer.writeLine('const paramsValues: any = [];');
145
+ if (tsDescriptor.dynamicQuery.with) {
146
+ writer.writeLine(`let withClause = '';`);
147
+ tsDescriptor.dynamicQuery.with.forEach(withFragment => {
148
+ generateDynamicQueryFrom(writer, 'withClause', withFragment, tsDescriptor.columns);
149
+ });
150
+ }
151
+ writer.writeLine(`let sql = 'SELECT';`);
152
+ tsDescriptor.dynamicQuery.select.forEach(fragment => {
153
+ writer.write(`if (params?.select == null || ${fragment.dependOnFields.map(fieldIndex => 'params.select.' + tsDescriptor.columns[fieldIndex].name).join('&&')})`).block(() => {
154
+ writer.write(`sql = appendSelect(sql, \`${fragment.fragment}\`);`);
155
+ });
156
+ });
157
+ tsDescriptor.dynamicQuery.from.forEach(fragment => {
158
+ generateDynamicQueryFrom(writer, 'sql', fragment, tsDescriptor.columns);
159
+ });
160
+ writer.writeLine(`sql += EOL + \`WHERE 1 = 1\`;`);
161
+ tsDescriptor.dynamicQuery.where.forEach(fragment => {
162
+ const ifParamConditions = fragment.dependOnParams.map(param => 'params?.params?.' + param + ' != null');
163
+ const paramValues = fragment.parameters.map(param => 'params.params.' + param);
164
+ if (ifParamConditions.length > 0) {
165
+ writer.write(`if (${ifParamConditions.join(' || ')})`).block(() => {
166
+ writer.writeLine(`sql += EOL + \`${fragment.fragment}\`;`);
167
+ paramValues.forEach(paramValues => {
168
+ writer.writeLine(`paramsValues.push(${paramValues});`);
169
+ });
170
+ });
171
+ }
172
+ else {
173
+ writer.writeLine(`sql += EOL + '${fragment.fragment}';`);
174
+ }
175
+ });
176
+ if (tsDescriptor.dynamicQuery.with) {
177
+ writer.write(`if (withClause != '') `).block(() => {
178
+ writer.writeLine(`sql = 'WITH ' + withClause + EOL + sql;`);
179
+ });
180
+ }
181
+ writer.write(`params?.where?.forEach(condition => `).inlineBlock(() => {
182
+ writer.writeLine(`const where = whereCondition(condition);`);
183
+ writer.write(`if (where?.hasValue)`).block(() => {
184
+ writer.writeLine(`sql += EOL + 'AND ' + where.sql;`);
185
+ writer.write(`paramsValues.push(...where.values);`);
186
+ });
187
+ });
188
+ writer.write(');');
189
+ }
98
190
  const singleRowSelect = tsDescriptor.queryType == 'Select' && tsDescriptor.multipleRowsResult === false;
99
191
  if (target == 'deno') {
100
192
  writer.writeLine(`return client.query(sql${queryParams})`);
@@ -102,9 +194,16 @@ function generateTsCode(tsDescriptor, fileName, target, crud = false) {
102
194
  }
103
195
  else {
104
196
  if (tsDescriptor.queryType == 'Select') {
105
- writer.writeLine(`return connection.query({sql, rowsAsArray: true}${queryParams})`);
106
- writer.indent().write(`.then(res => res[0] as any[])`);
107
- writer.newLine().indent().write(`.then(res => res.map(data => mapArrayTo${resultTypeName}(data)))`);
197
+ if (tsDescriptor.dynamicQuery == null) {
198
+ writer.writeLine(`return connection.query({sql, rowsAsArray: true}${queryParams})`);
199
+ writer.indent().write(`.then(res => res[0] as any[])`);
200
+ writer.newLine().indent().write(`.then(res => res.map(data => mapArrayTo${resultTypeName}(data)))`);
201
+ }
202
+ else {
203
+ writer.writeLine(`return connection.query({ sql, rowsAsArray: true }, paramsValues)`);
204
+ writer.indent().write(`.then(res => res[0] as any[])`);
205
+ writer.newLine().indent().write(`.then(res => res.map(data => mapArrayTo${resultTypeName}(data, params?.select)))`);
206
+ }
108
207
  }
109
208
  else {
110
209
  writer.writeLine(`return connection.query(sql${queryParams})`);
@@ -120,14 +219,98 @@ function generateTsCode(tsDescriptor, fileName, target, crud = false) {
120
219
  });
121
220
  if (target == 'node' && tsDescriptor.queryType == 'Select') {
122
221
  writer.blankLine();
123
- writer.write(`function mapArrayTo${resultTypeName}(data: any)`).block(() => {
124
- writer.write(`const result: ${resultTypeName} =`).block(() => {
125
- tsDescriptor.columns.forEach((tsField, index) => {
126
- writer.writeLine(`${tsField.name}: data[${index}]${commaSeparator(tsDescriptor.columns.length, index)}`);
222
+ if (tsDescriptor.dynamicQuery == null) {
223
+ writer.write(`function mapArrayTo${resultTypeName}(data: any)`).block(() => {
224
+ writer.write(`const result: ${resultTypeName} =`).block(() => {
225
+ tsDescriptor.columns.forEach((tsField, index) => {
226
+ writer.writeLine(`${tsField.name}: data[${index}]${commaSeparator(tsDescriptor.columns.length, index)}`);
227
+ });
127
228
  });
229
+ writer.write('return result;');
128
230
  });
129
- writer.write('return result;');
130
- });
231
+ }
232
+ else {
233
+ writer.write(`function mapArrayTo${resultTypeName}(data: any, select?: ${selectColumnsTypeName})`).block(() => {
234
+ writer.writeLine(`const result = {} as ${resultTypeName};`);
235
+ writer.writeLine(`let rowIndex = 0;`);
236
+ tsDescriptor.columns.forEach((tsField) => {
237
+ writer.write(`if (select == null || select.${tsField.name})`).block(() => {
238
+ writer.writeLine(`result.${tsField.name} = data[rowIndex++];`);
239
+ });
240
+ });
241
+ writer.write('return result;');
242
+ });
243
+ writer.blankLine();
244
+ writer.write(`function appendSelect(sql: string, selectField: string)`).block(() => {
245
+ writer.write(`if (sql == 'SELECT')`).block(() => {
246
+ writer.writeLine(`return sql + EOL + selectField;`);
247
+ });
248
+ writer.write(`else`).block(() => {
249
+ writer.writeLine(`return sql + ', ' + EOL + selectField;`);
250
+ });
251
+ });
252
+ writer.blankLine();
253
+ writer.write(`function whereConditionsToObject(whereConditions?: ${whereTypeName}[])`).block(() => {
254
+ writer.writeLine(`const obj = {} as any;`);
255
+ writer.write(`whereConditions?.forEach(condition => `).inlineBlock(() => {
256
+ writer.writeLine(`const where = whereCondition(condition);`);
257
+ writer.write(`if (where?.hasValue) `).block(() => {
258
+ writer.writeLine(`obj[condition[0]] = true;`);
259
+ });
260
+ });
261
+ writer.write(');');
262
+ writer.writeLine(`return obj;`);
263
+ });
264
+ writer.blankLine();
265
+ writer.write(`export type WhereConditionResult = `).block(() => {
266
+ writer.writeLine('sql: string;');
267
+ writer.writeLine('hasValue: boolean;');
268
+ writer.writeLine('values: any[];');
269
+ });
270
+ writer.blankLine();
271
+ writer.write(`function whereCondition(condition: ${whereTypeName}): WhereConditionResult | undefined `).block(() => {
272
+ writer.write(`const selectFragments = `).inlineBlock(() => {
273
+ var _a;
274
+ (_a = tsDescriptor.dynamicQuery) === null || _a === void 0 ? void 0 : _a.select.forEach((fragment, index) => {
275
+ const field = tsDescriptor.columns[index].name;
276
+ writer.writeLine(`${field}: \`${fragment.fragmentWitoutAlias}\`,`);
277
+ });
278
+ });
279
+ writer.write(' as const;');
280
+ writer.blankLine();
281
+ writer.writeLine('const selectFragment = selectFragments[condition[0]];');
282
+ writer.writeLine('const operator = condition[1];');
283
+ writer.blankLine();
284
+ writer.write(`if (operator == 'LIKE') `).block(() => {
285
+ writer.write(`return `).block(() => {
286
+ writer.writeLine('sql: `${selectFragment} LIKE concat(\'%\', ?, \'%\')`,');
287
+ writer.writeLine('hasValue: condition[2] != null,');
288
+ writer.writeLine('values: [condition[2]]');
289
+ });
290
+ });
291
+ writer.write(`if (operator == 'BETWEEN') `).block(() => {
292
+ writer.write(`return `).block(() => {
293
+ writer.writeLine('sql: `${selectFragment} BETWEEN ? AND ?`,');
294
+ writer.writeLine('hasValue: condition[2] != null && condition[3] != null,');
295
+ writer.writeLine('values: [condition[2], condition[3]]');
296
+ });
297
+ });
298
+ writer.write(`if (operator == 'IN' || operator == 'NOT IN') `).block(() => {
299
+ writer.write(`return `).block(() => {
300
+ writer.writeLine('sql: `${selectFragment} ${operator} (?)`,');
301
+ writer.writeLine('hasValue: condition[2] != null && condition[2].length > 0,');
302
+ writer.writeLine('values: [condition[2]]');
303
+ });
304
+ });
305
+ writer.write(`if (NumericOperatorList.includes(operator)) `).block(() => {
306
+ writer.write(`return `).block(() => {
307
+ writer.writeLine('sql: `${selectFragment} ${operator} ?`,');
308
+ writer.writeLine('hasValue: condition[2] != null,');
309
+ writer.writeLine('values: [condition[2]]');
310
+ });
311
+ });
312
+ });
313
+ }
131
314
  }
132
315
  if (generateOrderBy) {
133
316
  const orderByColumnsType = (_a = tsDescriptor.orderByColumns) === null || _a === void 0 ? void 0 : _a.map(col => `"${col}"`).join(' | ');
@@ -214,6 +397,36 @@ function generateTsCode(tsDescriptor, fileName, target, crud = false) {
214
397
  return writer.toString();
215
398
  }
216
399
  exports.generateTsCode = generateTsCode;
400
+ function generateDynamicQueryFrom(writer, sqlVar, fragment, columns) {
401
+ const selectConditions = fragment.dependOnFields.map(fieldIndex => 'params.select.' + columns[fieldIndex].name);
402
+ if (selectConditions.length > 0) {
403
+ selectConditions.unshift('params?.select == null');
404
+ }
405
+ const paramConditions = fragment.dependOnParams.map(param => 'params.params?.' + param + ' != null');
406
+ const whereConditions = fragment.dependOnFields.map(fieldIndex => 'where.' + columns[fieldIndex].name + ' != null');
407
+ const allConditions = [...selectConditions, ...paramConditions, ...whereConditions];
408
+ const paramValues = fragment.parameters.map(param => 'params?.params?.' + param);
409
+ if (allConditions.length > 0) {
410
+ writer.write(`if (${allConditions.join(' || ')})`).block(() => {
411
+ writer.write(`${sqlVar} += EOL + \`${fragment.fragment}\`;`);
412
+ paramValues.forEach(paramValues => {
413
+ writer.writeLine(`paramsValues.push(${paramValues});`);
414
+ });
415
+ });
416
+ }
417
+ else {
418
+ writer.writeLine(`${sqlVar} += EOL + \`${fragment.fragment}\`;`);
419
+ paramValues.forEach(paramValues => {
420
+ writer.writeLine(`paramsValues.push(${paramValues});`);
421
+ });
422
+ }
423
+ }
424
+ function getOperator(type) {
425
+ if (type == 'number' || type == 'Date') {
426
+ return 'NumericOperator';
427
+ }
428
+ return 'StringOperator';
429
+ }
217
430
  function generateParam(target, param) {
218
431
  if (target == 'node' && param.isList) {
219
432
  return `params.${param.name}.length == 0? null : params.${param.name}`;
@@ -302,6 +515,10 @@ function generateTsDescriptor(queryInfo) {
302
515
  const nestedDescriptor = (0, ts_nested_descriptor_1.createNestedTsDescriptor)(queryInfo.columns, queryInfo.nestedResultInfo);
303
516
  result.nestedDescriptor = nestedDescriptor;
304
517
  }
518
+ if (queryInfo.dynamicSqlQuery) {
519
+ const dynamicQueryDescriptor = queryInfo.dynamicSqlQuery;
520
+ result.dynamicQuery = dynamicQueryDescriptor;
521
+ }
305
522
  return result;
306
523
  }
307
524
  exports.generateTsDescriptor = generateTsDescriptor;
@@ -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,3 @@
1
+ import { ColumnInfo, DynamicSqlInfo, DynamicSqlInfoResult } from "./mysql-query-analyzer/types";
2
+ export declare function describeDynamicQuery(dynamicQueryInfo: DynamicSqlInfo, namedParameters: string[], columnNames: ColumnInfo[]): DynamicSqlInfoResult;
3
+ //# sourceMappingURL=describe-dynamic-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-dynamic-query.d.ts","sourceRoot":"","sources":["../../src/describe-dynamic-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAgD,MAAM,8BAA8B,CAAC;AAE9I,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,oBAAoB,CAqCjJ"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.describeDynamicQuery = void 0;
4
+ function describeDynamicQuery(dynamicQueryInfo, namedParameters, columnNames) {
5
+ const { with: withFragments, select, from, where } = dynamicQueryInfo;
6
+ const selectFragments = select.map((fragment, index) => {
7
+ const fragmentResult = {
8
+ fragment: fragment.fragment,
9
+ fragmentWitoutAlias: fragment.fragementWithoutAlias,
10
+ dependOnFields: [index],
11
+ dependOnParams: [],
12
+ parameters: []
13
+ };
14
+ return fragmentResult;
15
+ });
16
+ const withFragements = withFragments === null || withFragments === void 0 ? void 0 : withFragments.map(fragment => transformFrom(fragment, withFragments, select, from, where, namedParameters));
17
+ const fromFragements = from.map(fragment => transformFrom(fragment, undefined, select, from, where, namedParameters));
18
+ const whereFragements = where.map(fragment => {
19
+ const params = fragment.dependOnParams.map(paramIndex => namedParameters[paramIndex]);
20
+ const fragmentResult = {
21
+ fragment: fragment.fragment,
22
+ dependOnFields: [],
23
+ dependOnParams: params,
24
+ parameters: params
25
+ };
26
+ return fragmentResult;
27
+ });
28
+ const result = {
29
+ select: selectFragments,
30
+ from: fromFragements,
31
+ where: whereFragements
32
+ };
33
+ if (withFragements != null && withFragements.length > 0) {
34
+ result.with = withFragements;
35
+ }
36
+ return result;
37
+ }
38
+ exports.describeDynamicQuery = describeDynamicQuery;
39
+ function transformFrom(fragment, withFragments, select, from, where, namedParameters) {
40
+ if (fragment.relation) {
41
+ addAllChildFields(fragment, from, withFragments);
42
+ }
43
+ const filteredWhere = where.filter(whereFragment => includeAny(whereFragment.fields, fragment.fields));
44
+ const hasUnconditional = filteredWhere
45
+ .some(fragment => fragment.dependOnParams.length == 0);
46
+ if (hasUnconditional) {
47
+ return {
48
+ fragment: fragment.fragment,
49
+ dependOnFields: [],
50
+ dependOnParams: [],
51
+ parameters: fragment.parameters.map(paramIndex => namedParameters[paramIndex])
52
+ };
53
+ }
54
+ const fieldIndex = select.flatMap((selectField, index) => {
55
+ const found = selectField.dependOn.find(dependsOn => fragment.dependOn.includes(dependsOn));
56
+ if (found) {
57
+ return index;
58
+ }
59
+ return [];
60
+ });
61
+ const params = filteredWhere.flatMap(fragment => fragment.dependOnParams).map(paramIndex => namedParameters[paramIndex]);
62
+ const fragmentResult = {
63
+ fragment: fragment.fragment,
64
+ dependOnFields: fieldIndex,
65
+ dependOnParams: [...new Set(params)],
66
+ parameters: fragment.parameters.map(paramIndex => namedParameters[paramIndex])
67
+ };
68
+ return fragmentResult;
69
+ }
70
+ function includeAny(fields, fields2) {
71
+ return fields.some(f => fields2.find(f2 => f2.field == f.field && f2.table == f.table));
72
+ }
73
+ function addAllChildFields(currentRelation, select, withFragments) {
74
+ currentRelation.dependOn.push(currentRelation.relation + '');
75
+ select.forEach(fragment => {
76
+ if (fragment.parentRelation == currentRelation.relation) {
77
+ currentRelation.fields.push(...fragment.fields);
78
+ currentRelation.dependOn.push(fragment.relation + '');
79
+ }
80
+ withFragments === null || withFragments === void 0 ? void 0 : withFragments.forEach(withFragment => {
81
+ if (withFragment.parentRelation == fragment.relation) {
82
+ withFragment.fields.push(...fragment.fields);
83
+ withFragment.dependOn.push(fragment.relation + '');
84
+ }
85
+ });
86
+ });
87
+ }
88
+ //# sourceMappingURL=describe-dynamic-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-dynamic-query.js","sourceRoot":"","sources":["../../src/describe-dynamic-query.ts"],"names":[],"mappings":"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"}
@@ -7,5 +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
+ export declare function hasAnnotation(sql: string, annotation: string): boolean;
11
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,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"}
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,CAiG5E;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;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAG5D"}
package/describe-query.js CHANGED
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.generateNestedQueryResult = exports.preprocessSql = exports.parseSql = exports.verifyNotInferred = exports.describeSql = void 0;
12
+ exports.hasAnnotation = 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) {
@@ -37,6 +37,9 @@ function describeSql(dbSchema, sql) {
37
37
  if (queryInfo.nestedResultInfo) {
38
38
  schemaDef.nestedResultInfo = queryInfo.nestedResultInfo;
39
39
  }
40
+ if (queryInfo.dynamicQuery) {
41
+ schemaDef.dynamicSqlQuery = queryInfo.dynamicQuery;
42
+ }
40
43
  return schemaDef;
41
44
  }
42
45
  if (queryInfo.kind == 'Insert') {
@@ -155,9 +158,10 @@ function preprocessSql(sql) {
155
158
  return processedSql;
156
159
  }
157
160
  exports.preprocessSql = preprocessSql;
158
- function generateNestedQueryResult(sql) {
159
- const regex = /-- @nested/g;
160
- return sql.match(regex) != null;
161
+ //https://stackoverflow.com/a/1695647
162
+ function hasAnnotation(sql, annotation) {
163
+ const regex = `-- ${annotation}`;
164
+ return sql.match(new RegExp(regex)) != null;
161
165
  }
162
- exports.generateNestedQueryResult = generateNestedQueryResult;
166
+ exports.hasAnnotation = hasAnnotation;
163
167
  //# 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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"}