deleteRecord method
Implementation
Future<Map<String,dynamic>> deleteRecord({String condition = ""}) async {
Map<String,dynamic> result = {
"status": "failure",
"message": "nothing executed",
"operation": "DELETE"
};
Map<String,dynamic> callbackData={"table":table,"condition":condition};
try {
String primaryKeyField = "id";
int primaryKeyValue = 0;
String operationCondition = "1=1";
fields.forEach((name, field) {
var value = getFieldValue(name);
if (name.equalsIgnoreCase("id")) {
primaryKeyValue = int.parse(value.toString());
} else {
List attributes = getFieldAttributes(field);
if (condition == "") {
if (attributes.contains(attributeCheckModify) ||
attributes.contains(attributeCheckUpdate)) {
operationCondition += " AND $name=" + getFieldSQLValue(name);
}
}
}
});
if (condition != "") {
operationCondition = primaryKeyField +
" IN (SELECT $primaryKeyField FROM $table WHERE $condition)";
} else {
operationCondition += " AND $primaryKeyField=$primaryKeyValue";
}
Map<String,dynamic >response = await dbHandler.deleteConditionedRecords(
table: table, condition: operationCondition);
if (response.getString("status").equalsIgnoreCase("success")) {
result["status"] = "success";
result["message"] =
"${response["records"]} record(s) deleted successfully";
result["record_count"] = response["records"];
await Simplify.executeFunctions("delete",_functions,{
"table":tableName,
resultPrimaryKeyField:primaryKeyField,
resultPrimaryKeyValue:primaryKeyValue,
"record_count":response["records"],
"condition":operationCondition,
"result":response
});
} else {
result["message"] = response["message"];
}
} catch (ex, stack) {
result["message"] = Simplify.getExceptionMessage(ex, stack: stack);
}
return result;
}