orange-orm
Version:
Object Relational Mapper
37 lines (32 loc) • 915 B
JavaScript
const getSessionSingleton = require('../../getSessionSingleton');
function newDiscriminatorSql(context, table, alias) {
const quote = getSessionSingleton(context, 'quote');
alias = quote(alias);
var result = '';
var formulaDiscriminators = table._formulaDiscriminators;
var columnDiscriminators = table._columnDiscriminators;
addFormula();
addColumn();
return result;
function addFormula() {
for (var i = 0; i<formulaDiscriminators.length; i++) {
var current = formulaDiscriminators[i].replace('@this',alias);
and();
result += '(' + current + ')';
}
}
function addColumn() {
for (var i = 0; i< columnDiscriminators.length; i++) {
var current = columnDiscriminators[i].split('=');
and();
result += alias + '.' + quote(current[0]) + '=' + current[1];
}
}
function and() {
if(result)
result += ' AND ';
else
result = ' ';
}
}
module.exports = newDiscriminatorSql;