insertRecord method
Implementation
Future<Map<String,dynamic>> insertRecord(Map<String, dynamic> data) async {
Map<String,dynamic> result = {"status": "failure","message": "nothing executed","operation": "INSERT"};
Map<String,dynamic> callbackData={"table":table,"data":data};
try {
String primaryKeyField = "";
bool autoGeneratePrimaryKeyValue=false;
dynamic primaryKeyValue;
formatValues();
String validateStatus = validateValues();
if (validateStatus == "success") {
Map<String,dynamic >values = Map();
Map<String,dynamic >userDefinedFunctions = Map();
fields.forEach((field, value) {
if (fields[field][fieldAttributes].contains(attributePrimaryKey)) {
primaryKeyField = fields[field][fieldName];
result[attributePrimaryKey] = primaryKeyField;
if (!fields[field][fieldAttributes].contains(
attributeAutoIncrement)) {
if (fields[field][fieldType] == typeString) {
autoGeneratePrimaryKeyValue = true;
}
}
}
if(data.containsKey(field)){
values[field] = data[field].toString();
}
});
if(values.isNotEmpty){
if(autoGeneratePrimaryKeyValue){
primaryKeyValue=await generateUniqueRecordId();
values[primaryKeyField]=primaryKeyValue;
}
callbackData["values"]=values;
Simplify.debug(table);
Simplify.debug(values);
Map response = await dbHandler.insertRecords(
table: table,
values: values,
userDefinedFunctions: userDefinedFunctions);
if (response.getString("status").equalsIgnoreCase("success")) {
result["status"] = "success";
result["message"] = " record inserted successfully";
callbackData[resultPrimaryKeyField]=primaryKeyField;
callbackData[resultPrimaryKeyValue]=primaryKeyValue;
if (primaryKeyField != "") {
if(!Simplify.validPrimaryKeyValue(primaryKeyValue)){
primaryKeyValue = response["record_id"];
}
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;
callbackData["record"]=result["record"];
} else {
result["message"] = "fetch count 0";
}
} else {
result["fetch-response"] = fetchResponse;
result["message"] = fetchResponse["message"];
}
}
callbackData["result"]=result;
} else {
result["message"] = response["message"];
}
}
else{
result["fields"]=fields;
result["message"]="no valid field to insert";
}
}
} catch (ex, stack) {
result["message"] = Simplify.getExceptionMessage(ex, stack: stack);
result["exception"] = ex;
}
callbackData["result"]=result;
await Simplify.executeFunctions("insert",_functions,callbackData);
return result;
}