mythix-orm
Advanced tools
Comparing version 1.5.5 to 1.5.6
@@ -124,2 +124,19 @@ 'use strict'; | ||
isLimitSupportedInContext(options) { | ||
return true; | ||
} | ||
isOrderSupportedInContext(_options) { | ||
let options = _options || {}; | ||
if (options.isSubQuery) { | ||
let subQueryOperator = options.subQueryOperator; | ||
if (subQueryOperator === 'EXISTS' || subQueryOperator === 'NOT EXISTS') | ||
return true; | ||
return 'PROJECTION_ONLY'; | ||
} | ||
return true; | ||
} | ||
_getFromModelCache(Model, key, defaultValue) { | ||
@@ -328,2 +345,13 @@ let cache = this._modelCache.get(Model); | ||
_fieldLiteralToString(literal, options) { | ||
if (!literal || !LiteralBase.isLiteral(literal)) | ||
return; | ||
let queryGenerator = this.getQueryGenerator(); | ||
if (!queryGenerator) | ||
return; | ||
return queryGenerator._fieldLiteralToString(literal, options); | ||
} | ||
_maxLiteralToString(literal, options) { | ||
@@ -369,2 +397,4 @@ if (!literal || !LiteralBase.isLiteral(literal)) | ||
return this._distinctLiteralToString(literal, options); | ||
else if (Literals.FieldLiteral.isLiteralType(literal)) | ||
return this._fieldLiteralToString(literal, options); | ||
else if (Literals.MaxLiteral.isLiteralType(literal)) | ||
@@ -371,0 +401,0 @@ return this._maxLiteralToString(literal, options); |
'use strict'; | ||
const LiteralBase = require('./literal-base'); | ||
const LiteralFieldBase = require('./literal-field-base'); | ||
const Literal = require('./literal'); | ||
const AverageLiteral = require('./average-literal'); | ||
const CountLiteral = require('./count-literal'); | ||
const MaxLiteral = require('./max-literal'); | ||
const MinLiteral = require('./min-literal'); | ||
const DistinctLiteral = require('./distinct-literal'); | ||
const SumLiteral = require('./sum-literal'); | ||
const AverageLiteral = require('./average-literal'); | ||
const CountLiteral = require('./count-literal'); | ||
const DistinctLiteral = require('./distinct-literal'); | ||
const FieldLiteral = require('./field-literal'); | ||
const Literal = require('./literal'); | ||
const LiteralBase = require('./literal-base'); | ||
const LiteralFieldBase = require('./literal-field-base'); | ||
const MaxLiteral = require('./max-literal'); | ||
const MinLiteral = require('./min-literal'); | ||
const SumLiteral = require('./sum-literal'); | ||
module.exports = { | ||
AverageLiteral, | ||
CountLiteral, | ||
DistinctLiteral, | ||
FieldLiteral, | ||
Literal, | ||
LiteralBase, | ||
LiteralFieldBase, | ||
Literal, | ||
AverageLiteral, | ||
CountLiteral, | ||
MaxLiteral, | ||
MinLiteral, | ||
DistinctLiteral, | ||
SumLiteral, | ||
}; |
@@ -49,7 +49,2 @@ 'use strict'; | ||
getTableNameFromQueryPart(queryPart) { | ||
let Model = queryPart.Model; | ||
return Model.getTableName(this.connection); | ||
} | ||
getEscapedFieldName(_Model, field, options) { | ||
@@ -77,8 +72,21 @@ let isString = Nife.instanceOf(field, 'string'); | ||
if (options && options.columnNamePrefix) | ||
columnName = `${options.columnNamePrefix}${columnName}`; | ||
if (!Model || (options && options.columnNameOnly === true)) | ||
return this.escapeID(columnName); | ||
else | ||
return `${this.escapeID(Model.getTableName(this.connection))}.${this.escapeID(columnName)}`; | ||
return `${this.getEscapedTableName(Model)}.${this.escapeID(columnName)}`; | ||
} | ||
getEscapedTableName(_modelOrField, options) { | ||
let Model = (_modelOrField.Model) ? _modelOrField.Model : _modelOrField; | ||
let tableName = Model.getTableName(this.connection); | ||
if (options && options.tableNamePrefix) | ||
tableName = `${options.tableNamePrefix}${tableName}`; | ||
return this.escapeID(tableName); | ||
} | ||
// eslint-disable-next-line no-unused-vars | ||
@@ -366,3 +374,4 @@ getEscapedProjectionName(Model, field, options) { | ||
if (options && options.isSubQuery) { | ||
let subQueryOperator = (options && options.subQueryOperator); | ||
if (options && options.isSubQuery && !(subQueryOperator === 'EXISTS' || subQueryOperator === 'NOT EXISTS')) { | ||
// If we are sub-selecting then only one | ||
@@ -779,15 +788,2 @@ // field in the projection is allowed | ||
queryHasConditions(query) { | ||
for (let i = 0, il = query.length; i < il; i++) { | ||
let queryPart = query[i]; | ||
if (!Object.prototype.hasOwnProperty.call(queryPart, 'condition')) | ||
continue; | ||
if (queryPart.condition === true) | ||
return true; | ||
} | ||
return false; | ||
} | ||
getQuerySliceFromQueryPart(queryPart) { | ||
@@ -845,2 +841,13 @@ let queryRoot = queryPart.queryRoot; | ||
_fieldLiteralToString(literal, options) { | ||
if (!literal || !LiteralBase.isLiteral(literal)) | ||
return; | ||
let field = literal.getField(this.connection); | ||
if (LiteralBase.isLiteral(field)) | ||
return field.toString(this.connection, options); | ||
return this.getEscapedColumnName(field.Model, field, this.stackAssign(options, literal.options)); | ||
} | ||
_maxLiteralToString(literal, options) { | ||
@@ -847,0 +854,0 @@ if (!literal || !LiteralBase.isLiteral(literal)) |
@@ -16,2 +16,3 @@ 'use strict'; | ||
value: this._fetchOperatorValue(value), | ||
hasCondition: true, | ||
}; | ||
@@ -18,0 +19,0 @@ |
@@ -259,2 +259,18 @@ 'use strict'; | ||
_queryHasConditions() { | ||
let context = this._getRawQueryContext(); | ||
return context.hasCondition; | ||
} | ||
_queryHasJoins() { | ||
let queryParts = this._getRawQuery(); | ||
for (let i = 0, il = queryParts.length; i < il; i++) { | ||
let queryPart = queryParts[i]; | ||
if (QueryEngineBase.isQuery(queryPart.value) && !queryPart.value.hasCondition) | ||
return true; | ||
} | ||
return false; | ||
} | ||
_debugQuery() { | ||
@@ -261,0 +277,0 @@ let query = this._getRawQuery(); |
{ | ||
"name": "mythix-orm", | ||
"version": "1.5.5", | ||
"version": "1.5.6", | ||
"description": "ORM for Mythix framework", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
450406
81
9754