package com.airlock.iam.admin.infrastructure.factory.prot;

import com.airlock.iam.admin.infrastructure.service.UserTrailLogsRestResponseService;
import com.airlock.iam.common.application.configuration.usertrail.UserTrailLogRepositoryConfig;
import com.airlock.iam.common.domain.model.usertrail.UserTrailLogRepository;
import com.airlock.iam.common.infrastructure.usertrail.UserTrailLogNullRepositoryImpl;
import com.airlock.iam.common.infrastructure.usertrail.UserTrailLogRepositoryImpl;
import com.airlock.iam.common.infrastructure.usertrail.UserTrailLogSettings;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;
import java.util.Optional;

public final class UserTrailLogsRestResponseServiceModule extends PrivateModule {
   @Provides
   @Exposed
   UserTrailLogRepository provideUserTrailLogRepository(Optional<UserTrailLogRepositoryConfig> config) {
      return (UserTrailLogRepository)(config.isPresent()
         ? new UserTrailLogRepositoryImpl(new UserTrailLogSettings(config.get().jooqConfig()))
         : new UserTrailLogNullRepositoryImpl());
   }

   protected void configure() {
      this.bind(UserTrailLogsRestResponseService.class);
      this.expose(UserTrailLogsRestResponseService.class);
   }
}
