dbUpdate function

Future<ObjekItemTypedef?> dbUpdate(
  1. String table,
  2. Map<String, dynamic> values,
  3. Map<String, dynamic> wheres, {
  4. bool result = true,
})

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;
}