SchemaColumnDifference constructor

SchemaColumnDifference(
  1. SchemaColumn? expectedColumn,
  2. SchemaColumn? actualColumn
)

Creates a new instance that represents the difference between expectedColumn and actualColumn.

Implementation

SchemaColumnDifference(this.expectedColumn, this.actualColumn) {
  if (actualColumn != null && expectedColumn != null) {
    if (actualColumn!.isPrimaryKey != expectedColumn!.isPrimaryKey) {
      throw SchemaException(
          "Cannot change primary key of '${expectedColumn!.table!.name}'");
    }

    if (actualColumn!.relatedColumnName !=
        expectedColumn!.relatedColumnName) {
      throw SchemaException(
          "Cannot change Relationship inverse of '${expectedColumn!.table!.name}.${expectedColumn!.name}'");
    }

    if (actualColumn!.relatedTableName != expectedColumn!.relatedTableName) {
      throw SchemaException(
          "Cannot change type of '${expectedColumn!.table!.name}.${expectedColumn!.name}'");
    }

    if (actualColumn!.type != expectedColumn!.type) {
      throw SchemaException(
          "Cannot change type of '${expectedColumn!.table!.name}.${expectedColumn!.name}'");
    }

    if (actualColumn!.autoincrement != expectedColumn!.autoincrement) {
      throw SchemaException(
          "Cannot change autoincrement behavior of '${expectedColumn!.table!.name}.${expectedColumn!.name}'");
    }

    if (expectedColumn!.name!.toLowerCase() !=
        actualColumn!.name!.toLowerCase()) {
      _differingProperties.add(_PropertyDifference(
          "name", expectedColumn!.name, actualColumn!.name));
    }

    if (expectedColumn!.isIndexed != actualColumn!.isIndexed) {
      _differingProperties.add(_PropertyDifference(
          "isIndexed", expectedColumn!.isIndexed, actualColumn!.isIndexed));
    }

    if (expectedColumn!.isUnique != actualColumn!.isUnique) {
      _differingProperties.add(_PropertyDifference(
          "isUnique", expectedColumn!.isUnique, actualColumn!.isUnique));
    }

    if (expectedColumn!.isNullable != actualColumn!.isNullable) {
      _differingProperties.add(_PropertyDifference("isNullable",
          expectedColumn!.isNullable, actualColumn!.isNullable));
    }

    if (expectedColumn!.defaultValue != actualColumn!.defaultValue) {
      _differingProperties.add(_PropertyDifference("defaultValue",
          expectedColumn!.defaultValue, actualColumn!.defaultValue));
    }

    if (expectedColumn!.deleteRule != actualColumn!.deleteRule) {
      _differingProperties.add(_PropertyDifference("deleteRule",
          expectedColumn!.deleteRule, actualColumn!.deleteRule));
    }
  }
}