insertAll method

Future<int> insertAll(
  1. List<ISQLiteItem> items
)

Implementation

Future<int> insertAll(
  List<ISQLiteItem> items,
) async {
  if (items.isEmpty) {
    return 0;
  }

  var db = await getOpenDatabase();
  int totalRow = 0;

  // Get table name from the first item (assumes all items have the same table)
  var tableName = items.first.getTableName();
  var existingColumns = await tableColumns(tableName, db: db);

  await db.transaction((txn) async {
    for (var item in items) {
      var map = item.toMap();
      map.removeWhere((key, value) => !existingColumns.contains(key));
      if (map[item.getPrimaryKeyName()] is int &&
          map[item.getPrimaryKeyName()] == 0) {
        map[item.getPrimaryKeyName()] = null;
      }
      var result = await txn.insert(tableName, map);
      if (result > 0) {
        totalRow++;
      }
    }
  });

  return totalRow;
}