status
This commit is contained in:
parent
b16209f23e
commit
4e33cc471f
6 changed files with 35 additions and 23 deletions
|
@ -704,38 +704,42 @@ module.exports.update = (id, updates, callback) => {
|
|||
}
|
||||
|
||||
connection.query('SELECT `type`, `source_url` FROM campaigns WHERE id=? LIMIT 1', [id], (err, rows) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
if (!rows || !rows[0] || rows[0].type !== 2) {
|
||||
// if not RSS, then nothing to do here
|
||||
connection.release();
|
||||
return callback(null, affected);
|
||||
}
|
||||
|
||||
// update seen rss entries to avoid sending old entries to subscribers
|
||||
feed.fetch(rows[0].source_url, (err, entries) => {
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
let query = 'INSERT IGNORE INTO `rss` (`parent`,`guid`,`pubdate`) VALUES ' + entries.map(() => '(?,?,?)').join(',');
|
||||
|
||||
values = [];
|
||||
entries.forEach(entry => {
|
||||
values.push(id, entry.guid, entry.date);
|
||||
});
|
||||
|
||||
connection.query(query, values, err => {
|
||||
connection.release();
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
// too late to report as failed
|
||||
log.error('RSS', err);
|
||||
return callback(err);
|
||||
}
|
||||
return callback(null, affected);
|
||||
|
||||
let query = 'INSERT IGNORE INTO `rss` (`parent`,`guid`,`pubdate`) VALUES ' + entries.map(() => '(?,?,?)').join(',');
|
||||
|
||||
values = [];
|
||||
entries.forEach(entry => {
|
||||
values.push(id, entry.guid, entry.date);
|
||||
});
|
||||
|
||||
connection.query(query, values, err => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
// too late to report as failed
|
||||
log.error('RSS', err);
|
||||
}
|
||||
return callback(null, affected);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -830,8 +834,8 @@ module.exports.pause = (id, callback) => {
|
|||
|
||||
// campaigns marked as status=4 are paused
|
||||
connection.query('UPDATE campaigns SET `status`=4, `status_change`=NOW() WHERE id=? LIMIT 1', [id], err => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
caches.cache.delete('sender queue');
|
||||
|
@ -904,8 +908,8 @@ module.exports.activate = (id, callback) => {
|
|||
|
||||
// campaigns marked as status=5 are paused
|
||||
connection.query('UPDATE campaigns SET `status`=6, `status_change`=NOW() WHERE id=? LIMIT 1', [id], err => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
return callback(null, true);
|
||||
|
@ -931,8 +935,8 @@ module.exports.inactivate = (id, callback) => {
|
|||
|
||||
// campaigns marked as status=6 are paused
|
||||
connection.query('UPDATE campaigns SET `status`=5, `status_change`=NOW() WHERE id=? LIMIT 1', [id], err => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
return callback(null, true);
|
||||
|
|
|
@ -49,6 +49,7 @@ module.exports.countClick = (remoteIp, campaignCid, listCid, subscriptionCid, li
|
|||
|
||||
connection.beginTransaction(err => {
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
|
@ -160,6 +161,7 @@ module.exports.countOpen = (remoteIp, campaignCid, listCid, subscriptionCid, cal
|
|||
|
||||
connection.beginTransaction(err => {
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
|
|
|
@ -357,6 +357,7 @@ module.exports.insert = (listId, meta, subscription, callback) => {
|
|||
|
||||
connection.beginTransaction(err => {
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
|
@ -682,6 +683,7 @@ module.exports.changeStatus = (id, listId, campaignId, status, callback) => {
|
|||
}
|
||||
connection.beginTransaction(err => {
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
|
@ -854,6 +856,7 @@ module.exports.delete = (listId, cid, callback) => {
|
|||
|
||||
connection.beginTransaction(err => {
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ module.exports.getQuery = (id, callback) => {
|
|||
}
|
||||
|
||||
let limit = 300;
|
||||
let treshold = 3600 * 24; // time..NOW..time+24h
|
||||
let treshold = 3600 * 6; // time..NOW..time+6h, 6 hour window after trigger target to detect it
|
||||
|
||||
let intervalQuery = (column, seconds, treshold) => column + ' <= NOW() - INTERVAL ' + seconds + ' SECOND AND ' + column + ' >= NOW() - INTERVAL ' + (treshold + seconds) + ' SECOND';
|
||||
|
||||
|
@ -320,8 +320,8 @@ module.exports.delete = (id, callback) => {
|
|||
}
|
||||
|
||||
connection.query('DELETE FROM triggers WHERE id=? LIMIT 1', [id], (err, result) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
|
@ -337,11 +337,11 @@ module.exports.delete = (id, callback) => {
|
|||
};
|
||||
|
||||
function createTriggerTable(id, callback) {
|
||||
let query = 'CREATE TABLE `trigger__' + id + '` LIKE `trigger`';
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
let query = 'CREATE TABLE `trigger__' + id + '` LIKE `trigger`';
|
||||
connection.query(query, err => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
|
@ -353,11 +353,11 @@ function createTriggerTable(id, callback) {
|
|||
}
|
||||
|
||||
function removeTriggerTable(id, callback) {
|
||||
let query = 'DROP TABLE IF EXISTS `trigger__' + id + '`';
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
let query = 'DROP TABLE IF EXISTS `trigger__' + id + '`';
|
||||
connection.query(query, err => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
|
|
|
@ -170,10 +170,11 @@ function findUnsent(callback) {
|
|||
|
||||
if (!rows || !rows.length) {
|
||||
// everything already processed for this campaign
|
||||
return connection.query('UPDATE campaigns SET `status`=3, `status_change`=NOW() WHERE id=? LIMIT 1', [campaign.id], () => {
|
||||
connection.query('UPDATE campaigns SET `status`=3, `status_change`=NOW() WHERE id=? LIMIT 1', [campaign.id], () => {
|
||||
connection.release();
|
||||
return callback(null, false);
|
||||
});
|
||||
return;
|
||||
}
|
||||
connection.release();
|
||||
|
||||
|
|
|
@ -68,12 +68,14 @@ function fireTrigger(trigger, callback) {
|
|||
}
|
||||
|
||||
if (!rows || !rows.length) {
|
||||
connection.release();
|
||||
return callback(null, trigger.id);
|
||||
}
|
||||
|
||||
let pos = 0;
|
||||
let insertNext = () => {
|
||||
if (pos >= rows.length) {
|
||||
connection.release();
|
||||
return callback(null, trigger.id);
|
||||
}
|
||||
let subscriber = rows[pos++].id;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue