// Asbtract base class for Connection classes
Ext.sql.Connection = function(config){
Ext.apply(this, config);
Ext.sql.Connection.superclass.constructor.call(this);
this.addEvents({
open : true,
close: true
});
};
Ext.extend(Ext.sql.Connection, Ext.util.Observable, {
maxResults: 10000,
openState : false,
// abstract methods
open : function(file){
},
close : function(){
},
exec : function(sql){
},
execBy : function(sql, args){
},
query : function(sql){
},
queryBy : function(sql, args){
},
// protected/inherited method
isOpen : function(){
return this.openState;
},
getTable : function(name, keyName){
return new Ext.sql.Table(this, name, keyName);
},
createTable : function(o){
var tableName = o.name;
var keyName = o.key;
var fs = o.fields;
if(!Ext.isArray(fs)){ // Ext fields collection
fs = fs.items;
}
var buf = [];
for(var i = 0, len = fs.length; i < len; i++){
var f = fs[i], s = f.name;
switch(f.type){
case "int":
case "bool":
case "boolean":
s += ' INTEGER';
break;
case "float":
s += ' REAL';
break;
default:
s += ' TEXT';
}
if(f.allowNull === false || f.name == keyName){
s += ' NOT NULL';
}
if(f.name == keyName){
s += ' PRIMARY KEY';
}
if(f.unique === true){
s += ' UNIQUE';
}
buf[buf.length] = s;
}
var sql = ['CREATE TABLE IF NOT EXISTS ', tableName, ' (', buf.join(','), ')'].join('');
this.exec(sql);
}
});
Ext.sql.Connection.getInstance = function(db, config){
if(Ext.isAir){ // air
return new Ext.sql.AirConnection(config);
} else { // gears
return new Ext.sql.GearsConnection(config);
}
};