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

import com.airlock.iam.common.application.configuration.rememberme.RememberMeConfig;
import com.airlock.iam.common.application.service.rememberme.RememberMeConsistencyUserChangeService;
import com.airlock.iam.common.domain.service.rememberme.RememberMeCommonRepository;
import com.airlock.iam.elog.api.ELoggerFactory;
import com.airlock.iam.log.audit.AuditLogger;

public final class RememberMeConsistencyRepositoryFactory {
   private RememberMeConsistencyRepositoryFactory() {
      throw new AssertionError("factory");
   }

   public static RememberMeConsistencyUserChangeService createRememberMeConsistencyUserChangeService(RememberMeConfig config) {
      return new RememberMeConsistencyUserChangeServiceImpl(
         createRememberMeConsistencyRepository(config), ELoggerFactory.getLogger(RememberMeConsistencyUserChangeServiceImpl.class), AuditLogger::log
      );
   }

   private static RememberMeCommonRepository createRememberMeConsistencyRepository(RememberMeConfig config) {
      return new RememberMeCommonRepositoryImpl(config.getRepository().jooqConfig());
   }
}
