mythix-orm-sql-base 1.3.1 → 1.4.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.
@@ -70,10 +70,6 @@ class SQLQueryGeneratorBase extends QueryGeneratorBase {
70
70
  return `${modelName}:${fieldName}`;
71
71
  };
72
72
 
73
- isFieldProjection(str) {
74
- return (/^"[^"]+"."[^"]+"|"\w+:[\w.]+"/i).test(str);
75
- }
76
-
77
73
  parseFieldProjectionToFieldMap(selectStatement) {
78
74
  let firstPart = selectStatement.replace(/[\r\n]/g, ' ').split(/\s+FROM\s+/i)[0].replace(/^SELECT\s+/i, '').trim();
79
75
  let fieldParts = firstPart.split(',');
@@ -89,7 +85,7 @@ class SQLQueryGeneratorBase extends QueryGeneratorBase {
89
85
  projectionFieldMap.set(field, field);
90
86
 
91
87
  // If this isn't a field, then add it
92
- if (!this.isFieldProjection(fieldPart))
88
+ if (!this.isFieldIdentifier(fieldPart))
93
89
  projectionFieldMap.set(fieldPart, fieldPart);
94
90
  }
95
91
 
@@ -313,7 +309,7 @@ class SQLQueryGeneratorBase extends QueryGeneratorBase {
313
309
  let modelNames = Array.from(joins.keys());
314
310
 
315
311
  return Utils.sortModelNamesByDependencyOrder(this.connection, modelNames, (Model, modelName) => {
316
- let joinInfos = joins.get(modelName);
312
+ let joinInfos = joins.get(modelName) || [];
317
313
  let dependencies = [];
318
314
 
319
315
  for (let i = 0, il = joinInfos.length; i < il; i++) {
@@ -454,6 +450,11 @@ class SQLQueryGeneratorBase extends QueryGeneratorBase {
454
450
  return sqlParts.join(' ');
455
451
  }
456
452
 
453
+ // eslint-disable-next-line no-unused-vars
454
+ allowOrderFieldWhenNotProjected(orderField, options) {
455
+ return true;
456
+ }
457
+
457
458
  // eslint-disable-next-line no-unused-vars
458
459
  generateOrderClause(_orders, _options) {
459
460
  if (LiteralBase.isLiteral(_orders))
@@ -479,7 +480,7 @@ class SQLQueryGeneratorBase extends QueryGeneratorBase {
479
480
  let fieldName = orderField.Field.fieldName;
480
481
  let fqFieldName = `${modelName}:${fieldName}`;
481
482
 
482
- if (!options.projectionFields.has(fqFieldName))
483
+ if (!options.projectionFields.has(fqFieldName) && !this.allowOrderFieldWhenNotProjected(orderField, options))
483
484
  continue;
484
485
  }
485
486
 
@@ -1055,6 +1056,8 @@ class SQLQueryGeneratorBase extends QueryGeneratorBase {
1055
1056
  queryEngine = Utils.buildQueryFromModelsAttributes(Model, models);
1056
1057
  if (!queryEngine)
1057
1058
  throw new Error(`${this.constructor.name}::generateDeleteStatement: Data provided for "${Model.getModelName()}" model is insufficient to complete operation.`);
1059
+ } else {
1060
+ queryEngine = queryEngine.clone();
1058
1061
  }
1059
1062
  }
1060
1063
 
@@ -1065,9 +1068,9 @@ class SQLQueryGeneratorBase extends QueryGeneratorBase {
1065
1068
 
1066
1069
  if (where && pkField) {
1067
1070
  if (pkField)
1068
- queryEngine = queryEngine.clone().PROJECT(`${Model.getModelName()}:${pkField.fieldName}`);
1071
+ queryEngine = queryEngine.PROJECT(`${Model.getModelName()}:${pkField.fieldName}`);
1069
1072
 
1070
- let innerSelect = this.generateSelectStatement(queryEngine, this.stackAssign(options, { noProjectionAliases: true }));
1073
+ let innerSelect = this.generateSelectStatement(queryEngine, this.stackAssign(options, { isSubQuery: true, noProjectionAliases: true }));
1071
1074
  let escapedColumnName = this.getEscapedColumnName(Model, pkField, options);
1072
1075
 
1073
1076
  return `DELETE FROM ${escapedTableName} WHERE ${escapedColumnName} IN (${innerSelect})`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mythix-orm-sql-base",
3
- "version": "1.3.1",
3
+ "version": "1.4.0",
4
4
  "description": "SQL base support for Mythix ORM",
5
5
  "main": "lib/index.js",
6
6
  "type": "commonjs",
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "homepage": "https://github.com/th317erd/mythix-orm-sql-base#readme",
35
35
  "peerDependencies": {
36
- "mythix-orm": "^1.4.5"
36
+ "mythix-orm": "^1.5.0"
37
37
  },
38
38
  "dependencies": {
39
39
  "nife": "^1.11.3",