SchemaDifference differenceFrom(Schema schema)

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