UNPKG

orange-orm

Version:

Object Relational Mapper

44 lines (37 loc) 1.09 kB
const negotiateRawSqlFilter = require('../column/negotiateRawSqlFilter'); function newWhere(_relations, _depth) { function where(context, fn) { const includeMany = false; let { relations, alias } = extract(includeMany, _relations); const table = relations[relations.length - 1].childTable; if (!relations[0].isMany || includeMany) table._rootAlias = alias; try { let arg = typeof fn === 'function' ? fn(table) : fn; let anyFilter = negotiateRawSqlFilter(context, arg, table, true); delete table._rootAlias; return anyFilter; } catch (e) { delete table._rootAlias; throw e; } } return where; function extract(includeMany, relations) { let alias = relations[0].toLeg().table._dbName; let result = []; for (let i = 0; i < relations.length; i++) { if (relations[i].isMany && !includeMany) { result = [relations[i]]; alias = relations[i].toLeg().table._dbName; } else { result.push(relations[i]); alias += relations[i].toLeg().name; } } return { relations: result, alias }; } } module.exports = newWhere;