sync/update.js

71 lines
1.8 KiB
JavaScript

var Config = require("./config.js");
var Database = require("./database.js");
//Config.DEBUG = true;
Database.setup(Config);
Database.init();
var query;
var db = Database.getConnection();
// Check for already existing
query = "SELECT owner FROM channels WHERE 1";
if(!db.querySync(query)) {
query = "ALTER TABLE channels ADD owner VARCHAR(20) NOT NULL";
var res = db.querySync(query);
if(!res) {
console.log(db);
console.log("Update failed!");
}
else {
populateChannelOwners();
}
}
console.log("Fixing user playlist bug");
query = "ALTER TABLE user_playlists DROP PRIMARY KEY, ADD PRIMARY KEY (user, name)";
if(!db.querySync(query)) {
console.log("Something went wrong");
}
else {
console.log("fixed");
}
db.closeSync();
process.exit(0);
function populateChannelOwners() {
query = "SELECT * FROM channels WHERE 1";
var res = db.querySync(query);
if(!res) {
console.log(db);
console.log("Update failed!");
return;
}
var channels = res.fetchAllSync();
channels.forEach(function(chan) {
chan = chan.name;
query = "SELECT name FROM `chan_"+chan+"_ranks` WHERE rank>=10 ORDER BY rank";
res = db.querySync(query);
if(!res) {
console.log(db);
console.log("failed to fix "+chan);
return;
}
var results = res.fetchAllSync();
if(results.length == 0) {
console.log("bad channel: " + chan);
return;
}
var owner = results[0].name;
query = "UPDATE channels SET owner='"+owner+"' WHERE name='"+chan+"'";
console.log("setting owner=" + owner + " for /r/" + chan);
res = db.querySync(query);
if(!res) {
console.log(db);
console.log("Update failed!");
return;
}
});
}