insertOrUpdateList method

  1. @override
Future<List<TEntity>?> insertOrUpdateList(
  1. Iterable<TEntity> items, {
  2. bool? useIsolate,
})
inherited

Implementation

@override
Future<List<TEntity>?> insertOrUpdateList(
  Iterable<TEntity> items, {
  bool? useIsolate,
}) async {
  final db = await dbContext.database;
  List<TEntity>? result;
  final updatedItems = <TEntity>[];

  final spawnIsolate = useIsolate ?? useIsolateDefault;
  final response = !spawnIsolate
      ? wInsertOrUpdateList(items)
      : await compute(wInsertOrUpdateList, items);
  await db.transaction((txn) async {
    final batch = txn.batch();
    for (final element in response) {
      updatedItems.add(element.entity as TEntity);
      batch.insert(
        element.entity.meta.tableName,
        element.map,
        conflictAlgorithm: ConflictAlgorithm.replace,
      );
    }
    result = await _finishBatch(batch, updatedItems);
  });
  return result;
}