mobilemode.api.sql_wev8.js 1.61 KB
define("mApi/sql", ["mUtil", "securityHelper"], function(mUtil, securityHelper) {
	return {
        run: function(sql, sqlParams, datasource, callback, pageid){
        	if(mUtil.isFunction(sqlParams)){
        		callback = sqlParams;
        		datasource = "";
        		sqlParams = [];
        	}else if(mUtil.isString(sqlParams)){
        		callback = datasource;
        		datasource = sqlParams;
        		sqlParams = [];
        	}else if(mUtil.isArray(sqlParams)){
        		if(mUtil.isFunction(datasource)) {
        			callback = datasource;
            		datasource = "";
            	}
        	}else if(typeof(sqlParams) == "undefined"){
        		sqlParams = [];
        	}
        	
        	var requestParam = {};
        	var index = sql.indexOf(";");
        	if(index != -1){
        		requestParam = mUtil.strToParamJSON(sql.substring(index + 1));
        		sql = sql.substring(0, index);
        	}
        	pageid = pageid || mUtil.getCurrentPageId();
    		var pageParam = mUtil.getPageParam(pageid);
    		requestParam = $.extend(true, {}, pageParam, requestParam);
			sqlParams = securityHelper.encrypt(JSON.stringify(sqlParams));

    		var url = mUtil.jionActionUrl("com.api.mobilemode.web.mobile.service.MobileCommonAction", "action=runSQL&content="+sql+"&datasource="+(datasource || "")+"&sqlParams="+encodeURIComponent(sqlParams));
			var chain = $.Deferred();

			mUtil.getJSON(url, requestParam, function(result){
				var data = result.data;
				var res = data;

				if (callback) {
					res = callback.call(this, data.result, data.status);
				}

				chain.resolve(res);
			});
			
			return chain;
        }
	};
});