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

Commit ffb2772b by sdepold

refactored migration file getter

1 parent 7257eece
Showing with 52 additions and 10 deletions
......@@ -29,27 +29,57 @@ module.exports = (function() {
}
Migrator.prototype.getUndoneMigrations = function(callback) {
var undoneMigrations = fs.readdirSync(this.options.path)
var self = this
if(this.options.from) {
var fromDate = stringToDate(this.options.from.toString())
var filterFrom = function(files, from, callback, options) {
var fromDate = stringToDate(from.toString())
, result = []
undoneMigrations = undoneMigrations.filter(function(file) {
result = files.filter(function(file) {
var fileDate = stringToDate(file.split("-")[0])
return (fileDate >= fromDate)
return (options||{}).withoutEqual ? (fileDate > fromDate) : (fileDate >= fromDate)
})
callback && callback(result)
}
if(this.options.to) {
var toDate = stringToDate(this.options.to.toString())
var filterTo = function(files, to, callback) {
var toDate = stringToDate(to.toString())
, result = []
undoneMigrations = undoneMigrations.filter(function(file) {
result = files.filter(function(file) {
var fileDate = stringToDate(file.split("-")[0])
return (fileDate <= toDate)
})
callback && callback(result)
}
callback && callback(undoneMigrations)
var migrationFiles = fs.readdirSync(this.options.path)
if(this.options.from) {
filterFrom(migrationFiles, this.options.from, function(files) {
if(self.options.to) {
filterTo(files, self.options.to, callback)
} else {
callback && callback(files)
}
})
} else {
getLastMigrationIdFromDatabase.call(this).success(function(lastMigrationId) {
if(lastMigrationId) {
filterFrom(migrationFiles, lastMigrationId, function(files) {
if(self.options.to) {
filterTo(files, self.options.to, callback)
} else {
callback && callback(files)
}
}, { withoutEqual: true })
} else {
callback && callback(migrationFiles)
}
})
}
}
// private
......@@ -59,7 +89,7 @@ module.exports = (function() {
migration[method || 'up'](this.queryInterface, DataTypes)
}
var getLastMigrationId = function() {
var getLastMigrationIdFromDatabase = function() {
var self = this
return new Utils.CustomEventEmitter(function(emitter) {
......
......@@ -66,6 +66,18 @@ describe('Migrator', function() {
})
})
})
it("returns all files from last migration id stored in database", function() {
setup()
Helpers.async(function(done) {
migrator.getUndoneMigrations(function(files) {
expect(files.length).toEqual(1)
expect(files[0]).toEqual('20111123060700-addBirthdateToPerson.js')
done()
})
})
})
})
/*
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!