insert method
Cria um registro com auto-incremento de ID
Implementation
Future<int> insert(Map<String, dynamic> data) async {
final rows = await getRawRows();
if (rows.isEmpty) throw Exception("Cabeçalhos não encontrados.");
final headers = List<String>.from(rows[0]);
int idColIndex = headers.indexOf("id");
int maxId = 0;
for (var i = 1; i < rows.length; i++) {
if (rows[i].length > idColIndex) {
maxId = BigInt.parse(rows[i][idColIndex].toString()).toInt() > maxId
? int.parse(rows[i][idColIndex].toString())
: maxId;
}
}
int newId = maxId + 1;
final newRow = headers
.map((h) => h == "id" ? newId : data[h])
.toList();
await api.spreadsheets.values.append(
sheets.ValueRange(values: [newRow]),
spreadsheetId,
'$sheetName!A1',
valueInputOption: "USER_ENTERED",
);
_cachedRawRows = null; // Invalida o cache
return newId;
}