checkDBTableField method

bool checkDBTableField(
  1. Type entityType,
  2. String fieldName,
  3. Type? schemeType,
  4. TypeInfo? fieldType,
)

Implementation

bool checkDBTableField(Type entityType, String fieldName, Type? schemeType,
    TypeInfo<dynamic>? fieldType) {
  if (schemeType == null || fieldType == null) {
    throw StateError(
        "Invalid scheme field(`$entityType`.`$fieldName`) type> schemeType: $schemeType ; fieldType: $fieldType > $this");
  }

  var fieldEntityType = fieldType.entityType;

  if (fieldEntityType != null) {
    if (schemeType != fieldEntityType &&
        !schemeType.isEntityIDType &&
        !fieldType.isEntityReferenceBaseType) {
      throw StateError(
          "Invalid scheme field(`$fieldName`) type> fieldEntityType: $fieldEntityType ; schemeType: $schemeType (invalid ID type) > $this");
    }

    return true;
  } else {
    var type = fieldType.type;
    if (schemeType == type) {
      return true;
    }

    if (schemeType == String) {
      var enumReflection =
          ReflectionFactory().getRegisterEnumReflection(type);
      if (enumReflection != null && enumReflection.enumType == type) {
        return true;
      }
    }

    throw StateError(
        "Invalid scheme field(`$fieldName`) type> fieldType: $type != schemeType: $schemeType > $this");
  }
}