delete method

Future<List<T>> delete(
  1. Session session,
  2. List<T> rows, {
  3. Transaction? transaction,
})

Deletes all Ts in the list and returns the deleted rows. This is an atomic operation, meaning that if one of the rows fail to be deleted, none of the rows will be deleted.

Implementation

Future<List<T>> delete(
  _i1.Session session,
  List<T> rows, {
  _i1.Transaction? transaction,
}) async {
  final tableName = _table.tableName;
  final resultData = await supabase
      .from(tableName)
      .delete()
      .inFilter(_table.id.columnName, rows.map((e) => e.id).toList())
      .select();
  List<T> results = [];

  for (int i = 0; i < resultData.length; i++) {
    var dbRowMap = resultData[i];
    var originalRowMap = rows[i].toJson();
    var mergedMap = {...originalRowMap, ...dbRowMap};
    results.add(
      session.serverpod.serializationManager.deserialize<T>(mergedMap),
    );
  }
  return results;
}