compileForUpdate method

String compileForUpdate(
  1. Query<dynamic, QueryWhere> query
)

Implementation

String compileForUpdate(Query query) {
  var data = toMap();
  if (data.isEmpty) {
    return '';
  }
  var now = DateTime.now();
  if (data.containsKey('created_at') && data['created_at'] == null) {
    data.remove('created_at');
  }
  if (data.containsKey('createdAt') && data['createdAt'] == null) {
    data.remove('createdAt');
  }
  if (data.containsKey('updated_at') && data['updated_at'] == null) {
    data['updated_at'] = now;
  }
  if (data.containsKey('updatedAt') && data['updatedAt'] == null) {
    data['updatedAt'] = now;
  }
  var b = StringBuffer('SET');
  var i = 0;

  for (var entry in data.entries) {
    if (i++ > 0) b.write(',');
    b.write(' ');
    b.write(entry.key);
    b.write('=');

    var name = query.reserveName(entry.key);
    var s = applyCast(entry.key, '@$name');
    query.substitutionValues[name] = entry.value;
    b.write(s);
  }
  return b.toString();
}