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

Commit 6084b1d9 by sdepold

find the correct files

1 parent 1c6841b7
Showing with 38 additions and 81 deletions
var fs = require("fs") const fs = require("fs")
, path = require("path") , path = require("path")
, moment = require("moment") , moment = require("moment")
, Utils = require("./utils")
, DataTypes = require("./data-types") var Utils = require("./utils")
, DataTypes = require("./data-types")
, QueryInterface = require("./query-interface")
module.exports = (function() { module.exports = (function() {
var Migrator = function(sequelize, options) { var Migrator = function(sequelize, options) {
this.sequelize = sequelize this.sequelize = sequelize
this.queryInterface = new QueryInterface(this.sequelize)
this.options = Utils._.extend({ this.options = Utils._.extend({
path: __dirname + '/../migrations', path: __dirname + '/../migrations',
from: null, from: null,
...@@ -18,81 +21,29 @@ module.exports = (function() { ...@@ -18,81 +21,29 @@ module.exports = (function() {
var self = this var self = this
return new Utils.CustomEventEmitter(function(emitter) { return new Utils.CustomEventEmitter(function(emitter) {
var execMigrations = function(from) { getUndoneMigrations.call(self, function(migrations) {
var nonMigratedFiles = getMigrationsFilesSince.call(self, from) console.log(migrations)
})
nonMigratedFiles.forEach(function(file) {
executeMigration.call(self, self.options.path + '/' + file)
})
emitter.emit('success')
}
if(self.options.from) {
execMigrations(self.options.from)
} else {
getLastMigrationId.call(self).success(function(migrationId) {
migrationId = migrationId || '19700101000000'
execMigrations.call(self, migrationId)
})
}
}).run() }).run()
} }
Migrator.prototype.createTable = function() {
}
Migrator.prototype.dropTable = function() {
}
Migrator.prototype.renameTable = function() {
}
Migrator.prototype.addColumn = function() {
}
Migrator.prototype.removeColumn = function() {
}
Migrator.prototype.changeColumn = function() {
}
Migrator.prototype.renameColumn = function() {
}
Migrator.prototype.addIndex = function() {
}
Migrator.prototype.removeIndex = function() {
}
// private // private
var executeMigration = function(path, method) { var executeMigration = function(path, method) {
var migration = require(path) var migration = require(path)
migration[method || 'up'](this) migration[method || 'up'](this.queryInterface, DataTypes)
} }
var getLastMigrationId = function() { var getLastMigrationId = function() {
var self = this var self = this
return new Utils.CustomEventEmitter(function(emitter) { return new Utils.CustomEventEmitter(function(emitter) {
var SequelizeMeta = self.sequelize.modelManager.getModel('SequelizeMeta') var SequelizeMeta = self.sequelize.modelManager.getModel('SequelizeMeta')
var findLastMigrationId = function() { var findLastMigrationId = function() {
SequelizeMeta.find({ order: 'id DESC' }).success(function(sequelizeMeta) { SequelizeMeta.find({ order: 'id DESC' }).success(function(sequelizeMeta) {
emitter.emit('success', sequelizeMeta ? sequelizeMeta.lastMigrationId : null) emitter.emit('success', sequelizeMeta ? sequelizeMeta.lastMigrationId : null)
}) }).error(function(err) { emitter.emit('failure', err) })
} }
if(SequelizeMeta) { if(SequelizeMeta) {
...@@ -102,11 +53,10 @@ module.exports = (function() { ...@@ -102,11 +53,10 @@ module.exports = (function() {
lastMigrationId: DataTypes.STRING lastMigrationId: DataTypes.STRING
}) })
SequelizeMeta.sync().success(function() { SequelizeMeta
findLastMigrationId() .sync()
}).error(function(err) { .success(function() { findLastMigrationId() })
emitter.emit('failure', err) .error(function(err) { emitter.emit('failure', err) })
})
} }
}).run() }).run()
} }
...@@ -124,24 +74,31 @@ module.exports = (function() { ...@@ -124,24 +74,31 @@ module.exports = (function() {
} }
var stringToDate = function(s) { var stringToDate = function(s) {
var formattedString = getFormattedDateString(s) return moment(getFormattedDateString(s), "YYYYMMDDHHmmss")
, date = moment(formattedString, "YYYYMMDDHHmmss")
return date
} }
var getMigrationsFilesSince = function(sinceString) { var getUndoneMigrations = function(callback) {
var result = [] var migrationFiles = fs.readdirSync(this.options.path)
, since = stringToDate(sinceString) , undoneMigrations = migrationFiles
var undoneMigrationFiles = fs.readdirSync(this.options.path).filter(function(file) { if(this.options.from) {
var fileDateString = file.split("-")[0] var sinceDate = stringToDate(this.options.from.toString())
, fileDate = stringToDate(fileDateString)
return fileDate.diff(since) > 0 undoneMigrations = migrationFiles.filter(function(file) {
}) var fileDate = stringToDate(file.split("-")[0])
return fileDate.diff(sinceDate) >= 0
})
}
if(this.options.to) {
var toDate = stringToDate(this.options.to.toString())
undoneMigrations = undoneMigrations.filter(function(file) {
var fileDate = stringToDate(file.split("-")[0])
return toDate.diff(fileDate) >= 0
})
}
return undoneMigrationFiles callback && callback(undoneMigrations)
} }
return Migrator return Migrator
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!