UNPKG

orange-orm

Version:

Object Relational Mapper

20 lines (15 loc) 698 B
const getSessionSingleton = require('../getSessionSingleton'); var newJoinArray = require('./joinSqlArray'); function columnAggregate(context, operator, column, relations, coalesce = true) { const quote = getSessionSingleton(context, 'quote'); let tableAlias = relations.reduce((prev,relation) => { return prev + relation.toLeg().name; }, 'z'); tableAlias = quote(tableAlias); const columnName = quote(column._dbName); return { expression: (alias) => coalesce ? `COALESCE(${operator}(${tableAlias}.${columnName}), 0) as ${quote(alias)}` : `${operator}(${tableAlias}.${columnName}) as ${quote(alias)}`, joins: newJoinArray(context, relations) }; } module.exports = columnAggregate;