AdditionalSkillServiceConfig.java

package fr.avenirsesr.portfolio.additionalskill.infrastructure.adapter.service;

import fr.avenirsesr.portfolio.additionalskill.domain.port.input.AdditionalSkillService;
import fr.avenirsesr.portfolio.additionalskill.domain.port.input.RomeAdditionalSkillService;
import fr.avenirsesr.portfolio.additionalskill.domain.port.output.AdditionalSkillCache;
import fr.avenirsesr.portfolio.additionalskill.domain.port.output.OpenSearchIndex;
import fr.avenirsesr.portfolio.additionalskill.domain.port.output.RomeAdditionalSkillApi;
import fr.avenirsesr.portfolio.additionalskill.domain.port.output.repository.AdditionalSkillRepository;
import fr.avenirsesr.portfolio.additionalskill.domain.port.output.repository.Rome4VersionRepository;
import fr.avenirsesr.portfolio.additionalskill.domain.service.AdditionalSkillServiceImpl;
import fr.avenirsesr.portfolio.additionalskill.domain.service.RomeAdditionalSkillServiceImpl;
import fr.avenirsesr.portfolio.additionalskill.infrastructure.adapter.repository.AdditionalSkillDatabaseProgressRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Slf4j
@Configuration
public class AdditionalSkillServiceConfig {
  private final AdditionalSkillCache additionalSkillCache;
  private final AdditionalSkillDatabaseProgressRepository additionalSkillProgressRepository;
  private final AdditionalSkillRepository additionalSkillRepository;
  private final Rome4VersionRepository rome4VersionRepository;
  private final RomeAdditionalSkillApi romeAdditionalSkillApi;
  private final OpenSearchIndex openSearchIndex;

  public AdditionalSkillServiceConfig(
      AdditionalSkillCache additionalSkillCache,
      AdditionalSkillDatabaseProgressRepository additionalSkillProgressRepository,
      AdditionalSkillRepository additionalSkillRepository,
      Rome4VersionRepository rome4VersionRepository,
      RomeAdditionalSkillApi romeAdditionalSkillApi,
      OpenSearchIndex openSearchIndex) {
    this.additionalSkillCache = additionalSkillCache;
    this.additionalSkillProgressRepository = additionalSkillProgressRepository;
    this.additionalSkillRepository = additionalSkillRepository;
    this.rome4VersionRepository = rome4VersionRepository;
    this.romeAdditionalSkillApi = romeAdditionalSkillApi;
    this.openSearchIndex = openSearchIndex;
  }

  @Bean
  public AdditionalSkillService additionalSkillService() {
    return new AdditionalSkillServiceImpl(additionalSkillCache, additionalSkillProgressRepository);
  }

  @Bean
  public RomeAdditionalSkillService romeAdditionalSkillService() {
    return new RomeAdditionalSkillServiceImpl(
        additionalSkillRepository, rome4VersionRepository, romeAdditionalSkillApi, openSearchIndex);
  }
}