dbUpdate function
origin: kt_ifm_gtid_mob/lib/db.dart author: anovsiradj, opencode-go/glm-5.2 version: 2025-03-04, revised: 2026-08-17
Implementation
Future<ObjekItemTypedef?> dbUpdate(
String table,
Map<String, dynamic> values,
Map<String, dynamic> wheres, {
bool result = true,
}) async {
final tableFields = await dbTableFields(table);
values.removeWhere((key, val) {
if (!tableFields.contains(key)) return true;
if (val is Uint8List) return false;
if (val is Map || val is List) return true;
return false;
});
final keys = <String>[];
final vals = <dynamic>[];
wheres.forEach((key, val) {
if (val == null) {
keys.add('"$key" is NULL');
} else {
keys.add('"$key"=?');
vals.add(val);
}
});
await db.update(
table,
values,
where: keys.join(' AND '),
whereArgs: vals,
conflictAlgorithm: ConflictAlgorithm.replace,
);
if (result) {
return await dbOne(table, wheres);
}
return null;
}