updateRecord method

  1. @override
Future<void> updateRecord(
  1. String tableName,
  2. dynamic id,
  3. Map<String, dynamic> data
)
override

Implementation

@override
Future<void> updateRecord(
  String tableName,
  dynamic id,
  Map<String, dynamic> data,
) async {
  final tableInfo = database.allTables.firstWhere(
    (t) => t.actualTableName == tableName,
  );
  final pkColumn = tableInfo.primaryKey.first.name;
  final assignments = data.keys
      .where((k) => k != pkColumn)
      .map((k) => '$k = ?')
      .join(', ');
  final values = data.entries
      .where((e) => e.key != pkColumn)
      .map((e) => e.value)
      .toList();
  values.add(id);

  final sql = 'UPDATE $tableName SET $assignments WHERE $pkColumn = ?';
  await database.customUpdate(
    sql,
    variables: values.map((v) => Variable(v)).toList(),
  );
}