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