insert method

Future<int> insert(
  1. Map<String, dynamic> data
)

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