upsert method

  1. @override
Future<void> upsert(
  1. String table,
  2. String id,
  3. Map<String, dynamic> data
)
override

Insert or update a record in a local table.

Implementation

@override
Future<void> upsert(
    String table, String id, Map<String, dynamic> data) async {
  final columns =
      data.keys.map((c) => '"${c.replaceAll('"', '""')}"').toList();
  final safeTable = '"${table.replaceAll('"', '""')}"';
  final placeholders = List.filled(columns.length, '?').join(', ');
  final values = data.values.toList();

  await _db.customStatement(
    'INSERT OR REPLACE INTO $safeTable (${columns.join(', ')}) VALUES ($placeholders)',
    values,
  );
}