SchemaTableDifference differenceFrom(SchemaTable table)

The differences between two tables.

Source

SchemaTableDifference differenceFrom(SchemaTable table) {
  var actualTable = table;
  var differences = new SchemaTableDifference()
    ..expectedTable = this
    ..actualTable = actualTable;

  for (var expectedColumn in columns) {
    var actualColumn = actualTable[expectedColumn.name];
    if (actualColumn == null) {
      differences.differingColumns.add(
          new SchemaColumnDifference()
            ..expectedColumn = expectedColumn
            ..actualColumn = null
      );
    } else {
      var diff = expectedColumn.differenceFrom(actualColumn);
      if (diff.hasDifferences) {
        differences.differingColumns.add(diff);
      }
    }
  }

  differences.differingColumns.addAll(actualTable.columns
      .where((t) => this[t.name] == null)
      .map((unexpectedColumn) {
    return new SchemaColumnDifference()
      ..actualColumn = unexpectedColumn
      ..expectedColumn = null;
  }));

  return differences;
}