typesql-cli 0.8.23 → 0.9.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/code-generator.d.ts +6 -1
- package/code-generator.d.ts.map +1 -1
- package/code-generator.js +4 -1
- package/code-generator.js.map +1 -1
- package/describe-dynamic-query.d.ts +2 -1
- package/describe-dynamic-query.d.ts.map +1 -1
- package/describe-dynamic-query.js +103 -1
- package/describe-dynamic-query.js.map +1 -1
- package/mysql-query-analyzer/select-columns.d.ts.map +1 -1
- package/mysql-query-analyzer/select-columns.js +2 -1
- package/mysql-query-analyzer/select-columns.js.map +1 -1
- package/mysql-query-analyzer/traverse.d.ts +11 -4
- package/mysql-query-analyzer/traverse.d.ts.map +1 -1
- package/mysql-query-analyzer/traverse.js +6 -0
- package/mysql-query-analyzer/traverse.js.map +1 -1
- package/mysql-query-analyzer/types.d.ts +51 -0
- package/mysql-query-analyzer/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/sqlite-query-analyzer/code-generator.d.ts.map +1 -1
- package/sqlite-query-analyzer/code-generator.js +299 -44
- package/sqlite-query-analyzer/code-generator.js.map +1 -1
- package/sqlite-query-analyzer/parser.d.ts +10 -0
- package/sqlite-query-analyzer/parser.d.ts.map +1 -1
- package/sqlite-query-analyzer/parser.js +53 -23
- package/sqlite-query-analyzer/parser.js.map +1 -1
- package/sqlite-query-analyzer/traverse.d.ts.map +1 -1
- package/sqlite-query-analyzer/traverse.js +142 -52
- package/sqlite-query-analyzer/traverse.js.map +1 -1
- package/types.d.ts +2 -1
- package/types.d.ts.map +1 -1
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.parseSql = void 0;
|
3
|
+
exports.parseSql = exports.traverseSql = void 0;
|
4
4
|
const Either_1 = require("fp-ts/lib/Either");
|
5
5
|
const sqlite_1 = require("@wsporto/ts-mysql-parser/dist/sqlite");
|
6
6
|
const traverse_1 = require("./traverse");
|
@@ -10,15 +10,37 @@ const describe_query_1 = require("../describe-query");
|
|
10
10
|
const sqlite_describe_nested_query_1 = require("./sqlite-describe-nested-query");
|
11
11
|
const util_1 = require("../util");
|
12
12
|
const replace_list_params_1 = require("./replace-list-params");
|
13
|
-
|
13
|
+
const describe_dynamic_query_1 = require("../describe-dynamic-query");
|
14
|
+
function traverseSql(sql, dbSchema) {
|
14
15
|
const { sql: processedSql, namedParameters } = (0, describe_query_1.preprocessSql)(sql);
|
15
16
|
const nested = (0, describe_query_1.hasAnnotation)(sql, '@nested');
|
17
|
+
const dynamicQuery = (0, describe_query_1.hasAnnotation)(sql, '@dynamicQuery');
|
16
18
|
const parser = (0, sqlite_1.parseSql)(processedSql);
|
17
19
|
const sql_stmt = parser.sql_stmt();
|
18
|
-
|
20
|
+
const traverseResult = traverseQuery(sql_stmt, dbSchema, namedParameters);
|
21
|
+
if ((0, Either_1.isLeft)(traverseResult)) {
|
22
|
+
return traverseResult;
|
23
|
+
}
|
24
|
+
const result = {
|
25
|
+
traverseResult: traverseResult.right,
|
26
|
+
namedParameters,
|
27
|
+
nested,
|
28
|
+
processedSql,
|
29
|
+
dynamicQuery
|
30
|
+
};
|
31
|
+
return (0, Either_1.right)(result);
|
32
|
+
}
|
33
|
+
exports.traverseSql = traverseSql;
|
34
|
+
function parseSql(sql, dbSchema) {
|
35
|
+
const parseAndTraverseResult = traverseSql(sql, dbSchema);
|
36
|
+
if ((0, Either_1.isLeft)(parseAndTraverseResult)) {
|
37
|
+
return parseAndTraverseResult;
|
38
|
+
}
|
39
|
+
const { traverseResult, processedSql, namedParameters, nested, dynamicQuery } = parseAndTraverseResult.right;
|
40
|
+
return createSchemaDefinition(processedSql, traverseResult, namedParameters, nested, dynamicQuery);
|
19
41
|
}
|
20
42
|
exports.parseSql = parseSql;
|
21
|
-
function
|
43
|
+
function traverseQuery(sql_stmtContext, dbSchema, namedParameters) {
|
22
44
|
const traverseContext = {
|
23
45
|
dbSchema,
|
24
46
|
withSchema: [],
|
@@ -34,35 +56,39 @@ function createSchemaDefinition(sql, sql_stmtContext, dbSchema, namedParameters,
|
|
34
56
|
from: [],
|
35
57
|
where: []
|
36
58
|
},
|
59
|
+
dynamicSqlInfo2: {
|
60
|
+
with: [],
|
61
|
+
select: [],
|
62
|
+
from: [],
|
63
|
+
where: []
|
64
|
+
},
|
37
65
|
relations: []
|
38
66
|
};
|
39
67
|
const queryResultResult = (0, traverse_1.tryTraverse_Sql_stmtContext)(sql_stmtContext, traverseContext);
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
const queryResult = queryResultResult.right;
|
44
|
-
traverseContext.parameters.sort((param1, param2) => param1.paramIndex - param2.paramIndex);
|
68
|
+
return queryResultResult;
|
69
|
+
}
|
70
|
+
function createSchemaDefinition(sql, queryResult, namedParameters, nestedQuery, dynamicQuery) {
|
45
71
|
const groupedByName = (0, util_1.indexGroupBy)(namedParameters, p => p);
|
46
72
|
const paramsById = new Map();
|
47
|
-
|
73
|
+
queryResult.parameters.forEach(param => {
|
48
74
|
paramsById.set(param.type.id, param);
|
49
75
|
});
|
50
76
|
groupedByName.forEach(sameNameList => {
|
51
|
-
let notNull =
|
77
|
+
let notNull = queryResult.parameters[0].notNull; //param is not null if any param with same name is not null
|
52
78
|
for (let index = 1; index < sameNameList.length; index++) {
|
53
|
-
notNull = notNull ||
|
54
|
-
|
55
|
-
expression:
|
56
|
-
type1:
|
57
|
-
type2:
|
79
|
+
notNull = notNull || queryResult.parameters[index].notNull;
|
80
|
+
queryResult.constraints.push({
|
81
|
+
expression: queryResult.parameters[0].name,
|
82
|
+
type1: queryResult.parameters[0].type,
|
83
|
+
type2: queryResult.parameters[index].type
|
58
84
|
});
|
59
85
|
}
|
60
86
|
for (let index = 0; index < sameNameList.length; index++) {
|
61
|
-
|
87
|
+
queryResult.parameters[index].notNull = notNull || queryResult.parameters[index].notNull;
|
62
88
|
}
|
63
89
|
});
|
64
90
|
const substitutions = {}; //TODO - DUPLICADO
|
65
|
-
(0, unify_1.unify)(
|
91
|
+
(0, unify_1.unify)(queryResult.constraints, substitutions);
|
66
92
|
if (queryResult.queryType == 'Select') {
|
67
93
|
const columnResult = queryResult.columns.map((col) => {
|
68
94
|
var _a;
|
@@ -76,7 +102,7 @@ function createSchemaDefinition(sql, sql_stmtContext, dbSchema, namedParameters,
|
|
76
102
|
};
|
77
103
|
return colInfo;
|
78
104
|
});
|
79
|
-
const paramsResult =
|
105
|
+
const paramsResult = queryResult.parameters.map((param, index) => {
|
80
106
|
const columnType = (0, collect_constraints_1.getVarType)(substitutions, param.type);
|
81
107
|
const columnNotNull = param.notNull;
|
82
108
|
const colInfo = {
|
@@ -91,7 +117,7 @@ function createSchemaDefinition(sql, sql_stmtContext, dbSchema, namedParameters,
|
|
91
117
|
.map((param, index) => {
|
92
118
|
const nameAndPosition = {
|
93
119
|
name: param.name,
|
94
|
-
paramPosition:
|
120
|
+
paramPosition: queryResult.parameters[index].paramIndex
|
95
121
|
};
|
96
122
|
return nameAndPosition;
|
97
123
|
});
|
@@ -110,6 +136,10 @@ function createSchemaDefinition(sql, sql_stmtContext, dbSchema, namedParameters,
|
|
110
136
|
const nestedResult = (0, sqlite_describe_nested_query_1.describeNestedQuery)(columnResult, queryResult.relations);
|
111
137
|
schemaDef.nestedInfo = nestedResult;
|
112
138
|
}
|
139
|
+
if (dynamicQuery) {
|
140
|
+
const dynamicSqlInfo = (0, describe_dynamic_query_1.describeDynamicQuery2)(columnResult, queryResult.dynamicQueryInfo, namedParameters, queryResult.orderByColumns || []);
|
141
|
+
schemaDef.dynamicSqlQuery2 = dynamicSqlInfo;
|
142
|
+
}
|
113
143
|
return (0, Either_1.right)(schemaDef);
|
114
144
|
}
|
115
145
|
if (queryResult.queryType == 'Insert') {
|
@@ -155,7 +185,7 @@ function createSchemaDefinition(sql, sql_stmtContext, dbSchema, namedParameters,
|
|
155
185
|
};
|
156
186
|
return colInfo;
|
157
187
|
});
|
158
|
-
const whereParams = queryResult.
|
188
|
+
const whereParams = queryResult.whereParams.map((param, index) => {
|
159
189
|
const columnType = (0, collect_constraints_1.getVarType)(substitutions, param.type);
|
160
190
|
const columnNotNull = param.notNull;
|
161
191
|
const paramIndex = index + queryResult.columns.length;
|
@@ -177,7 +207,7 @@ function createSchemaDefinition(sql, sql_stmtContext, dbSchema, namedParameters,
|
|
177
207
|
return (0, Either_1.right)(schemaDef);
|
178
208
|
}
|
179
209
|
if (queryResult.queryType == 'Delete') {
|
180
|
-
const whereParams = queryResult.
|
210
|
+
const whereParams = queryResult.parameters.map((param, index) => {
|
181
211
|
const columnType = (0, collect_constraints_1.getVarType)(substitutions, param.type);
|
182
212
|
const columnNotNull = param.notNull;
|
183
213
|
const colInfo = {
|
@@ -198,7 +228,7 @@ function createSchemaDefinition(sql, sql_stmtContext, dbSchema, namedParameters,
|
|
198
228
|
}
|
199
229
|
return (0, Either_1.left)({
|
200
230
|
name: 'parse error',
|
201
|
-
description: 'query not supported
|
231
|
+
description: 'query not supported'
|
202
232
|
});
|
203
233
|
}
|
204
234
|
//# sourceMappingURL=parser.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/sqlite-query-analyzer/parser.ts"],"names":[],"mappings":";;;AAAA,6CAA+D;AAE/D,iEAAgG;AAChG,yCAAyD;AAEzD,qFAAyE;AACzE,yDAAsD;AACtD,sDAAoF;AACpF,iFAAqE;AACrE,kCAAuC;AACvC,+DAA0D;
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/sqlite-query-analyzer/parser.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../src/sqlite-query-analyzer/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,EAAgP,MAAM,sCAAsC,CAAC;AACtV,OAAO,EAAE,SAAS,
|
1
|
+
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../src/sqlite-query-analyzer/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,EAAgP,MAAM,sCAAsC,CAAC;AACtV,OAAO,EAAE,SAAS,EAA2B,eAAe,EAAgE,MAAM,+BAA+B,CAAC;AAGlK,OAAO,EAAsE,eAAe,EAAmC,MAAM,kCAAkC,CAAC;AAExK,OAAO,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4BxC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,GAAG,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CAa9I;AAojCD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAiBhF;AA0BD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,WA0B5F"}
|
@@ -52,7 +52,7 @@ function traverse_select_stmt(select_stmt, traverseContext, subQuery = false, re
|
|
52
52
|
const table_name = common_table_expression.table_name();
|
53
53
|
const recursiveNames = common_table_expression.column_name_list().map(column_name => column_name.getText());
|
54
54
|
const select_stmt = common_table_expression.select_stmt();
|
55
|
-
const select_stmt_result = traverse_select_stmt(select_stmt, traverseContext, subQuery, recursive, recursiveNames);
|
55
|
+
const select_stmt_result = traverse_select_stmt(select_stmt, Object.assign(Object.assign({}, traverseContext), { subQuery: true }), subQuery, recursive, recursiveNames);
|
56
56
|
select_stmt_result.columns.forEach((col, index) => {
|
57
57
|
var _a;
|
58
58
|
traverseContext.withSchema.push({
|
@@ -63,6 +63,11 @@ function traverse_select_stmt(select_stmt, traverseContext, subQuery = false, re
|
|
63
63
|
notNull: col.notNull
|
64
64
|
});
|
65
65
|
});
|
66
|
+
traverseContext.dynamicSqlInfo2.with.push({
|
67
|
+
fragment: extractOriginalSql(common_table_expression),
|
68
|
+
relationName: table_name.getText(),
|
69
|
+
parameters: []
|
70
|
+
});
|
66
71
|
});
|
67
72
|
}
|
68
73
|
const [mainSelect, ...unionSelect] = select_stmt.select_core_list();
|
@@ -79,11 +84,15 @@ function traverse_select_stmt(select_stmt, traverseContext, subQuery = false, re
|
|
79
84
|
});
|
80
85
|
});
|
81
86
|
});
|
87
|
+
const sortedParameters = traverseContext.parameters.sort((param1, param2) => param1.paramIndex - param2.paramIndex);
|
82
88
|
const selectResult = {
|
83
89
|
queryType: 'Select',
|
90
|
+
parameters: sortedParameters,
|
84
91
|
columns: mainQueryResult.columns,
|
85
92
|
multipleRowsResult: isMultipleRowResult(select_stmt, mainQueryResult.fromColumns),
|
86
|
-
relations: traverseContext.relations
|
93
|
+
relations: traverseContext.relations,
|
94
|
+
dynamicQueryInfo: traverseContext.dynamicSqlInfo2,
|
95
|
+
constraints: traverseContext.constraints
|
87
96
|
};
|
88
97
|
const order_by_stmt = select_stmt.order_by_stmt();
|
89
98
|
let hasOrderByParameter = false;
|
@@ -160,13 +169,20 @@ function traverse_select_core(select_core, traverseContext, subQuery = false, re
|
|
160
169
|
if (result_column.STAR()) {
|
161
170
|
const tableName = (_a = result_column.table_name()) === null || _a === void 0 ? void 0 : _a.getText();
|
162
171
|
columnsResult.forEach(col => {
|
172
|
+
const table = col.tableAlias || col.table;
|
163
173
|
if (!tableName || (0, select_columns_1.includeColumn)(col, tableName)) {
|
164
174
|
listType.push({
|
165
175
|
name: col.columnName,
|
166
176
|
type: col.columnType,
|
167
177
|
notNull: col.notNull,
|
168
|
-
table:
|
178
|
+
table: table
|
169
179
|
});
|
180
|
+
if (!traverseContext.subQuery) {
|
181
|
+
traverseContext.dynamicSqlInfo2.select.push({
|
182
|
+
fragment: `${table}.${col.columnName}`,
|
183
|
+
fragmentWitoutAlias: `${table}.${col.columnName}`
|
184
|
+
});
|
185
|
+
}
|
170
186
|
}
|
171
187
|
});
|
172
188
|
}
|
@@ -185,11 +201,41 @@ function traverse_select_core(select_core, traverseContext, subQuery = false, re
|
|
185
201
|
}
|
186
202
|
listType.push(exprType);
|
187
203
|
}
|
204
|
+
if (!traverseContext.subQuery) {
|
205
|
+
traverseContext.dynamicSqlInfo2.select.push({
|
206
|
+
fragment: extractOriginalSql(result_column),
|
207
|
+
fragmentWitoutAlias: expr.getText()
|
208
|
+
});
|
209
|
+
}
|
188
210
|
}
|
189
211
|
});
|
190
212
|
const whereExpr = select_core._whereExpr;
|
191
213
|
if (whereExpr) {
|
192
214
|
traverse_expr(whereExpr, Object.assign(Object.assign({}, traverseContext), { fromColumns: fromColumns }));
|
215
|
+
if (!traverseContext.subQuery) {
|
216
|
+
const whereFragmentExprList = getWhereFragmentExpressions(whereExpr);
|
217
|
+
whereFragmentExprList.forEach(whereCond => {
|
218
|
+
const expressionList = (0, select_columns_1.getExpressions)(whereCond, sqlite_1.ExprContext);
|
219
|
+
const paramsIds = expressionList.filter(expr => expr.expr.BIND_PARAMETER() != null).map(expr => expr.expr.BIND_PARAMETER().symbol.start);
|
220
|
+
const params = getParamsIndexes(traverseContext.parameters, paramsIds);
|
221
|
+
const columnsRef = (0, select_columns_1.getExpressions)(whereCond, sqlite_1.Column_nameContext);
|
222
|
+
const cols = columnsRef.filter(expr => !expr.isSubQuery).map(colRef => {
|
223
|
+
const fieldName = (0, select_columns_1.splitName)(colRef.expr.getText());
|
224
|
+
const column = (0, select_columns_1.findColumn)(fieldName, fromColumns);
|
225
|
+
const fields = {
|
226
|
+
parameters: params,
|
227
|
+
dependOnRelation: column.tableAlias || column.table
|
228
|
+
};
|
229
|
+
return fields;
|
230
|
+
});
|
231
|
+
const openPar = whereExpr.OPEN_PAR() != null ? '(' : '';
|
232
|
+
const closePar = whereExpr.CLOSE_PAR() != null ? ')' : '';
|
233
|
+
traverseContext.dynamicSqlInfo2.where.push({
|
234
|
+
fragment: `AND ${openPar}${extractOriginalSql(whereCond)}${closePar}`,
|
235
|
+
fields: cols
|
236
|
+
});
|
237
|
+
});
|
238
|
+
}
|
193
239
|
}
|
194
240
|
const groupByExprList = select_core._groupByExpr || [];
|
195
241
|
groupByExprList.forEach(groupByExpr => {
|
@@ -220,9 +266,11 @@ function traverse_table_or_subquery(table_or_subquery_list, join_constraint_list
|
|
220
266
|
const allFields = [];
|
221
267
|
table_or_subquery_list.forEach((table_or_subquery, index) => {
|
222
268
|
var _a, _b, _c, _d;
|
269
|
+
const numParamsBefore = traverseContext.parameters.length;
|
223
270
|
const isLeftJoin = index > 0 && join_operator_list ? ((_a = join_operator_list[index - 1]) === null || _a === void 0 ? void 0 : _a.LEFT_()) != null : false;
|
224
271
|
const table_name = table_or_subquery.table_name();
|
225
272
|
const table_alias_temp = ((_b = table_or_subquery.table_alias()) === null || _b === void 0 ? void 0 : _b.getText()) || '';
|
273
|
+
let tableOrSubqueryFields = [];
|
226
274
|
//grammar error: select * from table1 inner join table2....; inner is parsed as table_alias
|
227
275
|
let table_alias = table_alias_temp.toLowerCase() == 'left'
|
228
276
|
|| table_alias_temp.toLowerCase() == 'right'
|
@@ -231,60 +279,25 @@ function traverse_table_or_subquery(table_or_subquery_list, join_constraint_list
|
|
231
279
|
|| table_alias_temp.toLowerCase() == 'inner'
|
232
280
|
|| table_alias_temp.toLowerCase() == 'cross' ? '' : table_alias_temp;
|
233
281
|
const join_constraint = join_constraint_list && index > 0 ? join_constraint_list[index - 1] : undefined;
|
282
|
+
const asAlias = table_or_subquery.AS_() || false;
|
283
|
+
const tableAlias = (_c = table_or_subquery.table_alias()) === null || _c === void 0 ? void 0 : _c.getText();
|
284
|
+
const tableOrSubqueryName = table_name ? table_name.any_name().getText() : '';
|
234
285
|
if (table_name) {
|
235
286
|
const tableName = (0, select_columns_1.splitName)(table_name.any_name().getText());
|
236
|
-
|
237
|
-
const fields = (0, select_columns_1.filterColumns)(traverseContext.dbSchema, traverseContext.withSchema, table_alias, tableName);
|
287
|
+
tableOrSubqueryFields = (0, select_columns_1.filterColumns)(traverseContext.dbSchema, traverseContext.withSchema, table_alias, tableName);
|
238
288
|
const usingFields = (join_constraint === null || join_constraint === void 0 ? void 0 : join_constraint.USING_()) ? join_constraint === null || join_constraint === void 0 ? void 0 : join_constraint.column_name_list().map(column_name => column_name.getText()) : [];
|
239
|
-
const filteredFields = usingFields.length > 0 ? filterUsingFields(
|
289
|
+
const filteredFields = usingFields.length > 0 ? filterUsingFields(tableOrSubqueryFields, usingFields) : tableOrSubqueryFields;
|
240
290
|
if (isLeftJoin) {
|
241
291
|
allFields.push(...filteredFields.map(field => (Object.assign(Object.assign({}, field), { notNull: false }))));
|
242
292
|
}
|
243
293
|
else {
|
244
294
|
allFields.push(...filteredFields);
|
245
295
|
}
|
246
|
-
const idColumn = (_c = fields.find(field => field.columnKey == 'PRI')) === null || _c === void 0 ? void 0 : _c.columnName;
|
247
|
-
const relation = {
|
248
|
-
name: asAlias ? table_alias : tableName.name,
|
249
|
-
alias: table_alias,
|
250
|
-
parentRelation: '',
|
251
|
-
cardinality: 'one',
|
252
|
-
parentCardinality: 'one',
|
253
|
-
joinColumn: idColumn
|
254
|
-
};
|
255
|
-
if (join_constraint) { //index 0 is the FROM (root relation)
|
256
|
-
const expr = join_constraint.expr(); //ON expr
|
257
|
-
if (expr) {
|
258
|
-
traverse_expr(expr, Object.assign(Object.assign({}, traverseContext), { fromColumns: allFields }));
|
259
|
-
const allJoinColumsn = getAllColumns(expr);
|
260
|
-
allJoinColumsn.forEach(joinColumn => {
|
261
|
-
const column = allFields.find(col => col.columnName == joinColumn.name && (col.tableAlias == joinColumn.prefix || col.table == joinColumn.prefix));
|
262
|
-
const filterUniqueKeys = allFields.filter(col => (joinColumn.prefix == col.table || joinColumn.prefix == col.tableAlias) && (col.columnKey == 'PRI'));
|
263
|
-
const compositeKey = filterUniqueKeys.find(uni => uni.columnName == column.columnName);
|
264
|
-
const notUnique = (filterUniqueKeys.length > 1 && compositeKey) || ((column === null || column === void 0 ? void 0 : column.columnKey) != 'UNI' && (column === null || column === void 0 ? void 0 : column.columnKey) != 'PRI');
|
265
|
-
if (joinColumn.prefix != relation.name && joinColumn.prefix != relation.alias) {
|
266
|
-
relation.parentRelation = joinColumn.prefix;
|
267
|
-
if (notUnique) {
|
268
|
-
relation.parentCardinality = 'many';
|
269
|
-
}
|
270
|
-
}
|
271
|
-
if (joinColumn.prefix == relation.name || joinColumn.prefix == relation.alias) {
|
272
|
-
if (notUnique) {
|
273
|
-
relation.cardinality = 'many';
|
274
|
-
}
|
275
|
-
}
|
276
|
-
});
|
277
|
-
}
|
278
|
-
}
|
279
|
-
if (!traverseContext.subQuery) {
|
280
|
-
traverseContext.relations.push(relation);
|
281
|
-
}
|
282
296
|
}
|
283
297
|
const select_stmt = table_or_subquery.select_stmt();
|
284
298
|
if (select_stmt) {
|
285
|
-
const subQueryResult = traverse_select_stmt(select_stmt, traverseContext);
|
286
|
-
|
287
|
-
subQueryResult.columns.forEach(t => {
|
299
|
+
const subQueryResult = traverse_select_stmt(select_stmt, Object.assign(Object.assign({}, traverseContext), { subQuery: true }));
|
300
|
+
tableOrSubqueryFields = subQueryResult.columns.map(t => {
|
288
301
|
const colDef = {
|
289
302
|
table: t.table ? tableAlias || '' : '',
|
290
303
|
columnName: t.name,
|
@@ -293,13 +306,63 @@ function traverse_table_or_subquery(table_or_subquery_list, join_constraint_list
|
|
293
306
|
notNull: t.notNull,
|
294
307
|
tableAlias: tableAlias
|
295
308
|
};
|
296
|
-
|
309
|
+
return colDef;
|
297
310
|
});
|
311
|
+
allFields.push(...tableOrSubqueryFields);
|
298
312
|
}
|
299
|
-
const
|
300
|
-
if (
|
301
|
-
|
302
|
-
allFields.push(...
|
313
|
+
const table_or_subquery_list2 = table_or_subquery.table_or_subquery_list();
|
314
|
+
if (table_or_subquery_list2.length > 0) {
|
315
|
+
tableOrSubqueryFields = traverse_table_or_subquery(table_or_subquery_list2, null, null, traverseContext);
|
316
|
+
allFields.push(...tableOrSubqueryFields);
|
317
|
+
}
|
318
|
+
const idColumn = (_d = tableOrSubqueryFields.find(field => field.columnKey == 'PRI')) === null || _d === void 0 ? void 0 : _d.columnName;
|
319
|
+
const relation = {
|
320
|
+
name: asAlias ? table_alias : tableOrSubqueryName,
|
321
|
+
alias: table_alias,
|
322
|
+
parentRelation: '',
|
323
|
+
cardinality: 'one',
|
324
|
+
parentCardinality: 'one',
|
325
|
+
joinColumn: idColumn
|
326
|
+
};
|
327
|
+
if (join_constraint) { //index 0 is the FROM (root relation)
|
328
|
+
const expr = join_constraint.expr(); //ON expr
|
329
|
+
if (expr) {
|
330
|
+
traverse_expr(expr, Object.assign(Object.assign({}, traverseContext), { fromColumns: allFields }));
|
331
|
+
const allJoinColumsn = getAllColumns(expr);
|
332
|
+
allJoinColumsn.forEach(joinColumn => {
|
333
|
+
const column = allFields.find(col => col.columnName == joinColumn.name && (col.tableAlias == joinColumn.prefix || col.table == joinColumn.prefix));
|
334
|
+
const filterUniqueKeys = allFields.filter(col => (joinColumn.prefix == col.table || joinColumn.prefix == col.tableAlias) && (col.columnKey == 'PRI'));
|
335
|
+
const compositeKey = filterUniqueKeys.find(uni => uni.columnName == column.columnName);
|
336
|
+
const notUnique = (filterUniqueKeys.length > 1 && compositeKey) || ((column === null || column === void 0 ? void 0 : column.columnKey) != 'UNI' && (column === null || column === void 0 ? void 0 : column.columnKey) != 'PRI');
|
337
|
+
if (joinColumn.prefix != relation.name && joinColumn.prefix != relation.alias) {
|
338
|
+
relation.parentRelation = joinColumn.prefix;
|
339
|
+
if (notUnique) {
|
340
|
+
relation.parentCardinality = 'many';
|
341
|
+
}
|
342
|
+
}
|
343
|
+
if (joinColumn.prefix == relation.name || joinColumn.prefix == relation.alias) {
|
344
|
+
if (notUnique) {
|
345
|
+
relation.cardinality = 'many';
|
346
|
+
}
|
347
|
+
}
|
348
|
+
});
|
349
|
+
}
|
350
|
+
}
|
351
|
+
if (!traverseContext.subQuery) {
|
352
|
+
traverseContext.relations.push(relation);
|
353
|
+
//dynamic query
|
354
|
+
const fragment = (join_operator_list != null && index > 0 ? extractOriginalSql(join_operator_list[index - 1]) : 'FROM')
|
355
|
+
+ ' ' + extractOriginalSql(table_or_subquery_list[index])
|
356
|
+
+ (join_constraint != null ? ' ' + extractOriginalSql(join_constraint) : '');
|
357
|
+
const params = traverseContext.parameters.slice(numParamsBefore).map((_, index) => index + numParamsBefore);
|
358
|
+
traverseContext.dynamicSqlInfo2.from.push({
|
359
|
+
fragment: fragment,
|
360
|
+
relationName: relation.name,
|
361
|
+
relationAlias: relation.alias,
|
362
|
+
parentRelation: relation.parentRelation,
|
363
|
+
fields: tableOrSubqueryFields.map(field => field.columnName),
|
364
|
+
parameters: params
|
365
|
+
});
|
303
366
|
}
|
304
367
|
});
|
305
368
|
return allFields;
|
@@ -1183,6 +1246,7 @@ function traverse_insert_stmt(insert_stmt, traverseContext) {
|
|
1183
1246
|
const returninColumns = returning_clause ? traverse_returning_clause(returning_clause, fromColumns) : [];
|
1184
1247
|
const queryResult = {
|
1185
1248
|
queryType: 'Insert',
|
1249
|
+
constraints: traverseContext.constraints,
|
1186
1250
|
parameters: insertColumns,
|
1187
1251
|
columns: returninColumns,
|
1188
1252
|
returing: returning_clause != null
|
@@ -1241,8 +1305,10 @@ function traverse_update_stmt(update_stmt, traverseContext) {
|
|
1241
1305
|
});
|
1242
1306
|
const queryResult = {
|
1243
1307
|
queryType: 'Update',
|
1308
|
+
constraints: traverseContext.constraints,
|
1244
1309
|
columns: updateColumns,
|
1245
|
-
|
1310
|
+
whereParams: whereParams,
|
1311
|
+
parameters: traverseContext.parameters
|
1246
1312
|
};
|
1247
1313
|
return queryResult;
|
1248
1314
|
}
|
@@ -1253,7 +1319,8 @@ function traverse_delete_stmt(delete_stmt, traverseContext) {
|
|
1253
1319
|
traverse_expr(expr, Object.assign(Object.assign({}, traverseContext), { fromColumns }));
|
1254
1320
|
const queryResult = {
|
1255
1321
|
queryType: 'Delete',
|
1256
|
-
|
1322
|
+
constraints: traverseContext.constraints,
|
1323
|
+
parameters: traverseContext.parameters
|
1257
1324
|
};
|
1258
1325
|
return queryResult;
|
1259
1326
|
}
|
@@ -1272,4 +1339,27 @@ function filterUsingFields(fields, usingFields) {
|
|
1272
1339
|
const result = fields.filter(field => !usingFields.includes(field.columnName));
|
1273
1340
|
return result;
|
1274
1341
|
}
|
1342
|
+
function getParamsIndexes(parameters, paramsIds) {
|
1343
|
+
const map = new Map();
|
1344
|
+
parameters.forEach((param, index) => {
|
1345
|
+
map.set(param.paramIndex, index);
|
1346
|
+
});
|
1347
|
+
return paramsIds.map(id => map.get(id));
|
1348
|
+
}
|
1349
|
+
function getWhereFragmentExpressions(whereExpr) {
|
1350
|
+
const exprList = [];
|
1351
|
+
const likeExpr = whereExpr.LIKE_();
|
1352
|
+
if (likeExpr) {
|
1353
|
+
addExpr(exprList, likeExpr.parentCtx);
|
1354
|
+
}
|
1355
|
+
if (!whereExpr.LIKE_()) {
|
1356
|
+
exprList.push(...whereExpr.expr_list());
|
1357
|
+
}
|
1358
|
+
return exprList;
|
1359
|
+
}
|
1360
|
+
function addExpr(exprList, parentCtx) {
|
1361
|
+
if (parentCtx instanceof sqlite_1.ExprContext) {
|
1362
|
+
exprList.push(parentCtx);
|
1363
|
+
}
|
1364
|
+
}
|
1275
1365
|
//# sourceMappingURL=traverse.js.map
|