--- /dev/null
+<html>\r
+<head>\r
+ <title>The source code</title>\r
+ <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+ <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body onload="prettyPrint();">\r
+ <pre class="prettyprint lang-js">Ext.sql.Table = function(conn, name, keyName){\r
+ this.conn = conn;\r
+ this.name = name;\r
+ this.keyName = keyName;\r
+};\r
+\r
+Ext.sql.Table.prototype = {\r
+ update : function(o){\r
+ var clause = this.keyName + " = ?";\r
+ return this.updateBy(o, clause, [o[this.keyName]]);\r
+ },\r
+\r
+ updateBy : function(o, clause, args){\r
+ var sql = "UPDATE " + this.name + " set ";\r
+ var fs = [], a = [];\r
+ for(var key in o){\r
+ if(o.hasOwnProperty(key)){\r
+ fs[fs.length] = key + ' = ?';\r
+ a[a.length] = o[key];\r
+ }\r
+ }\r
+ for(var key in args){\r
+ if(args.hasOwnProperty(key)){\r
+ a[a.length] = args[key];\r
+ }\r
+ }\r
+ sql = [sql, fs.join(','), ' WHERE ', clause].join('');\r
+ return this.conn.execBy(sql, a);\r
+ },\r
+\r
+ insert : function(o){\r
+ var sql = "INSERT into " + this.name + " ";\r
+ var fs = [], vs = [], a = [];\r
+ for(var key in o){\r
+ if(o.hasOwnProperty(key)){\r
+ fs[fs.length] = key;\r
+ vs[vs.length] = '?';\r
+ a[a.length] = o[key];\r
+ }\r
+ }\r
+ sql = [sql, '(', fs.join(','), ') VALUES (', vs.join(','), ')'].join('');\r
+ return this.conn.execBy(sql, a);\r
+ },\r
+\r
+ lookup : function(id){\r
+ return this.selectBy('where ' + this.keyName + " = ?", [id])[0] || null;\r
+ },\r
+\r
+ exists : function(id){\r
+ return !!this.lookup(id);\r
+ },\r
+\r
+ save : function(o){\r
+ if(this.exists(o[this.keyName])){\r
+ this.update(o);\r
+ }else{\r
+ this.insert(o);\r
+ }\r
+ },\r
+\r
+ select : function(clause){\r
+ return this.selectBy(clause, null);\r
+ },\r
+\r
+ selectBy : function(clause, args){\r
+ var sql = "select * from " + this.name;\r
+ if(clause){\r
+ sql += ' ' + clause;\r
+ }\r
+ args = args || {};\r
+ return this.conn.queryBy(sql, args);\r
+ },\r
+\r
+ remove : function(clause){\r
+ this.deleteBy(clause, null);\r
+ },\r
+\r
+ removeBy : function(clause, args){\r
+ var sql = "delete from " + this.name;\r
+ if(clause){\r
+ sql += ' where ' + clause;\r
+ }\r
+ args = args || {};\r
+ this.conn.execBy(sql, args);\r
+ }\r
+};</pre> \r
+</body>\r
+</html>
\ No newline at end of file