buildSQL method
Build the SQL
.
Implementation
@override
String buildSQL({bool multiline = true, bool ifNotExists = true}) {
var ln = multiline ? '\n' : '';
final sql = StringBuffer();
sql.write('ALTER TABLE ');
sql.write('$q$table$q $ln');
var maxLine = entries.map((e) => e.sql.length).max + 3;
var i = 0;
for (var e in entries) {
var line = e.sql;
if (ifNotExists) {
var lineTrimUC =
line.trim().toUpperCase().replaceAll(RegExp(r'\s+'), ' ');
if (lineTrimUC.startsWith('ADD COLUMN ') &&
!lineTrimUC.contains(' IF NOT EXISTS ')) {
line = 'ADD COLUMN IF NOT EXISTS ${line.substring(11)}';
}
}
var comment = e.comment;
var lineLength = line.length;
var lastEntry = i == entries.length - 1;
sql.write(line);
if (!lastEntry) {
sql.write(',');
lineLength++;
}
if (multiline && comment != null) {
var pad = maxLine - lineLength;
var space = ' '.padRight(pad, ' ');
sql.write('$space-- $comment');
}
if (!lastEntry) {
sql.write(ln);
}
i++;
}
sql.write('$ln ;');
return sql.toString();
}