commit extjs-2.2.1
[extjs.git] / air / src / sql / Connection.js
1 /*\r
2  * Ext JS Library 0.30\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9 // Abstract base class for Connection classes\r
10 Ext.sql.Connection = function(config){\r
11         Ext.apply(this, config);\r
12         Ext.sql.Connection.superclass.constructor.call(this);\r
13 \r
14         this.addEvents({\r
15                 open : true,\r
16                 close: true\r
17         });\r
18 };\r
19 \r
20 Ext.extend(Ext.sql.Connection, Ext.util.Observable, {\r
21         maxResults: 10000,\r
22         openState : false,\r
23 \r
24     // abstract methods\r
25     open : function(file){\r
26         },\r
27 \r
28         close : function(){\r
29         },\r
30 \r
31     exec : function(sql){\r
32         },\r
33 \r
34         execBy : function(sql, args){\r
35         },\r
36 \r
37         query : function(sql){\r
38         },\r
39 \r
40         queryBy : function(sql, args){\r
41         },\r
42 \r
43     // protected/inherited method\r
44     isOpen : function(){\r
45                 return this.openState;\r
46         },\r
47 \r
48         getTable : function(name, keyName){\r
49                 return new Ext.sql.Table(this, name, keyName);\r
50         },\r
51 \r
52         createTable : function(o){\r
53                 var tableName = o.name;\r
54                 var keyName = o.key;\r
55                 var fs = o.fields;\r
56                 if(!Ext.isArray(fs)){ // Ext fields collection\r
57                         fs = fs.items;\r
58                 }\r
59                 var buf = [];\r
60                 for(var i = 0, len = fs.length; i < len; i++){\r
61                         var f = fs[i], s = f.name;\r
62                         switch(f.type){\r
63                     case "int":\r
64                     case "bool":\r
65                     case "boolean":\r
66                         s += ' INTEGER';\r
67                         break;\r
68                     case "float":\r
69                         s += ' REAL';\r
70                         break;\r
71                     default:\r
72                         s += ' TEXT';\r
73                 }\r
74                 if(f.allowNull === false || f.name == keyName){\r
75                         s += ' NOT NULL';\r
76                 }\r
77                 if(f.name == keyName){\r
78                         s += ' PRIMARY KEY';\r
79                 }\r
80                 if(f.unique === true){\r
81                         s += ' UNIQUE';\r
82                 }\r
83 \r
84                 buf[buf.length] = s;\r
85             }\r
86             var sql = ['CREATE TABLE IF NOT EXISTS ', tableName, ' (', buf.join(','), ')'].join('');\r
87         this.exec(sql);\r
88         }\r
89 });\r
90 \r
91 \r
92 Ext.sql.Connection.getInstance = function(db, config){\r
93     if(Ext.isAir){ // air\r
94         return new Ext.sql.AirConnection(config);\r
95     } else { // gears\r
96         return new Ext.sql.GearsConnection(config);\r
97     }\r
98 };