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

import com.airlock.iam.authentication.api.domain.model.risk.extractor.RiskExtractor;
import com.airlock.iam.authentication.application.configuration.risk.RiskAssessmentStepConfig;
import com.airlock.iam.authentication.domain.service.risk.RiskExtractorService;
import com.airlock.iam.authentication.domain.service.risk.RiskExtractorServiceImpl;
import com.airlock.iam.base.api.infrastructure.plugin.ModuleForConfig;
import com.airlock.iam.base.api.infrastructure.plugin.PluginConfigToLogic;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import java.util.List;

@ModuleForConfig(RiskAssessmentStepConfig.class)
public final class RiskAssessmentStepModule extends PrivateModule {
   @Provides
   List<RiskExtractor> getRiskExtractors(RiskAssessmentStepConfig config, PluginConfigToLogic toLogic) {
      return config.getRiskExtractorConfigs().stream().map(toLogic::getLogic).toList();
   }

   protected void configure() {
      this.bind(RiskExtractorService.class).to(RiskExtractorServiceImpl.class);
      this.expose(RiskExtractorService.class);
   }
}
