insertMany method
Implementation
@override
Future<bool> insertMany(
List<Map<String, dynamic>> valuesList,
) async {
try {
if (valuesList.isEmpty) {
throw InvalidArgumentException(
"Values list cannot be empty for insertMany operation.",
);
}
// Ensure all maps have the same keys
final firstItem = valuesList.first;
final columns = firstItem.keys.toList();
for (var values in valuesList) {
if (!_haveSameKeys(values, firstItem)) {
throw InvalidArgumentException(
"All items in the values list must have the same structure.",
);
}
}
conn = await getConnection();
final paramBindings = <String, dynamic>{};
final valueGroups = <String>[];
// Create parameter placeholders for each row
for (var values in valuesList) {
final placeholders = columns.map((column) {
final paramName = _nextParamName();
paramBindings[paramName] = values[column];
return ":$paramName";
}).join(", ");
valueGroups.add("($placeholders)");
}
final query =
"INSERT INTO $getTable (${columns.join(', ')}) VALUES ${valueGroups.join(', ')}";
await conn.execute(query, paramBindings);
return true;
} catch (e) {
rethrow;
}
}