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",
    );
  }
}