package com.airlock.iam.common.infrastructure.factory;

import com.airlock.iam.base.api.infrastructure.plugin.ModuleForConfig;
import com.airlock.iam.common.application.configuration.event.UserCreatedSubscribedEventConfig;
import com.airlock.iam.common.domain.model.event.UserCreatedSubscribedEvent;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;

@ModuleForConfig(UserCreatedSubscribedEventConfig.class)
public final class UserCreatedSubscribedEventModule extends PrivateModule {
   @Exposed
   @Provides
   Optional<UserCreatedSubscribedEvent.UserCreatedSubscribedEventSettings> provideUserCreatedSubscribedEventSettings(UserCreatedSubscribedEventConfig config) {
      return config.getMatchingPattern() != null && !StringUtils.isBlank(config.getContextDataKey())
         ? Optional.of(new UserCreatedSubscribedEvent.UserCreatedSubscribedEventSettings(config.getMatchingPattern(), config.getContextDataKey()))
         : Optional.empty();
   }

   protected void configure() {
   }
}
