insertOrUpdateMsgExtras method
Implementation
Future<bool> insertOrUpdateMsgExtras(List<WKMsgExtra> list) async {
List<String> msgIds = [];
for (int i = 0, size = list.length; i < size; i++) {
if (list[i].messageID != '') {
msgIds.add(list[i].messageID);
}
}
List<WKMsgExtra> existList = await queryMsgExtrasWithMsgIds(msgIds);
List<Map<String, Object>> insertCVList = [];
List<Map<String, Object>> updateCVList = [];
for (int i = 0, size = list.length; i < size; i++) {
bool isAdd = true;
for (WKMsgExtra extra in existList) {
if (list[i].messageID == extra.messageID) {
updateCVList.add(getExtraMap(list[i]));
isAdd = false;
break;
}
}
if (isAdd) {
insertCVList.add(getExtraMap(list[i]));
}
}
if (insertCVList.isNotEmpty || updateCVList.isNotEmpty) {
WKDBHelper.shared.getDB()!.transaction((txn) async {
if (insertCVList.isNotEmpty) {
for (int i = 0; i < insertCVList.length; i++) {
txn.insert(WKDBConst.tableMessageExtra, insertCVList[i],
conflictAlgorithm: ConflictAlgorithm.replace);
}
}
if (updateCVList.isNotEmpty) {
for (int i = 0; i < updateCVList.length; i++) {
txn.update(WKDBConst.tableMessageExtra, updateCVList[0],
where: "message_id=?",
whereArgs: [updateCVList[i]['message_id']]);
}
}
});
}
return true;
}