deleteBatchDetailed method

Future<DeleteBatchResult> deleteBatchDetailed(
  1. List<int> ids
)

Implementation

Future<DeleteBatchResult> deleteBatchDetailed(List<int> ids) async {
  return await _lock.synchronized(() async {
    final deletedIds = <int>{};
    final sqliteIds = <int>[];
    final memorySeqs = <int>{};

    for (final id in ids) {
      if (id < 0) {
        memorySeqs.add(-(id) - 1);
      } else {
        sqliteIds.add(id);
      }
    }

    if (memorySeqs.isNotEmpty) {
      _memoryQueue.removeBySeqs(memorySeqs);
      deletedIds.addAll(memorySeqs.map((seq) => -(seq + 1)));
    }

    if (sqliteIds.isNotEmpty) {
      deletedIds.addAll(await _deleteSqliteIdsLocked(sqliteIds));
    }

    return DeleteBatchResult(
      deletedIds: deletedIds,
      pendingSqliteDeleteIds: sqliteIds
          .where((id) => !deletedIds.contains(id))
          .toSet(),
    );
  });
}