Fix ANY match segments with range queries
This commit is contained in:
parent
c3ec92d14f
commit
3182566526
1 changed files with 16 additions and 13 deletions
|
@ -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));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue