do not fail on custom field index error

This commit is contained in:
Andris Reinman 2016-08-29 14:53:39 +03:00
parent 7cb5af94b0
commit 35078defb6

View file

@ -319,27 +319,32 @@ function addCustomField(listId, name, defaultValue, type, group, groupTemplate,
}
let fieldId = result && result.insertId;
let indexQuery;
switch (type) {
case 'text':
case 'website':
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` VARCHAR(255) DEFAULT NULL, ADD INDEX (' + column + ')';
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` VARCHAR(255) DEFAULT NULL';
indexQuery = 'CREATE INDEX ' + column + '_index ON `subscription__' + listId + '` (`column`);';
break;
case 'gpg':
case 'longtext':
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` TEXT DEFAULT NULL';
break;
case 'number':
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` INT(11) DEFAULT NULL, ADD INDEX (' + column + ')';
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` INT(11) DEFAULT NULL';
indexQuery = 'CREATE INDEX ' + column + '_index ON `subscription__' + listId + '` (`column`);';
break;
case 'option':
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` TINYINT(4) UNSIGNED NOT NULL DEFAULT \'0\', ADD INDEX (' + column + ')';
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` TINYINT(4) UNSIGNED NOT NULL DEFAULT \'0\'';
indexQuery = 'CREATE INDEX ' + column + '_index ON `subscription__' + listId + '` (`column`);';
break;
case 'date-us':
case 'date-eur':
case 'birthday-us':
case 'birthday-eur':
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` TIMESTAMP NULL DEFAULT NULL, ADD INDEX (' + column + ')';
query = 'ALTER TABLE `subscription__' + listId + '` ADD COLUMN `' + column + '` TIMESTAMP NULL DEFAULT NULL';
indexQuery = 'CREATE INDEX ' + column + '_index ON `subscription__' + listId + '` (`column`);';
break;
default:
connection.release();
@ -351,8 +356,18 @@ function addCustomField(listId, name, defaultValue, type, group, groupTemplate,
connection.query('DELETE FROM custom_fields WHERE id=? LIMIT 1', [fieldId], () => connection.release());
return callback(err);
}
connection.release();
return callback(null, fieldId, key);
if (!indexQuery) {
connection.release();
return callback(null, fieldId, key);
} else {
connection.query(query, err => {
if (err) {
// ignore index errors
}
connection.release();
return callback(null, fieldId, key);
});
}
});
});
});