compileInsert method
Implementation
String compileInsert(Query query, String tableName) {
var data = Map<String, dynamic>.from(toMap());
var now = DateTime.now();
if (data.containsKey('created_at') && data['created_at'] == null) {
data['created_at'] = now;
}
if (data.containsKey('createdAt') && data['createdAt'] == null) {
data['createdAt'] = now;
}
if (data.containsKey('updated_at') && data['updated_at'] == null) {
data['updated_at'] = now;
}
if (data.containsKey('updatedAt') && data['updatedAt'] == null) {
data['updatedAt'] = now;
}
var keys = data.keys.toList();
keys.where((k) => !query.fields.contains(k)).forEach(data.remove);
if (data.isEmpty) {
return '';
}
var fieldSet = data.keys.join(', ');
var b = StringBuffer('INSERT INTO $tableName ($fieldSet) VALUES (');
var i = 0;
for (var entry in data.entries) {
if (i++ > 0) b.write(', ');
var name = query.reserveName(entry.key);
var s = applyCast(entry.key, '@$name');
query.substitutionValues[name] = entry.value;
b.write(s);
}
b.write(')');
return b.toString();
}