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

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() { ...@@ -29,27 +29,57 @@ module.exports = (function() {
} }
Migrator.prototype.getUndoneMigrations = function(callback) { Migrator.prototype.getUndoneMigrations = function(callback) {
var undoneMigrations = fs.readdirSync(this.options.path) var self = this
if(this.options.from) { var filterFrom = function(files, from, callback, options) {
var fromDate = stringToDate(this.options.from.toString()) var fromDate = stringToDate(from.toString())
, result = []
undoneMigrations = undoneMigrations.filter(function(file) { result = files.filter(function(file) {
var fileDate = stringToDate(file.split("-")[0]) var fileDate = stringToDate(file.split("-")[0])
return (fileDate >= fromDate) return (options||{}).withoutEqual ? (fileDate > fromDate) : (fileDate >= fromDate)
}) })
callback && callback(result)
} }
if(this.options.to) { var filterTo = function(files, to, callback) {
var toDate = stringToDate(this.options.to.toString()) var toDate = stringToDate(to.toString())
, result = []
undoneMigrations = undoneMigrations.filter(function(file) { result = files.filter(function(file) {
var fileDate = stringToDate(file.split("-")[0]) var fileDate = stringToDate(file.split("-")[0])
return (fileDate <= toDate) 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 // private
...@@ -59,7 +89,7 @@ module.exports = (function() { ...@@ -59,7 +89,7 @@ module.exports = (function() {
migration[method || 'up'](this.queryInterface, DataTypes) migration[method || 'up'](this.queryInterface, DataTypes)
} }
var getLastMigrationId = function() { var getLastMigrationIdFromDatabase = function() {
var self = this var self = this
return new Utils.CustomEventEmitter(function(emitter) { return new Utils.CustomEventEmitter(function(emitter) {
......
...@@ -66,6 +66,18 @@ describe('Migrator', function() { ...@@ -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!