insertModelData method
Future
insertModelData(
{ - required dynamic model,
- required dynamic modelData,
})
Implementation
Future<dynamic> insertModelData({ required dynamic model, required dynamic modelData}) async {
String tableName = modelData.runtimeType.toString();
final db = await DatabaseHelper().getDatabaseInstance;
bool isAlreadyInserted = false;
var firstFieldName = modelData.getDataTypeMap().keys.first;
final Map<String, dynamic> dataMap = getMapFromModelData(model: model, data: modelData);
var fieldValue = dataMap.values.first;
String sql = "Select $firstFieldName from ${tableName} where $firstFieldName = '$fieldValue'";
var datas = await db.rawQuery(sql);
if (datas.length > 0) {
isAlreadyInserted = true;
}
var insertOrUpdateId;
if (isAlreadyInserted) {
insertOrUpdateId = await db.update(tableName, where: " $firstFieldName = '$fieldValue' ", dataMap);
} else {
insertOrUpdateId = await db.insert(tableName, dataMap);
}
if (insertOrUpdateId != null) {
return modelData;
}
return null;
}