// 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); } };