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

Commit e67e43c0 by Sascha Depold

added error handling for invalid database credentials

1 parent 7a9200da
......@@ -111,8 +111,9 @@ Sequelize.prototype = {
},
sync: function(callback) {
var finished = []
var tables = this.tables
var finished = [],
tables = this.tables,
errors = []
Sequelize.Helper.Hash.forEach(tables, function(table) {
table.klass.prepareAssociations()
......@@ -122,25 +123,29 @@ Sequelize.prototype = {
callback()
else
Sequelize.Helper.Hash.forEach(tables, function(table) {
table.klass.sync(function() {
table.klass.sync(function(_, err) {
finished.push(true)
if(err) errors.push(err)
if((finished.length == Sequelize.Helper.Hash.keys(tables).length) && callback)
callback()
callback(errors)
})
})
},
drop: function(callback) {
var finished = []
var tables = this.tables
var finished = [],
tables = this.tables,
errors = []
if((Sequelize.Helper.Hash.keys(tables).length == 0) && callback) callback()
if((Sequelize.Helper.Hash.keys(tables).length == 0) && callback)
callback()
else
Sequelize.Helper.Hash.forEach(tables, function(table, tableName) {
table.klass.drop(function() {
table.klass.drop(function(_, err) {
finished.push(true)
if(finished.length == Sequelize.Helper.Hash.keys(tables).length)
if(callback) callback()
if(err) errors.push(err)
if((finished.length == Sequelize.Helper.Hash.keys(tables).length) && callback)
callback(errors)
})
})
},
......@@ -154,6 +159,7 @@ Sequelize.prototype = {
connection.auto_prepare = true
connection
.auth(this.config.database, this.config.username, this.config.password)
.addListener("error", function(err) { callback(err) })
.addListener('authorized', function() {
if(!self.options.disableLogging)
Sequelize.Helper.log("Executing the query: " + queryString)
......
......@@ -79,6 +79,7 @@ exports.SequelizeTable = function(Sequelize, sequelize, tableName, attributes, o
if(callback) callback()
},
/* returns: table, error */
sync: function(callback) {
var fields = ["id INT NOT NULL auto_increment PRIMARY KEY"]
Sequelize.Helper.Hash.forEach(table.attributes, function(type, name) {
......@@ -87,14 +88,14 @@ exports.SequelizeTable = function(Sequelize, sequelize, tableName, attributes, o
sequelize.query(
Sequelize.sqlQueryFor( 'create', { table: table.tableName, fields: fields.join(', ') } ),
function() { if(callback) callback(table) }
function(err) { if(callback) callback(table, err) }
)
},
drop: function(callback) {
sequelize.query(
Sequelize.sqlQueryFor('drop', { table: table.tableName }),
function() { if(callback) callback(table) }
function(err) { if(callback) callback(table, err) }
)
},
......
......@@ -314,5 +314,29 @@ module.exports = {
})
})
beforeExit(function() { assert.equal(true, testIsFinished) })
},
'sync ==> failure': function(assert, beforeExit) {
var testIsFinished = false,
sequelizeWithInvalidCredentials = new Sequelize('foo', 'bar', 'barfoos'),
Fail = sequelizeWithInvalidCredentials.define('Fail', {})
Fail.sync(function(table, err) {
assert.isDefined(err)
assert.isDefined(err.message)
testIsFinished = true
})
beforeExit(function() { assert.equal(testIsFinished, true) })
},
'drop ==> failure': function(assert, beforeExit) {
var testIsFinished = false,
sequelizeWithInvalidCredentials = new Sequelize('foo', 'bar', 'barfoos'),
Fail = sequelizeWithInvalidCredentials.define('Fail', {})
Fail.drop(function(table, err) {
assert.isDefined(err)
assert.isDefined(err.message)
testIsFinished = true
})
beforeExit(function() { assert.equal(testIsFinished, true) })
}
}
\ No newline at end of file
......@@ -75,5 +75,29 @@ module.exports = {
'sqlQueryFor: delete wihtout limit': function(assert) {
var query = Sequelize.sqlQueryFor('delete', {table: 'Foo', where: "id=2", limit: null})
assert.equal(query, "DELETE FROM Foo WHERE id=2")
},
'sync: errors': function(assert, beforeExit) {
var testIsFinished = false,
sequelizeWithInvalidCredentials = new Sequelize('foo', 'bar', 'barfoos'),
Fail = sequelizeWithInvalidCredentials.define('Fail', {})
sequelizeWithInvalidCredentials.sync(function(errors) {
assert.isDefined(errors)
assert.equal(errors.length, 1)
testIsFinished = true
})
beforeExit(function() { assert.equal(testIsFinished, true) })
},
'drop: errors': function(assert, beforeExit) {
var testIsFinished = false,
sequelizeWithInvalidCredentials = new Sequelize('foo', 'bar', 'barfoos'),
Fail = sequelizeWithInvalidCredentials.define('Fail', {})
sequelizeWithInvalidCredentials.drop(function(errors) {
assert.isDefined(errors)
assert.equal(errors.length, 1)
testIsFinished = true
})
beforeExit(function() { assert.equal(testIsFinished, true) })
}
}
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!