insertRecord method
Implementation
Future<Map<String,dynamic>> insertRecord({Map<String,dynamic> insertParams=const {}}) async{
Map<String,dynamic> result={"status":"failure","message":"nothing executed","operation":"INSERT"};
try{
String primaryKeyField="id";
result[attributePrimaryKey]="id";
formatValues();
String validateStatus=validateValues();
if(validateStatus=="success"){
Map<String,dynamic> values=new Map();
Map<String,dynamic> userDefinedFunctions=new Map();
String uniqueCondition="1=1";
List<String> uniqueFields=[];
fields.forEach((name,field){
String type=field[fieldType];
List attributes=getFieldAttributes(name);
if(attributes.contains(attributeUniqueKey)||attributes.contains(attributeCheckUnique)){
if(attributes.contains(attributeUniqueKey)){
uniqueFields.add(name);
}
uniqueCondition+=" AND $name="+getFieldSQLValue(name);
}
userDefinedFunctions=updateUserDefinedFunction(userDefinedFunctions,name);
if(!attributes.contains(attributeAutoIncrement)&&!attributes.contains(attributeTimestamp)&&type!=typeUserDefinedFunction){
values[name]=getFieldValue(name);
}
});
bool uniqueResult=true;
if(uniqueCondition!="1=1"){
Map<String,dynamic> uniqueResponse=await fetchRecords(condition: uniqueCondition);
if(uniqueResponse.getString("status").equalsIgnoreCase("success")){
List uniqueRecords=uniqueResponse["records"];
if(uniqueRecords.isNotEmpty){
uniqueResult=false;
result["message"]=uniqueFields.join(",");
}
}
else{
uniqueResult=false;
result["unique-response"]=uniqueResponse;
result["message"]=uniqueResponse["message"];
}
}
if(uniqueResult){
Map<String,dynamic> response=await dbHandler!.insertRecords(table: table,values: values,userDefinedFunctions:userDefinedFunctions);
if(response.getString("status").equalsIgnoreCase("success")){
result["status"]="success";
result["message"]=" record inserted successfully";
if(primaryKeyField!=""){
result[resultPrimaryKeyValue]=response["record_id"].toString();
Map<String,dynamic> fetchResponse=await fetchRecords(condition: "$primaryKeyField=${response["record_id"]}");
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"];
}
}
}
else{
result["message"]=response["message"];
}
}
}
else{
result["message"]=validateStatus;
}
}
catch(ex,stack){
result["message"]=Simplify.getExceptionMessage(ex,stack: stack);
}
return result;
}