This commit is contained in:
Andris Reinman 2016-06-22 15:25:36 +03:00
parent b16209f23e
commit 4e33cc471f
6 changed files with 35 additions and 23 deletions

View file

@ -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);