String generateUpgradeSource({List<String> changeList })

Returns Dart code to upgrade expectedTable to actualTable.

Source

String generateUpgradeSource({List<String> changeList}) {
  var builder = new StringBuffer();

  _differingColumns
      .where((diff) => diff.expectedColumn == null && diff.actualColumn != null)
      .map((diff) => diff.actualColumn)
      .forEach((c) {
    changeList?.add("Adding column '${c.name}' to table '${actualTable.name}'");
    builder.writeln(createColumnSource(c));
  });

  _differingColumns
      .where((diff) => diff.expectedColumn != null && diff.actualColumn == null)
      .map((diff) => diff.expectedColumn)
      .forEach((c) {
    changeList?.add("Deleting column '${c.name}' from table '${actualTable.name}'");
    builder.writeln(deleteColumnSource(c));
  });

  _differingColumns
      .where((columnDiff) => columnDiff.expectedColumn != null && columnDiff.actualColumn != null)
      .forEach((columnDiff) {
    var lines = columnDiff.generateUpgradeSource(changeList: changeList);
    builder.writeln(lines);
  });

  if (uniqueSetDifference?.hasDifferences ?? false) {
    builder.writeln(uniqueSetDifference.generateUpgradeSource(changeList: changeList));
  }

  return builder.toString();
}