Add support to use adapter constructor for initialization

This commit is contained in:
Raymond Feng 2013-07-11 09:55:26 -07:00
parent 7684fe2946
commit 12199ad779
1 changed files with 14 additions and 5 deletions

View File

@ -170,7 +170,7 @@ DataSource.prototype.setup = function(name, settings) {
}
if (adapter) {
adapter.initialize(this, function () {
var postInit = function postInit() {
// we have an adaper now?
if (!this.adapter) {
@ -192,7 +192,16 @@ DataSource.prototype.setup = function(name, settings) {
this.connected = true;
this.emit('connected');
}.bind(this));
}.bind(this);
if ('function' === typeof adapter.initialize) {
// Call the async initialize method
adapter.initialize(this, postInit);
} else if('function' === typeof adapter) {
// Use the adapter constructor directly
this.adapter = new adapter(this.settings);
postInit();
}
}
schema.connect = function(cb) {
@ -277,7 +286,7 @@ DataSource.prototype.define = function defineClass(className, properties, settin
// add data access objects
this.mixin(NewClass);
if(this.adapter) {
if(this.adapter && this.adapter.define) {
// pass control to adapter
this.adapter.define({
model: NewClass,
@ -344,7 +353,7 @@ DataSource.prototype.attach = function (ModelCtor) {
this.mixin(ModelCtor);
if(this.adapter) {
if(this.adapter && this.adapter.define) {
// pass control to adapter
this.adapter.define({
model: ModelCtor,
@ -1160,7 +1169,7 @@ DataSource.prototype.copyModel = function copyModel(Master) {
settings: md.settings
};
if (!schema.isTransaction) {
if ((!schema.isTransaction) && schema.adapter && schema.adapter.define) {
schema.adapter.define({
model: Slave,
properties: md.properties,