insert method

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

Insert a new record (schema-aware).

Unknown columns are automatically filtered out to prevent errors when the API returns fields that don't exist in the local database.

await DB.table('users').insert({
  'name': 'John',
  'email': 'john@example.com',
});

Implementation

Future<int> insert(Map<String, dynamic> data) async {
  // Filter data to only include existing columns
  final filteredData = await _filterDataBySchema(data);

  if (filteredData.isEmpty) {
    return 0;
  }

  final columns = filteredData.keys.join(', ');
  final placeholders = List.filled(filteredData.length, '?').join(', ');
  final values = filteredData.values.toList();

  final sql = 'INSERT INTO $_table ($columns) VALUES ($placeholders)';
  _db.connection.execute(sql, _prepareValues(values));

  // Return last insert ID
  final result = _db.connection.select('SELECT last_insert_rowid() as id');
  return result.first['id'] as int;
}