Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

/*
 * Ext JS Library 0.20
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */

Ext.sql.Table = function(conn, name, keyName){
        this.conn = conn;
        this.name = name;
        this.keyName = keyName;
};

Ext.sql.Table.prototype = {
        update : function(o){
                var clause = this.keyName + " = ?";
                return this.updateBy(o, clause, [o[this.keyName]]);
        },

        updateBy : function(o, clause, args){
                var sql = "UPDATE " + this.name + " set ";
                var fs = [], a = [];
                for(var key in o){
                        if(o.hasOwnProperty(key)){
                                fs[fs.length] = key + ' = ?';
                                a[a.length] = o[key];
                        }
                }
                for(var key in args){
                        if(args.hasOwnProperty(key)){
                                a[a.length] = args[key];
                        }
                }
                sql = [sql, fs.join(','), ' WHERE ', clause].join('');
                return this.conn.execBy(sql, a);
        },

        insert : function(o){
                var sql = "INSERT into " + this.name + " ";
                var fs = [], vs = [], a = [];
                for(var key in o){
                        if(o.hasOwnProperty(key)){
                                fs[fs.length] = key;
                                vs[vs.length] = '?';
                                a[a.length] = o[key];
                        }
                }
                sql = [sql, '(', fs.join(','), ') VALUES (', vs.join(','), ')'].join('');
        return this.conn.execBy(sql, a);
    },

        lookup : function(id){
                return this.selectBy('where ' + this.keyName + " = ?", [id])[0] || null;
        },

        exists : function(id){
                return !!this.lookup(id);
        },

        save : function(o){
                if(this.exists(o[this.keyName])){
            this.update(o);
        }else{
            this.insert(o);
        }
        },

        select : function(clause){
                return this.selectBy(clause, null);
        },

        selectBy : function(clause, args){
                var sql = "select * from " + this.name;
                if(clause){
                        sql += ' ' + clause;
                }
                args = args || {};
                return this.conn.queryBy(sql, args);
        },

        remove : function(clause){
                this.deleteBy(clause, null);
        },

        removeBy : function(clause, args){
                var sql = "delete from " + this.name;
                if(clause){
                        sql += ' where ' + clause;
                }
                args = args || {};
                this.conn.execBy(sql, args);
        }
};