UNPKG

orange-orm

Version:

Object Relational Mapper

29 lines (25 loc) 970 B
const newDiscriminatorSql = require('./newDiscriminatorSql'); const newParameterized = require('../../newParameterized'); const getSessionSingleton = require('../../../getSessionSingleton'); function _new(context, rightTable, leftColumns, rightColumns, leftAlias, rightAlias, filter) { const quote = getSessionSingleton(context, 'quote'); leftAlias = quote(leftAlias); rightAlias = quote(rightAlias); var sql = ''; var delimiter = ''; for (var i = 0; i < leftColumns.length; i++) { addColumn(i); delimiter = ' AND '; } function addColumn(index) { var leftColumn = leftColumns[index]; var rightColumn = rightColumns[index]; sql += delimiter + leftAlias + '.' + quote(leftColumn._dbName) + '=' + rightAlias + '.' + quote(rightColumn._dbName); } sql += newDiscriminatorSql(context, rightTable, rightAlias); var result = newParameterized(sql); if (filter) result = result.append(delimiter).append(filter); return result; } module.exports = _new;