updateByKey method

Future<RowData?> updateByKey({
  1. List<Object>? columns,
  2. List<Object>? excludes,
  3. SQLExecutor? executor,
})

Implementation

Future<RowData?> updateByKey({List<Object>? columns, List<Object>? excludes, SQLExecutor? executor}) async {
  List<MapEntry<TableColumn, dynamic>> values = _fieldValues(columns: columns, excludes: excludes);
  values.removeWhere((e) => e.key.proto.primaryKey);
  values.retainWhere((e) => e.value != null);
  if (columns != null && columns.isNotEmpty) {
    values.retainWhere((e) => columns.contains(e.key.columnName));
  }
  if (values.isEmpty) return null;
  Returning ret = Returning.ALL;
  QueryResult qr = await (executor ?? _executor).update(_tableName, values: values, where: _keyWhere, returning: ret);
  RowData? row = qr.firstRow();
  if (row != null) {
    this.model.addAll(row.toMap());
  }
  return row;
}