upsert method

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

Implementation

Future<RowData?> upsert({List<Object>? columns, List<Object>? excludes, SQLExecutor? executor}) async {
  List<MapEntry<TableColumn, dynamic>> ls = _fieldValues(columns: columns, excludes: excludes);
  ls.retainWhere((e) => e.value != null);
  if (columns != null && columns.isNotEmpty) {
    ls.retainWhere((e) => columns.contains(e.key.columnName));
  }
  if (ls.isEmpty) return null;
  Returning ret = Returning.ALL;
  RowData? row = await (executor ?? _executor).upsert(_tableName, values: ls, constraints: _proto.primaryKeys, returning: ret);
  if (row != null) {
    this.model.addAll(row.toMap());
  }
  _modifiedKeys.clear();
  return row;
}