mythix-orm-sql-base 1.3.0 → 1.3.3
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.
|
|
88
|
+
if (!this.isFieldIdentifier(fieldPart))
|
|
93
89
|
projectionFieldMap.set(fieldPart, fieldPart);
|
|
94
90
|
}
|
|
95
91
|
|
|
@@ -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.
|
|
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.
|
|
3
|
+
"version": "1.3.3",
|
|
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.
|
|
36
|
+
"mythix-orm": "^1.4.7"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"nife": "^1.11.3",
|