package com.airlock.iam.oauth2.infrastructure.factory.rest;

import com.airlock.iam.base.api.infrastructure.plugin.ModuleForConfig;
import com.airlock.iam.database.infrastructure.JooqConfig;
import com.airlock.iam.oauth2.application.configuration.clientauthentication.OpenIdConnectPrivateKeyJwtAuthenticationConfig;
import com.airlock.iam.oauth2.domain.model.clientauthentication.OAuth2AcceptedClientAssertionRepository;
import com.airlock.iam.oauth2.infrastructure.repository.OAuth2AcceptedClientAssertionRepositoryImpl;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;

@ModuleForConfig(OpenIdConnectPrivateKeyJwtAuthenticationConfig.class)
public class OpenIdConnectPrivateKeyJwtAuthenticationModule extends PrivateModule {
   @Provides
   JooqConfig provideJooqConfig(OpenIdConnectPrivateKeyJwtAuthenticationConfig config) {
      return config.jooqConfig();
   }

   protected void configure() {
      this.bind(OAuth2AcceptedClientAssertionRepository.class).to(OAuth2AcceptedClientAssertionRepositoryImpl.class);
      this.expose(OAuth2AcceptedClientAssertionRepository.class);
   }
}
