insertAll method
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;
}