buildSQL method

  1. @override
String buildSQL({
  1. bool multiline = true,
  2. bool ifNotExists = true,
})
override

Build the SQL.

Implementation

@override
String buildSQL({bool multiline = true, bool ifNotExists = true}) {
  var ln = multiline ? '\n' : '';

  final sql = StringBuffer();

  sql.write('CREATE TABLE ');
  if (ifNotExists) {
    sql.write('IF NOT EXISTS ');
  }
  sql.write('$q$table$q ($ln');

  var maxLine = entries
          .where((e) => e.type != 'CONSTRAINT')
          .map((e) => e.sql.length)
          .max +
      3;

  var i = 0;
  for (var e in entries) {
    var line = e.sql;
    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();
}