rerun interrupted migrations

This commit is contained in:
Sacha Greif 2014-08-22 11:25:05 +09:00
parent 15de4e3cea
commit f2808ee764
2 changed files with 25 additions and 13 deletions

View file

@ -6,6 +6,7 @@
* Notifications is now a nav menu item.
* Renamed `comments` to `commentsCount` on `Post` model.
* Now tracking list of commenters `_id`s on `Post` model.
* Rerun interrupted migrations.
## v0.9.2.5 “AccountScope”

View file

@ -13,21 +13,32 @@ Meteor.startup(function () {
// wrapper function for all migrations
var runMigration = function (migrationName) {
// migration updatePostStatus: make sure posts have a status
if (!Migrations.findOne({name: migrationName})) {
console.log("//----------------------------------------------------------------------//");
console.log("//------------// Starting "+migrationName+" Migration //-----------//");
console.log("//----------------------------------------------------------------------//");
Migrations.insert({name: migrationName, startedAt: new Date(), completed: false});
var migration = Migrations.findOne({name: migrationName});
// execute migration function
var itemsAffected = migrationsList[migrationName]() || 0;
Migrations.update({name: migrationName}, {$set: {finishedAt: new Date(), completed: true, itemsAffected: itemsAffected}});
console.log("//----------------------------------------------------------------------//");
console.log("//------------// Ending "+migrationName+" Migration //-----------//");
console.log("//----------------------------------------------------------------------//");
if (migration){
if(typeof migration.finishedAt === 'undefined'){
// if migration exists but hasn't finished, remove it and start fresh
console.log('!!! Found incomplete migration "'+migrationName+'", removing and running again.')
Migrations.remove({name: migrationName});
}else{
// do nothing
// console.log('Migration "'+migrationName+'" already exists, doing nothing.')
return
}
}
console.log("//----------------------------------------------------------------------//");
console.log("//------------// Starting "+migrationName+" Migration //-----------//");
console.log("//----------------------------------------------------------------------//");
Migrations.insert({name: migrationName, startedAt: new Date(), completed: false});
// execute migration function
var itemsAffected = migrationsList[migrationName]() || 0;
Migrations.update({name: migrationName}, {$set: {finishedAt: new Date(), completed: true, itemsAffected: itemsAffected}});
console.log("//----------------------------------------------------------------------//");
console.log("//------------// Ending "+migrationName+" Migration //-----------//");
console.log("//----------------------------------------------------------------------//");
}
var migrationsList = {