validateSchema method

  1. @override
void validateSchema()
override

Validates runtime schema invariants that cannot rely on debug-only asserts.

Field definitions keep const constructors for ergonomic schema declarations, so the dataset calls this during schema indexing to enforce public field metadata rules in debug and release builds.

Implementation

@override
void validateSchema() {
  super.validateSchema();
  if (precision < 1 || precision > 38) {
    throw ArgumentError.value(
      precision,
      'precision',
      'FdcDecimalField "$name" precision must be in range 1..38.',
    );
  }
  if (scale < 0 || scale > 38) {
    throw ArgumentError.value(
      scale,
      'scale',
      'FdcDecimalField "$name" scale must be in range 0..38.',
    );
  }
  if (scale > precision) {
    throw ArgumentError.value(
      scale,
      'scale',
      'FdcDecimalField "$name" scale must be less than or equal to precision.',
    );
  }
  final min = minValue;
  final max = maxValue;
  if (min != null && !min.isFinite) {
    throw ArgumentError.value(
      min,
      'minValue',
      'FdcDecimalField "$name" minValue must be finite.',
    );
  }
  if (max != null && !max.isFinite) {
    throw ArgumentError.value(
      max,
      'maxValue',
      'FdcDecimalField "$name" maxValue must be finite.',
    );
  }
  if (min != null && max != null && min > max) {
    throw ArgumentError.value(
      max,
      'maxValue',
      'FdcDecimalField "$name" maxValue must be greater than or equal to minValue.',
    );
  }
}