insertDataListWithMultipleChild method
Future<bool>
insertDataListWithMultipleChild({
- required dynamic model,
- required dynamic dataList,
- Function? onProgress,
Implementation
Future<bool> insertDataListWithMultipleChild({required dynamic model, required dynamic dataList, Function? onProgress}) async {
final db = await DatabaseHelper().getDatabaseInstance;
bool insertCompleted = false;
if (dataList == null) {
return false;
}
String query = getQueryStringFromJsonSingleList(model: model, dataList: dataList, onProgress: (dataInsertStatusNumber) {if (onProgress != null) {
onProgress(dataInsertStatusNumber);
}});
try {
await db.execute(query);
insertCompleted = true;
} catch (e) {
return false;
}
List<dynamic> modelObjectList = [];
Map<String, String> fieldNameList = model.getDataTypeMap();
fieldNameList.forEach((field, type) {
if (type == "List<dynamic>") {
modelObjectList.add(DatabaseHelper.getModel(field));
}
});
if (modelObjectList.length == 0) {
if (insertCompleted) {
return true;
} else {
return false;
}
}
int childModelNumber = 0;
for (var childModel in modelObjectList) {
var subList = [];
for (var temp in dataList) {
if (temp[childModel.runtimeType.toString()].length > 0) {
subList.add(temp[childModel.runtimeType.toString()]);
}
}
if (subList.length > 0) {
String query = getQueryStringFromJsonMultipleList(model: childModel, multipleDataList: subList);
deleteTableData(childModel);
try {
await db.execute(query);
if (childModelNumber == modelObjectList.length - 1) {
return true;
}
} catch (e) {
return false;
}
} else {
if (childModelNumber == modelObjectList.length - 1) {
return true;
}
}
childModelNumber++;
}
return false;
}