不要怂,就是干,撸起袖子干!

Commit 0c888ff0 by sdepold

sequelize binary can now handle -m/--migrate

1 parent 7d1be4e6
......@@ -40,7 +40,11 @@ module.exports = (function() {
migrations.reverse()
migrations.forEach(function(migration) {
chainer.add(migration, 'execute', [options])
chainer.add(migration, 'execute', [options], {
success: function(migration, callback) {
saveSuccessfulMigration.call(self, migration, callback)
}
})
})
chainer
......@@ -129,18 +133,32 @@ module.exports = (function() {
// private
var getLastMigrationIdFromDatabase = function() {
var getLastMigrationFromDatabase = function() {
var self = this
return new Utils.CustomEventEmitter(function(emitter) {
self.findOrCreateSequelizeMetaModel().success(function(SequelizeMeta) {
SequelizeMeta.find({ order: 'id DESC' }).success(function(meta) {
emitter.emit('success', meta ? meta.lastMigrationId : null)
emitter.emit('success', meta ? meta : null)
}).error(function(err) { emitter.emit('failure', err) })
}).error(function(err) { emitter.emit(err) })
}).run()
}
var getLastMigrationIdFromDatabase = function() {
var self = this
return new Utils.CustomEventEmitter(function(emitter) {
getLastMigrationFromDatabase.call(self)
.success(function(meta) {
emitter.emit('success', meta ? meta.lastMigrationId : null)
})
.error(function(err) {
emitter.emit('failure', err)
})
}).run()
}
var getFormattedDateString = function(s) {
var result = null
......@@ -157,5 +175,24 @@ module.exports = (function() {
return moment(getFormattedDateString(s), "YYYYMMDDHHmmss")
}
var saveSuccessfulMigration = function(migration, callback) {
var self = this
getLastMigrationFromDatabase.call(this).success(function(dbEntry) {
if(dbEntry) {
dbEntry
.updateAttributes({ lastMigrationId: migration.migrationId })
.success(callback)
.error(function(err) { throw new Error(err) })
} else {
self.findOrCreateSequelizeMetaModel().success(function(SequelizeMeta) {
SequelizeMeta
.create({ lastMigrationId: migration.migrationId })
.success(callback)
})
}
}).error(function(err) { throw new Error(err) })
}
return Migrator
})()
......@@ -17,9 +17,9 @@ module.exports = (function() {
}
Utils.addEventEmitter(QueryChainer)
QueryChainer.prototype.add = function(emitterOrKlass, method, params) {
QueryChainer.prototype.add = function(emitterOrKlass, method, params, options) {
if(!!method) {
this.serials.push({ klass: emitterOrKlass, method: method, params: params })
this.serials.push({ klass: emitterOrKlass, method: method, params: params, options: options })
} else {
observeEmitter.call(this, emitterOrKlass)
this.emitters.push(emitterOrKlass)
......@@ -46,8 +46,15 @@ module.exports = (function() {
if(serial) {
var emitter = serial.klass[serial.method].apply(serial.klass, serial.params)
emitter.success(function() {
self.finishedEmits++
exec()
if(serial.options && serial.options.success) {
serial.options.success(serial.klass, function() {
self.finishedEmits++
exec()
})
} else {
self.finishedEmits++
exec()
}
}).error(function(err) {
self.finishedEmits++
self.fails.push(err)
......
......@@ -56,8 +56,8 @@ module.exports = (function() {
return defineCall(this, DataTypes)
}
Sequelize.prototype.migrate = function(_options) {
new Migrator(_options).migrate()
Sequelize.prototype.migrate = function(options) {
new Migrator(this, options).migrate()
}
Sequelize.prototype.query = function(sql, callee, options) {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!