String generateUpgradeSource({List<String> changeList })

Returns Dart code to change expectedSchema to actualSchema.

Source

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

  var tablesToAdd = _differingTables
      .where((diff) => diff.expectedTable == null && diff.actualTable != null)
      .map((d) => d.actualTable)
      .toList();
  actualSchema.dependencyOrderedTables
      .where((t) => tablesToAdd.map((toAdd) => toAdd.name).contains(t.name))
      .forEach((t) {
    changeList?.add("Adding table '${t.name}'");
    builder.writeln(createTableSource(t));
  });

  var tablesToRemove = _differingTables
      .where((diff) => diff.expectedTable != null && diff.actualTable == null)
      .map((diff) => diff.expectedTable)
      .toList();
  expectedSchema.dependencyOrderedTables.reversed
      .where((t) => tablesToRemove.map((toRemove) => toRemove.name).contains(t.name))
      .forEach((t) {
    changeList?.add("Deleting table '${t.name}'");
    builder.writeln(deleteTableSource(t));
  });

  _differingTables.where((diff) => diff.expectedTable != null && diff.actualTable != null).forEach((tableDiff) {
    var lines = tableDiff.generateUpgradeSource(changeList: changeList);
    builder.writeln(lines);
  });

  return builder.toString();
}