mythix-orm
Advanced tools
Comparing version 1.5.0 to 1.5.1
@@ -71,4 +71,5 @@ 'use strict'; | ||
let sourceQuery = queryEngine._getRawQuery(); | ||
let currentModel = thisQueryContext.Model; | ||
let sourceQuery = queryEngine._getRawQuery(); | ||
let currentModel = thisQueryContext.Model; | ||
let skipLogicalOperators = true; | ||
@@ -92,8 +93,25 @@ for (let i = 0, il = sourceQuery.length; i < il; i++) { | ||
// Skip unneeded duplicate model entries | ||
if (mergeContext.operator === 'MODEL') { | ||
if (mergeContext.Model === currentModel) | ||
// For merges, we want to skip the first logical operators | ||
// found before any other operation. | ||
// This is because one might do a: Model.where.OR.MERGE(Model.AND.field.EQ()). | ||
// This query, once merged, would be: Model.where.OR.Model.AND.field.EQ(), | ||
// which is not what we want... instead we want: Model.where.OR.Model.field.EQ(). | ||
// Since the result we want here is OR merge, not AND merge | ||
// we skip the first "AND" we encounter, leaving the "OR" as | ||
// the current logical operator. | ||
if (skipLogicalOperators && Object.prototype.hasOwnProperty.call(mergeContext, 'logical') && mergeContext.logical) { | ||
if (mergeContext.value == null && (mergeContext.operator === 'AND' || mergeContext.operator === 'OR')) | ||
continue; | ||
} | ||
currentModel = mergeContext.Model; | ||
if (Object.prototype.hasOwnProperty.call(mergeContext, 'operator')) { | ||
// Skip unneeded duplicate model entries | ||
if (mergeContext.operator === 'MODEL') { | ||
if (mergeContext.Model === currentModel) | ||
continue; | ||
currentModel = mergeContext.Model; | ||
} else if (mergeContext.operator !== 'FIELD') { | ||
skipLogicalOperators = false; | ||
} | ||
} | ||
@@ -100,0 +118,0 @@ |
{ | ||
"name": "mythix-orm", | ||
"version": "1.5.0", | ||
"version": "1.5.1", | ||
"description": "ORM for Mythix framework", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
401027
8552