bulkDelete method

  1. @override
Future<bool> bulkDelete({
  1. String? column,
  2. List? values,
  3. int batchSize = 1000,
})
inherited

Implementation

@override
Future<bool> bulkDelete({
  String? column,
  List<dynamic>? values,
  int batchSize = 1000,
}) async {
  if (column == null || values == null || values.isEmpty) {
    throw InvalidArgumentException(
        'Column and values must be provided for bulk delete operation');
  }

  try {
    final conn = await getConnection();

    for (int i = 0; i < values.length; i += batchSize) {
      final batch = values.skip(i).take(batchSize).toList();
      final paramBindings = <String, dynamic>{};

      final placeholders = batch.map((value) {
        final paramName = _nextParamName();
        paramBindings[paramName] = value;
        return ":$paramName";
      }).join(', ');

      final sql = "DELETE FROM $getTable WHERE $column IN ($placeholders)";

      await conn.execute(sql, paramBindings);
    }

    return true;
  } catch (e) {
    rethrow;
  }
}