UNPKG

orange-orm

Version:

Object Relational Mapper

40 lines (35 loc) 917 B
function newAggregate(_relations) { function aggregate(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 { const query = fn(table); delete table._rootAlias; return query; } catch (e) { delete table._rootAlias; throw e; } } return aggregate; 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 = newAggregate;