Fix ANY match segments with range queries

This commit is contained in:
Andris Reinman 2016-06-24 14:53:30 +03:00
parent c3ec92d14f
commit 3182566526

View file

@ -575,14 +575,18 @@ module.exports.getQuery = (id, prefix, callback) => {
break;
case 'number':
if (rule.value.range) {
let ruleval = '';
if (rule.value.start) {
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
ruleval = prefix + '`' + rule.columnType.column + '` >= ?';
values.push(rule.value.start);
}
if (rule.value.end) {
query.push(prefix + '`' + rule.columnType.column + '` < ?');
ruleval = (ruleval ? '(' + ruleval + ' AND ' : '') + prefix + '`' + rule.columnType.column + '` < ?' + (ruleval ? ')' : '');
values.push(rule.value.end);
}
if (ruleval) {
query.push(ruleval);
}
} else {
query.push(prefix + '`' + rule.columnType.column + '` = ?');
values.push(rule.value.value);
@ -592,38 +596,37 @@ module.exports.getQuery = (id, prefix, callback) => {
if (rule.value.range) {
let start = rule.value.start || '01-01';
let end = rule.value.end || '12-31';
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
query.push('(' + prefix + '`' + rule.columnType.column + '` >= ? AND ' + prefix + '`' + rule.columnType.column + '` < ?)');
values.push(getDate('2000-' + start));
query.push(prefix + '`' + rule.columnType.column + '` < ?');
values.push(getDate('2000-' + end, true));
} else {
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
query.push(prefix + '`' + rule.columnType.column + '` < ?');
query.push('(' + prefix + '`' + rule.columnType.column + '` >= ? AND ' + prefix + '`' + rule.columnType.column + '` < ?)');
values.push(getDate('2000-' + rule.value.value));
values.push(getDate('2000-' + rule.value.value, true));
}
break;
case 'date':
if (rule.value.relativeRange) {
query.push('(' + prefix + '`' + rule.columnType.column + '` >= ? AND ' + prefix + '`' + rule.columnType.column + '` < ?)');
// start
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
values.push(getDate(getRelativeDate(rule.value.start, rule.value.startDirection)));
// end
query.push(prefix + '`' + rule.columnType.column + '` < ?');
values.push(getDate(getRelativeDate(rule.value.end, rule.value.endDirection), true));
} else if (rule.value.range) {
let ruleval = '';
if (rule.value.start) {
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
ruleval = prefix + '`' + rule.columnType.column + '` >= ?';
values.push(getDate(rule.value.start));
}
if (rule.value.end) {
query.push(prefix + '`' + rule.columnType.column + '` < ?');
ruleval = (ruleval ? '(' + ruleval + ' AND ' : '') + prefix + '`' + rule.columnType.column + '` < ?' + (ruleval ? ')' : '');
values.push(getDate(rule.value.end, true));
}
if (ruleval) {
query.push(ruleval);
}
} else {
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
query.push(prefix + '`' + rule.columnType.column + '` < ?');
query.push('(' + prefix + '`' + rule.columnType.column + '` >= ? AND ' + prefix + '`' + rule.columnType.column + '` < ?)');
values.push(getDate(rule.value.value));
values.push(getDate(rule.value.value, true));
}