Added initial support for trigger based automation

This commit is contained in:
Andris Reinman 2016-06-03 13:15:33 +03:00
parent cc1c70d57f
commit b16209f23e
36 changed files with 2025 additions and 263 deletions

View file

@ -21,7 +21,7 @@ module.exports.list = (start, limit, callback) => {
return callback(err);
}
connection.query('SELECT SQL_CALC_FOUND_ROWS * FROM campaigns ORDER BY name LIMIT ? OFFSET ?', [limit, start], (err, rows) => {
connection.query('SELECT SQL_CALC_FOUND_ROWS * FROM campaigns ORDER BY scheduled DESC LIMIT ? OFFSET ?', [limit, start], (err, rows) => {
if (err) {
connection.release();
return callback(err);
@ -122,8 +122,8 @@ module.exports.filter = (request, parent, callback) => {
processQuery({
// only find normal and RSS parent campaigns at this point
where: '`type` IN (?,?)',
values: [1, 2]
where: '`type` IN (?,?,?)',
values: [1, 2, 4]
});
}
};
@ -428,6 +428,9 @@ module.exports.create = (campaign, opts, callback) => {
}
switch ((campaign.type || '').toString().trim().toLowerCase()) {
case 'triggered':
campaign.type = 4;
break;
case 'rss':
campaign.type = 2;
break;
@ -453,13 +456,26 @@ module.exports.create = (campaign, opts, callback) => {
return callback(new Error('RSS URL must be set and needs to be a valid URL'));
}
lists.get(campaign.list, (err, list) => {
let getList = (listId, callback) => {
if (campaign.type === 4) {
return callback(null, false);
}
lists.get(listId, (err, list) => {
if (err) {
return callback(err);
}
if (!list) {
return callback(new Error('Selected list not found'));
}
return callback(null, list);
});
};
getList(campaign.list, err => {
if (err) {
return callback(err);
}
if (!list) {
return callback(new Error('Selected list not found'));
}
let keys = ['name', 'type'];
let values = [name, campaign.type];
@ -474,6 +490,11 @@ module.exports.create = (campaign, opts, callback) => {
values.push(2, opts.parent);
}
if (campaign.type === 4) {
keys.push('status');
values.push(6); // active
}
let create = next => {
Object.keys(campaign).forEach(key => {
let value = typeof campaign[key] === 'number' ? campaign[key] : (campaign[key] || '').toString().trim();
@ -623,13 +644,22 @@ module.exports.update = (id, updates, callback) => {
campaign.segment = 0;
}
lists.get(campaign.list, (err, list) => {
let getList = (listId, callback) => {
lists.get(listId, (err, list) => {
if (err) {
return callback(err);
}
if (!list) {
return callback(new Error('Selected list not found'));
}
return callback(null, list);
});
};
getList(campaign.list, err => {
if (err) {
return callback(err);
}
if (!list) {
return callback(new Error('Selected list not found'));
}
let keys = ['name'];
let values = [name];
@ -728,27 +758,19 @@ module.exports.delete = (id, callback) => {
}
connection.query('DELETE FROM campaigns WHERE id=? LIMIT 1', [id], (err, result) => {
connection.release();
if (err) {
connection.release();
return callback(err);
}
let affected = result && result.affectedRows || 0;
connection.query('DELETE FROM links WHERE campaign=?', [id], err => {
connection.release();
removeCampaignTables(id, err => {
if (err) {
return callback(err);
}
removeCampaignTables(id, err => {
if (err) {
return callback(err);
}
caches.cache.delete('sender queue');
return callback(null, affected);
});
caches.cache.delete('sender queue');
return callback(null, affected);
});
});
});
@ -841,7 +863,7 @@ module.exports.reset = (id, callback) => {
}
caches.cache.delete('sender queue');
connection.query('DELETE FROM links WHERE campaign=?', [id], err => {
connection.query('UPDATE links SET `clicks`=0 WHERE campaign=?', [id], err => {
if (err) {
connection.release();
return callback(err);