Fetch multiple unsent messages at once to speed up delivery
This commit is contained in:
parent
9a5d723663
commit
f29a8a1b67
9 changed files with 184 additions and 77 deletions
|
@ -512,7 +512,7 @@ module.exports.deleteRule = (id, callback) => {
|
|||
});
|
||||
};
|
||||
|
||||
module.exports.getQuery = (id, callback) => {
|
||||
module.exports.getQuery = (id, prefix, callback) => {
|
||||
module.exports.get(id, (err, segment) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
|
@ -522,6 +522,8 @@ module.exports.getQuery = (id, callback) => {
|
|||
return callback(new Error('Segment not found'));
|
||||
}
|
||||
|
||||
prefix = prefix ? prefix + '.' : '';
|
||||
|
||||
let query = [];
|
||||
let values = [];
|
||||
|
||||
|
@ -539,25 +541,25 @@ module.exports.getQuery = (id, callback) => {
|
|||
segment.rules.forEach(rule => {
|
||||
switch (rule.columnType.type) {
|
||||
case 'string':
|
||||
query.push('`' + rule.columnType.column + '` LIKE ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` LIKE ?');
|
||||
values.push(rule.value.value);
|
||||
break;
|
||||
case 'boolean':
|
||||
query.push('`' + rule.columnType.column + '` = ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` = ?');
|
||||
values.push(rule.value.value);
|
||||
break;
|
||||
case 'number':
|
||||
if (rule.value.range) {
|
||||
if (rule.value.start) {
|
||||
query.push('`' + rule.columnType.column + '` >= ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
|
||||
values.push(rule.value.start);
|
||||
}
|
||||
if (rule.value.end) {
|
||||
query.push('`' + rule.columnType.column + '` < ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` < ?');
|
||||
values.push(rule.value.end);
|
||||
}
|
||||
} else {
|
||||
query.push('`' + rule.columnType.column + '` = ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` = ?');
|
||||
values.push(rule.value.value);
|
||||
}
|
||||
break;
|
||||
|
@ -565,13 +567,13 @@ module.exports.getQuery = (id, callback) => {
|
|||
if (rule.value.range) {
|
||||
let start = rule.value.start || '01-01';
|
||||
let end = rule.value.end || '12-31';
|
||||
query.push('`' + rule.columnType.column + '` >= ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
|
||||
values.push(getDate('2000-' + start));
|
||||
query.push('`' + rule.columnType.column + '` < ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` < ?');
|
||||
values.push(getDate('2000-' + end, true));
|
||||
} else {
|
||||
query.push('`' + rule.columnType.column + '` >= ?');
|
||||
query.push('`' + rule.columnType.column + '` < ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` < ?');
|
||||
values.push(getDate('2000-' + rule.value.value));
|
||||
values.push(getDate('2000-' + rule.value.value, true));
|
||||
}
|
||||
|
@ -579,16 +581,16 @@ module.exports.getQuery = (id, callback) => {
|
|||
case 'date':
|
||||
if (rule.value.range) {
|
||||
if (rule.value.start) {
|
||||
query.push('`' + rule.columnType.column + '` >= ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
|
||||
values.push(getDate(rule.value.start));
|
||||
}
|
||||
if (rule.value.end) {
|
||||
query.push('`' + rule.columnType.column + '` < ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` < ?');
|
||||
values.push(getDate(rule.value.end, true));
|
||||
}
|
||||
} else {
|
||||
query.push('`' + rule.columnType.column + '` >= ?');
|
||||
query.push('`' + rule.columnType.column + '` < ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` >= ?');
|
||||
query.push(prefix + '`' + rule.columnType.column + '` < ?');
|
||||
values.push(getDate(rule.value.value));
|
||||
values.push(getDate(rule.value.value, true));
|
||||
}
|
||||
|
@ -612,7 +614,7 @@ module.exports.subscribers = (id, onlySubscribed, callback) => {
|
|||
if (!segment) {
|
||||
return callback(new Error('Segment not found'));
|
||||
}
|
||||
module.exports.getQuery(id, (err, queryData) => {
|
||||
module.exports.getQuery(id, false, (err, queryData) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
|
|
@ -122,7 +122,7 @@ module.exports.filter = (listId, request, columns, segmentId, callback) => {
|
|||
};
|
||||
|
||||
if (segmentId) {
|
||||
segments.getQuery(segmentId, (err, queryData) => {
|
||||
segments.getQuery(segmentId, false, (err, queryData) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue