insertAll method

Future<bool> insertAll(
  1. List<Map<String, dynamic>> values
)

Executes a bulk INSERT into the database.

WARNING: Bypasses the Model lifecycle (no events, automatic timestamps, or casts). Returns true if the operation was successful.

Implementation

Future<bool> insertAll(List<Map<String, dynamic>> values) async {
  if (values.isEmpty) return true;

  final resolvedValues = values.map((map) {
    return map.map((key, value) {
      final colName = _resolveColumnNameForWrite(key);
      _assertIdent(colName, dotted: false, what: 'column name');
      return MapEntry(colName, value);
    });
  }).toList();

  final sortedKeys = resolvedValues.first.keys.toList()..sort();

  final bindings = <dynamic>[];
  for (final map in resolvedValues) {
    for (final key in sortedKeys) {
      bindings.add(map[key]);
    }
  }

  final sql = _grammar.compileInsert(this, resolvedValues);
  final allBindings = _grammar.prepareBindings(bindings);

  final affected = await DatabaseManager().execute(table, sql, allBindings);
  return affected > 0;
}