compileIncrementEach method

  1. @override
String compileIncrementEach(
  1. Map<String, dynamic> query,
  2. Map<String, int> columns,
  3. Map<String, dynamic> extras
)
override

Compile an increment each statement.

Implementation

@override
String compileIncrementEach(
  Map<String, dynamic> query,
  Map<String, int> columns,
  Map<String, dynamic> extras,
) {
  final table = wrapTable(query['table']);
  final wheres =
      query['wheres'] != null ? compileWheres(query['wheres']) : '';

  final columnUpdates = columns.entries.map((e) {
    final wrapped = wrap(e.key);
    final operator = e.value >= 0 ? '+' : '-';
    return '$wrapped = $wrapped $operator ${e.value.abs()}';
  }).toList();

  final extraUpdates = extras.keys.map((key) {
    return '${wrap(key)} = ?';
  }).toList();

  final allUpdates = [...columnUpdates, ...extraUpdates].join(', ');

  return 'UPDATE $table SET $allUpdates $wheres'.trim();
}