typesql-cli 0.8.24 → 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.
@@ -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
- function parseSql(sql, dbSchema) {
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
- return createSchemaDefinition(processedSql, sql_stmt, dbSchema, namedParameters, nested);
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 createSchemaDefinition(sql, sql_stmtContext, dbSchema, namedParameters, nestedQuery) {
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
- if ((0, Either_1.isLeft)(queryResultResult)) {
41
- return queryResultResult;
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
- traverseContext.parameters.forEach(param => {
73
+ queryResult.parameters.forEach(param => {
48
74
  paramsById.set(param.type.id, param);
49
75
  });
50
76
  groupedByName.forEach(sameNameList => {
51
- let notNull = traverseContext.parameters[0].notNull; //param is not null if any param with same name is not null
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 || traverseContext.parameters[index].notNull;
54
- traverseContext.constraints.push({
55
- expression: traverseContext.parameters[0].name,
56
- type1: traverseContext.parameters[0].type,
57
- type2: traverseContext.parameters[index].type
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
- traverseContext.parameters[index].notNull = notNull || traverseContext.parameters[index].notNull;
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)(traverseContext.constraints, substitutions);
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 = traverseContext.parameters.map((param, index) => {
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: traverseContext.parameters[index].paramIndex
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.params.map((param, index) => {
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.params.map((param, index) => {
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: ' + sql_stmtContext.getText()
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":"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"}
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,EAAa,eAAe,EAA2C,MAAM,+BAA+B,CAAC;AAG/H,OAAO,EAAsE,eAAe,EAAmC,MAAM,kCAAkC,CAAC;AAExK,OAAO,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA2BxC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,GAAG,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CAa9I;AA8+BD,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"}
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: col.tableAlias || col.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
- const asAlias = table_or_subquery.AS_() || false;
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(fields, usingFields) : fields;
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
- const tableAlias = (_d = table_or_subquery.table_alias()) === null || _d === void 0 ? void 0 : _d.getText();
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
- allFields.push(colDef);
309
+ return colDef;
297
310
  });
311
+ allFields.push(...tableOrSubqueryFields);
298
312
  }
299
- const table_or_subquery_list = table_or_subquery.table_or_subquery_list();
300
- if (table_or_subquery_list.length > 0) {
301
- const fields = traverse_table_or_subquery(table_or_subquery_list, null, null, traverseContext);
302
- allFields.push(...fields);
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
- params: whereParams
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
- params: traverseContext.parameters
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