validate method

String? validate()

Implementation

String? validate() {
  for (final property in properties) {
    for (final field in fields) {
      final value = field.values
          .firstWhereOrNull((value) => value.propertyName == property.name)
          ?.value;
      if (value == null &&
          !property.isOptional &&
          property.defaultValue == null &&
          !property.isJsonvalue) {
        return 'There is no value defined for property ${property.name} for the enum value ${field.name} in model $name. Either make this property optional or give it a value';
      }
      final toParseValue = value ?? property.defaultValue;

      String? error;
      if (toParseValue != null) {
        if (property.type is DoubleType) {
          error = testValueType(
            parser: double.tryParse,
            typeName: DoubleType().name,
            toParseValue: toParseValue,
            propertyName: property.name,
            fieldName: field.name,
          );
        } else if (property.type is IntegerType) {
          error = testValueType(
            parser: int.tryParse,
            typeName: IntegerType().name,
            toParseValue: toParseValue,
            propertyName: property.name,
            fieldName: field.name,
          );
        } else if (property.type is BooleanType) {
          error = testValueType(
            parser: bool.tryParse,
            typeName: BooleanType().name,
            toParseValue: toParseValue,
            propertyName: property.name,
            fieldName: field.name,
          );
        }
      }

      if (error != null) return error;
    }
  }
  final keyProperty =
      properties.firstWhereOrNull((property) => property.isJsonvalue);
  if ((!addJsonValueToProperties && keyProperty == null) &&
      generateExtension) {
    return "Model: $name, a json value has to be defined when generating extensions for this model. Either enable a default json value by removing 'use_default_json_value: false' or define a property that is a json value by using 'is_json_value: true'";
  }
  return null;
}