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;
}