package com.airlock.iam.base.infrastructure.validation;

import com.airlock.iam.base.misc.data.OptionalValue;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

public class MinOptionalValueValidator implements ConstraintValidator<MinOptionalValue, OptionalValue<?>> {
   private long min;

   public void initialize(MinOptionalValue constraintAnnotation) {
      this.min = constraintAnnotation.value();
   }

   public boolean isValid(OptionalValue<?> optionalValue, ConstraintValidatorContext context) {
      return optionalValue.hasValue() && optionalValue.value() != null ? ((Number)optionalValue.value()).longValue() >= this.min : true;
   }
}
