The differences between two schemas.
Source
SchemaDifference differenceFrom(Schema schema) {
var actualSchema = schema;
var differences = new SchemaDifference()
..expectedSchema = this
..actualSchema = actualSchema;
for (var expectedTable in tables) {
var actualTable = actualSchema[expectedTable.name];
if (actualTable == null) {
differences.differingTables.add(new SchemaTableDifference()
..actualTable = null
..expectedTable = expectedTable);
} else {
var diff = expectedTable.differenceFrom(actualTable);
if (diff.hasDifferences) {
differences.differingTables.add(diff);
}
}
}
differences.differingTables.addAll(actualSchema.tables
.where((t) => this[t.name] == null)
.map((unexpectedTable) {
return new SchemaTableDifference()
..actualTable = unexpectedTable
..expectedTable = null;
}));
return differences;
}