performAction static method

Future<Map<String, dynamic>> performAction(
  1. SimpleWebRR webRR
)

Implementation

static Future<Map<String,dynamic>> performAction(SimpleWebRR webRR) async {
    Map<String,dynamic> result={"status":"failure","message":"nothing executed","operation":"NONE"};
    try{
        String operation="SELECT";
        if(webRR.hasVariable("tableName")){
            SimpleDatabase record= SimpleDatabase(tableName:webRR.variableString("tableName"));
            if(webRR.hasVariable("operation")){
                operation=webRR.variableString("operation");
            }
            else if(webRR.hasRequest("operation")){
                operation=webRR.requestString("operation");
            }
            if(operation.equalsIgnoreCase("DELETE")){
                Map<String,dynamic> primaryField=record.getField(attributes: [SimpleDatabase.attributePrimaryKey]);
                Simplify.debug(primaryField);
                if(primaryField.isNotEmpty){
                    if(webRR.hasRequest(primaryField[SimpleDatabase.fieldName])){
                        result=await record.deleteRecord(condition: primaryField[SimpleDatabase.fieldName]+"='${webRR.requestString(primaryField[SimpleDatabase.fieldName])}'");
                    }
                    else{
                        result["message"]="parameter missing";
                    }
                }
                else{
                    result["message"]="primary key field missing";
                }
            }
            else if(operation.equalsIgnoreCase("INSERT")){
                if(webRR.hasRequest("record")){
                    result=await record.insertRecord(webRR.requestMap("record").cast<String,dynamic>());
                }
            }
            else if(operation.equalsIgnoreCase("UPDATE")){
                if(webRR.hasRequest("record")){
                    result=await record.updateRecord(webRR.requestMap("record").cast<String,dynamic>());
                }
            }
            else if(operation.equalsIgnoreCase("SAVE")){
                if(webRR.hasRequest("record")){
                    result=await record.saveRecord(webRR.requestMap("record").cast<String,dynamic>());
                }
            }
            else if(operation.equalsIgnoreCase("SELECT")){
                String condition="1=1";
                Map selectBasicResponse= selectBasic(webRR);
                bool includeLimit=true,includeTotalCount=false;
                if(webRR.hasVariable("include_limit")){
                    includeLimit=webRR.variableBool("include_limit");
                }
                if(webRR.hasRequest("get_total_count")) {
                    includeTotalCount=true;
                }
                else{
                    if(webRR.hasRequest("start_index")) {
                        if(webRR.requestInt("start_index")==0){
                            includeTotalCount=true;
                        }
                    }
                }
                if(webRR.hasVariable("condition")){
                    condition=webRR.variableString("condition");
                }
                Map countResponse = {};
                if(includeTotalCount){
                    countResponse=await record.fetchRecords(condition: condition,fetchMode: "COUNT");
                }
                if(includeLimit){
                    condition=condition+selectBasicResponse["limit_condition"];
                }
                result=await record.fetchRecords(condition:condition,fetchMode: selectBasicResponse["fetch_mode"]);
                if (countResponse.isNotEmpty){
                    if(countResponse.getString("status").equalsIgnoreCase("success")){
                        result["total_count"]=countResponse["records"];
                    }
                }
            }
            if(webRR.hasVariable("INCLUDE_RESPONSE")){
                if(webRR.variableInt("INCLUDE_RESPONSE")==1){
                    webRR.addVariable("response",result);
                    webRR.addVariable("operation",operation);
                    result=getResponse(webRR);
                }
            }
        }
    }
    catch (ex,stack) {
        result["message"]=Simplify.getExceptionMessage(ex,stack: stack);
    }
    return result;
}