SchemaColumnDifference differenceFrom(SchemaColumn column)

The differences between two columns.

Source

SchemaColumnDifference differenceFrom(SchemaColumn column) {
  var differences = new SchemaColumnDifference()
    ..expectedColumn = this
    ..actualColumn = column;

  var symbols = [
    #name,
    #isIndexed,
    #type,
    #isNullable,
    #autoincrement,
    #isUnique,
    #defaultValue,
    #isPrimaryKey,
    #relatedTableName,
    #relatedColumnName,
    #deleteRule
  ];

  var expectedColumn = reflect(this);
  var actualColumn = reflect(column);
  symbols.forEach((sym) {
    var expectedValue = expectedColumn.getField(sym).reflectee;
    var actualValue = actualColumn.getField(sym).reflectee;
    if (expectedValue is String) {
      expectedValue = (expectedValue as String)?.toLowerCase();
      actualValue = (actualValue as String)?.toLowerCase();

    }

    if (expectedValue != actualValue) {
      differences.differingProperties.add(MirrorSystem.getName(sym));
    }
  });

  return differences;
}