Correctly handle callback after blank automigration

This commit is contained in:
Anatoliy Chakkaev 2012-03-11 16:42:07 +04:00
parent d558dd6b70
commit f3e80c28f7
4 changed files with 16 additions and 21 deletions

View File

@ -24,19 +24,20 @@ exports.initialize = function initializeSchema(schema, callback) {
s.port = parseInt(s.port || '27017', 10);
s.database = s.database || 'test';
schema.adapter = new MongoDB(s, schema, callback);
};
function MongoDB(s, schema, callback) {
this._models = {};
this.collections = {};
var server = new mongodb.Server(s.host, s.port, {});
new mongodb.Db(s.database, server, {}).open(function (err, client) {
if (err) throw err;
this.client = client;
schema.client = client;
schema.adapter = new MongoDB(client);
callback();
});
};
function MongoDB(client) {
this._models = {};
this.client = client;
this.collections = {};
}.bind(this));
}
MongoDB.prototype.define = function (descr) {

View File

@ -20,7 +20,6 @@ exports.initialize = function initializeSchema(schema, callback) {
debug: s.debug
});
schema.adapter = new PG(schema.client);
if (s.autoconnect === false) return callback();
schema.adapter.connect(callback);
};

View File

@ -128,12 +128,15 @@ BaseSQL.prototype.automigrate = function (cb) {
Object.keys(this._models).forEach(function (model) {
wait += 1;
self.dropTable(model, function () {
// console.log('drop', model);
self.createTable(model, function (err) {
// console.log('create', model);
if (err) console.log(err);
done();
});
});
});
if (wait === 0) cb();
function done() {
if (--wait === 0 && cb) {

View File

@ -29,23 +29,15 @@ Object.keys(schemas).forEach(function (schemaName) {
if (process.env.ONLY && process.env.ONLY !== schemaName) return;
if (process.env.EXCEPT && ~process.env.EXCEPT.indexOf(schemaName)) return;
context(schemaName, function () {
schemas[schemaName].autoconnect = false;
var schema = new Schema(schemaName, schemas[schemaName]);
it('should connect to database', function (test) {
console.log('Connecting:', schemaName);
if (schema.adapter && schema.adapter.connect) {
schema.adapter.connect(function () {
test.done();
});
} else if (!schema.adapter) {
setTimeout(test.done, 1000);
} else {
test.done()
}
if (schema.connected) return test.done();
schema.on('connected', test.done);
});
schema.log = function (a) {
console.log(a);
// console.log(a);
};
testOrm(schema);
if (specificTest[schemaName]) specificTest[schemaName](schema);