updateRecord method
Implementation
Future<Map<String,dynamic>> updateRecord(Map<String, dynamic> data) async {
Map<String,dynamic> result = {"status": "failure","message": "nothing executed","operation": "UPDATE"};
Map<String,dynamic> callbackData={"table":table,"data":data};
try {
String primaryKeyField = "";
dynamic primaryKeyValue;
formatValues();
String validateStatus = validateValues();
if (validateStatus == "success") {
Map<String,dynamic> values = Map();
Map<String,dynamic> userDefinedFunctions = new Map();
String uniqueCondition = "";
data.forEach((field, value) {
if(fields.containsKey(field)){
if (fields[field][fieldAttributes]
.contains(attributePrimaryKey)) {
primaryKeyField = fields[field][fieldName];
primaryKeyValue = value;
result[attributePrimaryKey] = primaryKeyField;
}
values[field] = value;
}
});
if(values.isNotEmpty){
uniqueCondition = "$primaryKeyField=$primaryKeyValue";
callbackData["values"]=values;
Map response = await dbHandler.updateConditionedRecords(table: table,values: values,userDefinedFunctions: userDefinedFunctions,condition: uniqueCondition);
if (response.getString("status").equalsIgnoreCase("success")) {
result["status"] = "success";
result["message"] = " record inserted successfully";
callbackData[resultPrimaryKeyField]=primaryKeyField;
callbackData[resultPrimaryKeyValue]=primaryKeyValue;
if (primaryKeyField != "") {
result[resultPrimaryKeyValue] = primaryKeyValue;
Map fetchResponse = await fetchRecords(condition: "$primaryKeyField=$primaryKeyValue");
result["fetchResponse"] = fetchResponse;
if (fetchResponse.getString("status").equalsIgnoreCase("success")) {
List records = fetchResponse["records"];
if (records.isNotEmpty) {
result["record"] = records.first;
} else {
result["message"] = "fetch count 0";
}
} else {
result["fetch-response"] = fetchResponse;
result["message"] = fetchResponse["message"];
}
}
callbackData["result"]=result;
await Simplify.executeFunctions("update",_functions,callbackData);
} else {
result["message"] = response["message"];
}
}
else{
result["fields"]=fields;
result["message"]="no valid field to update";
}
} else {
result["message"] = validateStatus;
}
} catch (ex, stack) {
result["message"] = Simplify.getExceptionMessage(ex, stack: stack);
}
callbackData["result"]=result;
await Simplify.executeFunctions("update",_functions,callbackData);
return result;
}