performAction static method
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;
}