generateCreateAlterSql method

String generateCreateAlterSql(
  1. String tableName, {
  2. bool ifNotExists = false,
  3. String beforeColumn = '',
  4. String afterColumn = '',
})

Implementation

String generateCreateAlterSql(
  String tableName, {
  bool ifNotExists = false,
  String beforeColumn = '',
  String afterColumn = '',
}) {
  _finalizeColumnDefinitions();

  final clauses = <String>[];

  for (final colDef in _queries) {
    var clause = 'ADD COLUMN ${colDef.trim()}';
    if (beforeColumn.isNotEmpty) clause += ' BEFORE `$beforeColumn`';
    if (afterColumn.isNotEmpty) clause += ' AFTER `$afterColumn`';
    clauses.add(clause);
  }

  if (_primaryField.isNotEmpty) {
    clauses.add('ADD PRIMARY KEY (`$_primaryField`)');
  }

  for (final idx in _indexes) {
    clauses.add('ADD $idx');
  }

  for (final fk in _foreignKeys) {
    clauses.add('ADD $fk');
  }

  final buffer = StringBuffer();
  buffer.writeln('ALTER TABLE `$tableName`');
  for (var i = 0; i < clauses.length; i++) {
    final sep = i == clauses.length - 1 ? '' : ',';
    buffer.writeln('  ${clauses[i]}$sep');
  }

  return buffer.toString();
}