package com.airlock.iam.common.domain.service.username;

import com.airlock.iam.base.api.domain.model.validation.info.RegexValidationInfo;
import com.airlock.iam.base.api.domain.model.validation.info.ValidationInfo;
import com.airlock.iam.common.api.domain.model.user.ProvidedUsername;
import jakarta.inject.Inject;
import jakarta.inject.Provider;

public final class UsernameValidationServiceImpl implements UsernameValidationService {
   private final Provider<UsernameFilterSettings> settings;

   @Inject
   public UsernameValidationServiceImpl(Provider<UsernameFilterSettings> settings) {
      this.settings = settings;
   }

   @Override
   public boolean isValid(ProvidedUsername username) {
      return ((UsernameFilterSettings)this.settings.get()).pattern().matcher(username.getValue()).matches();
   }

   @Override
   public ValidationInfo getValidationInfo() {
      return RegexValidationInfo.create(((UsernameFilterSettings)this.settings.get()).pattern());
   }
}
