parallelBulkInsert method
Future<bool>
parallelBulkInsert(
- List<
Map< data, {String, dynamic> > - int parallelism = 2,
- int batchSize = 1000,
- ConflictAction conflictAction = ConflictAction.ignore,
- List<
String> ? conflictColumns,
inherited
Implementation
@override
Future<bool> parallelBulkInsert(
List<Map<String, dynamic>> data, {
int parallelism = 2,
int batchSize = 1000,
ConflictAction conflictAction = ConflictAction.ignore,
List<String>? conflictColumns,
}) async {
if (data.isEmpty) {
throw InvalidArgumentException(
'Data cannot be empty for parallel bulk insert operation');
}
try {
final chunkSize = (data.length / parallelism).ceil();
final futures = <Future<bool>>[];
for (int i = 0; i < parallelism; i++) {
final start = i * chunkSize;
final end = (start + chunkSize).clamp(0, data.length);
if (start >= data.length) break;
final chunk = data.sublist(start, end);
final future = bulkInsert(
chunk,
conflictAction: conflictAction,
conflictColumns: conflictColumns,
batchSize: batchSize,
);
futures.add(future);
}
final results = await Future.wait(futures);
return results.every((result) => result);
} catch (e) {
rethrow;
}
}