Add auto DB conversion for utf8mb4

This commit is contained in:
Calvin Montgomery 2014-12-14 21:47:08 -05:00
parent 9deff9bdb1
commit c39c394f36

View file

@ -2,7 +2,7 @@ var db = require("../database");
var Logger = require("../logger"); var Logger = require("../logger");
var Q = require("q"); var Q = require("q");
const DB_VERSION = 4; const DB_VERSION = 5;
var hasUpdates = []; var hasUpdates = [];
module.exports.checkVersion = function () { module.exports.checkVersion = function () {
@ -52,6 +52,8 @@ function update(version, cb) {
" into the CyTube process to remove the unused tables."); " into the CyTube process to remove the unused tables.");
cb(); cb();
}) })
} else if (version < 5) {
fixUtf8mb4(cb);
} }
} }
@ -220,3 +222,21 @@ module.exports.deleteOldChannelTables = function (cb) {
} }
}).done(cb); }).done(cb);
}; };
function fixUtf8mb4(cb) {
var queries = [
"ALTER TABLE `users` MODIFY `profile` TEXT CHARACTER SET utf8mb4 NOT NULL",
"ALTER TABLE `global_bans` MODIFY `reason` VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL",
"ALTER TABLE `channel_libraries` MODIFY `title` VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL",
"ALTER TABLE `channel_bans` MODIFY `reason` VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL"
];
Q.allSettled(queries.map(function (query) {
return Q.nfcall(db.query, query);
})).then(function () {
Logger.syslog.log("Fixed utf8mb4");
cb();
}).catch(function (e) {
Logger.errlog.log("Failed to fix utf8mb4: " + e);
});
};