compileUpsert method

  1. @override
String compileUpsert(
  1. Map<String, dynamic> query,
  2. List<Map<String, dynamic>> values,
  3. List<String> uniqueBy, [
  4. List<String>? update,
])
override

Compile an upsert statement.

Implementation

@override
String compileUpsert(
  Map<String, dynamic> query,
  List<Map<String, dynamic>> values,
  List<String> uniqueBy, [
  List<String>? update,
]) {
  final sql = compileInsertMany(query, values);
  final columns = update ?? values.first.keys.toList();

  final updateSql = columns.map((col) {
    final wrapped = wrap(col);
    return '$wrapped = excluded.$wrapped';
  }).join(', ');

  final conflictCols = uniqueBy.map(wrap).join(', ');

  return '$sql ON CONFLICT ($conflictCols) DO UPDATE SET $updateSql';
}